Dany jest ciąg n-elemetowy liczb całkowitych. Napisz program, wypisujący liczby o maksymalnej sumie cyfr
Ostatnio zmodyfikowano 2010-11-14 18:03
Tymek Temat założony przez niniejszego użytkownika |
Dany jest ciąg n-elemetowy liczb całkowitych. Napisz program, wypisujący liczby o maksymalnej sumie cyfr » 2010-11-14 17:51:36 Mam pewien problem z którym nie mogę sobie poradzić linijka for( int i = 0; i < x; i++ ) { for( int j = 0; j < y; j++ ) { while( max ) { suma += max % 10; } } }
to ma na celu podzielić liczbę 144 na 1+4+4 ale gdy to kompiluje daje pusty wynik , może ktoś wie dlaczego? #include <iostream.h> #include <math.h> main() { float tablica[ 2 ][ 2 ] = { 11, 12, 133, 144 }; int x, y, suma = 0, max; cout << "Podaj ilosc kolumn" << endl; cin >> x; cout << "Podaj ilosc wierszy" << endl; cin >> y; for( int i = 0; i < x; i++ ) { for( int j = 0; j < y; j++ ) { if( max < tablica[ i ][ j ] ) { max = tablica[ i ][ j ]; } } } for( int i = 0; i < x; i++ ) { for( int j = 0; j < y; j++ ) { while( max ) { suma += max % 10; } } } cout << "max=" << max << endl; cout << "suma najwiekszej liczby=" << suma << endl; system( "pause" ); }
|
|
ison |
» 2010-11-14 18:03:06 #include <iostream.h> #include <math.h> main()
aa, moje oczy! poprawione: #include <iostream> #include <cmath> int main()
to ma na celu podzielić liczbę 144 na 1+4+4 ale gdy to kompiluje daje pusty wynik , może ktoś wie dlaczego?
|
while( max ) { suma += max % 10; }
jeśli max będzie różne od zera to ta pętla będzie się wykonywać w nieskończoność (zabrakło ci max/=10;) 1) nie zerujesz zmiennej max na początku programu, więc w większości przypadków wynikiem będzie ogromna liczba 2) tablice powinieneś chyba wczytywać w programie(?) a nie mieć podaną przed kompilacją 3) treść zadania (z tytułu tematu): Dany jest ciąg n-elemetowy liczb całkowitych. Napisz program, wypisujący liczby o maksymalnej sumie cyfr
|
Twoje rozwiązanie jest błędne, przykładowo dla liczb 5,11 Twój program wybierze 11 a poprawnym wynikiem powinno być 5 |
|
« 1 » |