C, sortowanie tablic, wyszkuiwanie wartosci
Ostatnio zmodyfikowano 2015-11-15 13:31
melek94 Temat założony przez niniejszego użytkownika |
C, sortowanie tablic, wyszkuiwanie wartosci » 2015-11-15 13:19:24 Witam, byłbym wdzięczny gdyby mi ktoś wytłumaczył, dlaczego funkcja how_many nie zwraca poprawnie ile razy dana liczba wystąpiła w uporządkowanej tablicy. #include <stdio.h> #include <stdlib.h> #include <time.h> int how_many( int tab[], int value ) { int i = 0, counter = 0; for( i = 0; i < 30; i++ ) { printf( "%d. = %d\n", i, tab[ i ] ); if( tab[ i ] = value ) counter++; if( tab[ i ] > value ) return counter; } } void swap( int * first, int * second ) { int tmp; tmp = * first; * first = * second; * second = tmp; } void selection_sort( int tab[] ) { printf( "-------------------------------------------\n" ); int i, j; for( i = 0; i <= 29; i++ ) { int min = i; for( j = i + 1; j <= 29; j++ ) if( tab[ min ] > tab[ j ] ) min = j; if( min != i ) swap( & tab[ min ], & tab[ i ] ); } } int main() { int tab[ 30 ], i = 0, test; srand( time( NULL ) ); for( i = 0; i <= 29; i++ ) { tab[ i ] = rand() % 11; printf( "%d\n", tab[ i ] ); } selection_sort( tab ); for( i = 0; i <= 29; i++ ) { printf( "%d\n", tab[ i ] ); } printf( "---------------------------\n" ); printf( "Wprowadz liczbe, aby sprawdzic, ile razy zostala wylosowana:\n" ); scanf( "%d", & test ); printf( "Liczba %d zostala wylosowana %d razy.\n", test, how_many( tab, test ) ); }
|
|
carlosmay |
» 2015-11-15 13:21:38 zastosoawano operator przypisania zamiast porównania. if( tab[ i ] > value ) return counter;
a to nie ma sensu. Zwróć wartość 'counter' po przejściu całej tablicy. |
|
melek94 Temat założony przez niniejszego użytkownika |
» 2015-11-15 13:31:10 Wszystko jasne, dzieki. |
|
« 1 » |