szawel Temat założony przez niniejszego użytkownika |
[C]Długości i porównywanie łańcuchów » 2015-12-21 18:16:02 Program powinien wyświetlać długość łańcuchów i je porywnywac. Kompilator jednak wywala sporo błędów i nie wiem jak je rozwiązać. Bardzo proszę o pomoc. #include <stdio.h> #include <string.h> #include <cstdlib> int dlugosc( char arg[] ) { size_t strlen( const char * str ); } int porownaj( char * arg1[], char * arg2[] ) { int strcmp( const char * str1, const char * str2 ); }
int main() { printf( "Wprowadz pierwszy lancuch znakow\n" ); char txt1[ 255 ]; gets( txt1 ); printf( "Wprowadz drugi lancuch znakow\n" ); char txt2[ 255 ]; gets( txt2 ); int a = dlugosc( txt1[ 100 ] ); int b = dlugosc( txt2[ 100 ] ); int c = porownaj( txt1[ 100 ], txt2[ 100 ] ); printf( "%u", a ); printf( "%u", b ); printf( "%u", c ); system( "pause" ); } |
|
michal11 |
» 2015-12-21 18:38:04 Funkcja dlugosc() nic nie zwraca, źle wywołujesz funkcję strcmp(), źleprzekazujesz argumenty w main do funkcji dlugosc() i porównaj(). |
|
szawel Temat założony przez niniejszego użytkownika |
» 2015-12-21 19:50:39 W jaki sposób mam przekazać argumenty w main do funkcji dlugosc() i porównaj()? |
|
michal11 |
» 2015-12-21 20:02:48 Twoje txt1 i txt2 to tablice charów, odwołanie się do tablicy przez operator[] (czyli na przykład: txt1[ 100 ] zwróci ci setny element tej tablicy, pojedynczy znak. W twoim kodzie właśnie pojedynczy, senty, znak próbujesz przekazać do funkcji która wymaga od ciebie całej tablicy. Odpowiedz na twoje pytanie: do funkcji dlugosc() i porównaj() przekazuj całe tablice a nie tylko pojedyncze elementy. |
|
mateczek |
» 2015-12-21 20:31:08 Że tak na początek jak powinna wyglądać funkcja długość :) choć w tym wypadku pisanie funkcji mija się z celem !!!! #include <string.h>
#include<iostream>
using namespace std; int dlugosc( char * arg ) { return strlen( arg ); } int main() { char * napis = "ala ma tygrysa"; cout << dlugosc( napis ) << endl; cout << strlen( napis ) << endl; }
|
|
szawel Temat założony przez niniejszego użytkownika |
» 2015-12-21 20:38:09 Poprawiłem to w ten sposób. Jestem na dobrej drodze? Program dalej się nie chce kompilować. #include <stdio.h> #include <string.h> #include <cstdlib>
int dlugosc( char * arg ) { return strlen( arg ); } int porownaj( char * arg1[], char * arg2[] ) { int strcmp( const char * str1, const char * str2 ); }
int main() { printf( "Wprowadz pierwszy lancuch znakow\n" ); char str1[ 100 ]; gets( str1 ); printf( "Wprowadz drugi lancuch znakow\n" ); char str2[ 100 ]; gets( str2 ); int a = dlugosc( char str1 ); int b = dlugosc( char str2 ); int c = porownaj( char str1, char str2 ); printf( "%u", a ); printf( "%u", b ); if( porownaj( str1, str2 ) == 0 ) printf( "Badane lancuchy znakow sa rowne.\n" ); else printf( "Badane lancuchy znakow nie sa rowne.\n" ); system( "pause" ); } |
|
mateczek |
» 2015-12-21 21:10:50 |
|
« 1 » |