Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C]Długości i porównywanie łańcuchów

Ostatnio zmodyfikowano 2015-12-21 21:10
Autor Wiadomość
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.
C/C++
#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" );
}
P-142224
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().
P-142225
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()?
P-142226
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.
P-142227
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 !!!!
C/C++
#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;
    //dlaczego nie napisać po prostu??
    cout << strlen( napis ) << endl;
}
P-142228
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ć.

C/C++
#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" );
}
P-142229
mateczek
» 2015-12-21 21:10:50
C/C++
int a = dlugosc( str1 );
int b = dlugosc( Str2 );
int c = porownaj( str1, Str2 );

Albo tak !!!!
C/C++
int porownaj( char * arg1, char * arg2 )
{
    return strcmp( arg1, arg2 );
}
Albo tak !!!!
C/C++
int porownaj( char arg1[], char arg2[] )
{
    return strcmp( arg1, arg2 );
}

http://cpp0x.pl/kursy/
http://helion.pl/ksiazki​/symfonia-c-standard-programowanie-w-jezyku-c-orientowane-obiektowo-tom-i-i-ii-jerzy-grebosz,a_006w.htm
P-142230
« 1 »
  Strona 1 z 1