kanam99 Temat założony przez niniejszego użytkownika |
Problem z największą liczbą w tablicy. » 2013-01-11 17:25:03 Witam. Mam sobie taki kod: #include <iostream> #include <cstdlib> #include <ctime>
int max( int tablica[] ) { int ma = 0; for( int indeks = 0; indeks != 11; indeks++ ) { if( ma < tablica[ indeks ] ); ma = tablica[ indeks ]; } return ma; }
void od_konca( int tablica[], int ile ) { std::cout << "Tablica od konca:" << std::endl; for( int indeks = ile; indeks !=- 1; indeks-- ) std::cout << tablica[ indeks ] << std::endl; }
void wypiszTablice( int tablica[], int ile ) { for( int indeks = 0; indeks < ile; indeks++ ) std::cout << tablica[ indeks ] << std::endl; }
void wypelnij( int tablica[], int ile ) { for( int indeks = 0; indeks < ile; indeks++ ) tablica[ indeks ] =( rand() % 20 ) + 10; }
int main() { srand( time( NULL ) ); int dane[ 10 ]; wypelnij( dane, 10 ); wypiszTablice( dane, 10 ); od_konca( dane, 9 ); int m = max( dane ); std::cout << m << std::endl; return 0; } I gdy dochodzi do funkcji "max", to zwraca ona jakąś niebotyczną, siedmiocyfrową wartość. Moje pytanie brzmi, czemu? Jak ta funkcja powinna wyglądać? Z góry dziękuję i życzę miłego weekendu. |
|
jsc |
» 2013-01-11 17:39:34 Spróbuj zamienić: if( ma < tablica[ indeks ] );
ma = tablica[ indeks ];
na: if( ma < tablica[ indeks ] ) { ma = tablica[ indeks ]; }
A ta twoja niebotyczna sugerowałaby wyjście poza zakres tablicy i podanie śmieci, ale jak maiałaby z niego wychodzić tego widzę. |
|
pekfos |
» 2013-01-11 17:42:15 for( int indeks = 0; indeks != 11; indeks++ )
Ta pętla wykona się 11 razy, a nie 10. Tak powinno być: for( int indeks = 0; indeks < 10; indeks++ )
|
|
jsc |
» 2013-01-11 17:43:33 Rzeczywiście, źle spojrzałem. |
|
kanam99 Temat założony przez niniejszego użytkownika |
» 2013-01-11 20:07:32 Dziękuję za wasze wskazówki. Aby wszystko działało, musiałem zmienić funkcję "max" w ten sposób: int max( int tablica[] ) { int ma = 0; for( int indeks = 0; indeks != 10; indeks++ ) { if( ma > tablica[ indeks ] ); { ma = ma; } if( ma < tablica[ indeks ] ); { ma = tablica[ indeks ]; } } std::cout << "Najwieksza liczba:" << ma; return ma; } a w funkcji main(): int main() { srand( time( NULL ) ); int dane[ 10 ]; wypelnij( dane, 10 ); wypiszTablice( dane, 10 ); od_konca( dane, 9 ); max( dane ); return 0; } Piszę, bo może się to komuś przydać. Sprawa zamknięta :) |
|
kanam99 Temat założony przez niniejszego użytkownika |
» 2013-01-11 20:23:27 #include <iostream> #include <cstdlib> #include <ctime>
int min( int tablica[] ) { int mi = 0; for( int indeks = 0; indeks != 10; indeks++ ) { if( mi > tablica[ indeks ] ); { mi = tablica[ indeks ]; } if( mi < tablica[ indeks ] ); { mi = mi; } } std::cout << "Najmniejsza liczba:" << mi; return mi; }
int max( int tablica[] ) { int ma = 0; for( int indeks = 0; indeks != 10; indeks++ ) { if( ma > tablica[ indeks ] ); { ma = ma; } if( ma < tablica[ indeks ] ); { ma = tablica[ indeks ]; } } std::cout << "Najwieksza liczba:" << ma; return ma; }
void od_konca( int tablica[], int ile ) { std::cout << "Tablica od konca:" << std::endl; for( int indeks = ile; indeks !=- 1; indeks-- ) std::cout << tablica[ indeks ] << std::endl; }
void wypiszTablice( int tablica[], int ile ) { for( int indeks = 0; indeks < ile; indeks++ ) std::cout << tablica[ indeks ] << std::endl; }
void wypelnij( int tablica[], int ile ) { for( int indeks = 0; indeks < ile; indeks++ ) tablica[ indeks ] =( rand() % 20 ) + 10; }
int main() { srand( time( NULL ) ); int dane[ 10 ]; wypelnij( dane, 10 ); wypiszTablice( dane, 10 ); od_konca( dane, 9 ); max( dane ); min( dane ); return 0; } Mała pomyłka. Ja już nie mam pomysłu co z tym zrobić. Obie funkcje podają taką samą wartość, i tylko czasami jednej z nich uda się wypisać właściwą dla niej wartość. Macie jakiś pomysł? |
|
jsc |
» 2013-01-11 23:45:10 |
|
kanam99 Temat założony przez niniejszego użytkownika |
» 2013-01-12 11:50:35 Spoko. Dzięki. |
|
« 1 » 2 |