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

[C] Funkcje, parametry

Ostatnio zmodyfikowano 2015-12-08 15:39
Autor Wiadomość
melek94
Temat założony przez niniejszego użytkownika
[C] Funkcje, parametry
» 2015-12-08 14:15:07
Witam, problem polega na tym, że program się sypie po wywołaniu funkcji text_list, męczę się z tym już chyba godzinę i nie mam pomysłu, proszę o pomoc.
C/C++
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void get_list( char list[] )
{
    printf( "Wprowadz wyraz lub zdanie: \n" );
    scanf( "%[^\n]s", list );
    while( getchar() != '\n' );
   
    printf( "Wczytany ciag: %s", list );
}

void how_many( char list[], int array2[] )
{
    int i, j;
    int temp_array[ strlen( list ) ];
    char temp;
    for( i = 0; i < strlen( list ); i++ )
    {
        int counter = 0;
        temp = list[ i ];
        for( j = 0; j < strlen( list ); j++ )
        {
            if( temp == list[ j ] ) counter++;
           
        }
        temp_array[ i ] = counter;
        array2[ i ] = counter;
        printf( "\n%d\n", array2[ i ] );
    }
}

void text_list( char * list[], int array2[] )
{
    int i = 0;
   
    for( i = 0; i < strlen( list ); i++ )
    {
        printf( "\n %s %d", list[ i ], array2[ i ] );
    }
}

int main()
{
    char list[ 30 ];
    int ilosc;
    int array2[ 30 ];
    get_list( list );
    ilosc = strlen( list );
    printf( "\nIlosc znakow w ciagu: %d\n", ilosc );
    how_many( list, array2 );
    text_list( list, array2 );
   
    return 0;
}
P-141609
darko202
» 2015-12-08 15:04:19
zastanów się co zwraca   strlen( list );

strlen - działa na ?
http://www.cplusplus.com​/reference/cstring/strlen/
a list jest wskaźnikiem na tablicę

nie da się z funkcji/metody wydobyć rozmiaru przekazanej tablicy
dlatego przekazuje się go w sposób jawny

funk( Tab, rozmiarTab);

http://cpp0x.pl/kursy/Kurs-C++​/Poziom-2​/Przekazywanie-tablic-jednowym​iarowych-do-funkcji​/324
P-141610
melek94
Temat założony przez niniejszego użytkownika
» 2015-12-08 15:22:55
Poprawiłem na:
C/C++
void text_list( char list[], int size, int array2[] )
{
    int i = 0;
   
    for( i = 0; i < size; i++ )
    {
        printf( "\n %s %d", list[ i ], array2[ i ] );
    }
}

int main()
{
    char list[ 30 ];
    int size;
    int array2[ 30 ];
    get_list( list );
    size = strlen( list );
    printf( "\nIlosc znakow w ciagu: %d\n", size );
    how_many( list, array2 );
    text_list( list, size, array2 );
   
    return 0;
}

Jednak nie rozwiązało to problemu. Kompilator podpowiada, że chodzi o linię
printf( "\n %s %d", list[ i ], array2[ i ] );
warning: format '%s' expects argument of type 'char *', but arguments 2 has type 'int' [-Wformat]

Niestety dalej nie wiem jak rozwiązać ten problem :/
P-141611
melek94
Temat założony przez niniejszego użytkownika
» 2015-12-08 15:39:27
Ok, juz wszystko jasne, dzieki za pomoc
P-141612
« 1 »
  Strona 1 z 1