Definiowanie i wywoływanie funkcji
Ostatnio zmodyfikowano 2014-11-20 10:23
Criss Temat założony przez niniejszego użytkownika |
Definiowanie i wywoływanie funkcji » 2014-11-19 22:39:34 Program przypisuje tablicy [5][5] losowo wartości od 1 do 9. Następnie powinien zliczyć ile razy występuje każda cyfra, potem znalezc jaka cyfra jest największa i podanie ile razy wystąpiła (wiem, ze da sie to zrobić prościej, ale chciałem przećwiczyć używanie osobnej funkcji z poza maina) . Zliczanie akurat działa, ale nie zawsze, czego już w ogóle nie potrafię zrozumieć. To nie jest jednak główny problem. Chodzi o zdefiniowaną na początku funkcje najw(), a przynajmniej tak mi się wydaje, że robię coś źle z definiowaniem i potem z wywołaniem. Funkcja po znalezieniu największej cyfry powinna przestawać działać. Z linijki cout << "Najwieksza cyfra jest " << c << " i wystapila " << ilosc[ c - 1 ] << " razy." << endl; powstaje jednak coś takiego: "Najwieksza cyfra jest 0 i wystapila 0 razy." (cały kod poniżej). Nie jestem też pewien co do tego w jaki sposób chce zakończyć działanie najw(). Ew. prosze też o sugestie co do nieprawidłowego zliczania ilości poszczególnych cyfr. Cały kod: #include <cstdlib> #include <iostream> #include <ctime>
using namespace std; int ilosc[ 9 ], tab[ 5 ][ 5 ]; int c = 9; int najw() { for( int i = 0; i <= 5; i++ ) { for( int j = 0; j <= 5; j++ ) { if( tab[ i ][ j ] == c ) { cout << "Najwieksza cyfra jest " << c << " i wystapila " << ilosc[ c - 1 ] << " razy." << endl; return( 0 ); } } } if( tab[ 4 ][ 4 ] != c ) { c--; najw(); } } int main( int argc, char * argv[] ) { srand( time( NULL ) ); int tab[ 5 ][ 5 ]; for( int i = 0; i <= 5; i++ ) { for( int j = 0; j <= 5; j++ ) { tab[ i ][ j ] = rand() % 9 + 1; } } for( int i = 0; i <= 5; i++ ) { for( int j = 0; j <= 5; j++ ) { for( int a = 1; a <= 9; a++ ) { if( tab[ i ][ j ] == a ) { ilosc[ a - 1 ] ++; } } } } for( int b = 1; b <= 9; b++ ) { cout << "Cyfra " << b << " wystapila " << ilosc[ b - 1 ] << " razy." << endl; } najw(); system( "PAUSE" ); return EXIT_SUCCESS; }
|
|
Monika90 |
» 2014-11-19 22:49:27 Indeksy we wszystkich Twoich pętlach wychodzą poza dopuszczalny dla tablicy zakres. Tablica używana w funkcji najw to nie ta sama tablica co w main.
|
|
Criss Temat założony przez niniejszego użytkownika |
» 2014-11-19 23:05:04 A faktycznie, dzięki. Zdaje się, że poprawiło się zliczanie cyfr, ale cała reszta pozostaje w tym samym stanie. |
|
b00rt00s |
» 2014-11-20 10:23:34 Pozwolę dodać coś od siebie. Stworzyłeś niezły koszmarek, jeśli chodzi o czytelność kodu... Nawet nie chciało mi się tego czytać. Kiedy piszesz kod, dbaj o jego czytelność. Ułatwisz innym jego analizę, nie mówiąc już o tym, że unikniesz błędów wynikających z tego, że Ty sam nie będziesz rozumiał, co napisałeś. |
|
« 1 » |