Suma cyfr liczby jest liczbą pierwszą
Ostatnio zmodyfikowano 2014-11-24 15:22
junior95 Temat założony przez niniejszego użytkownika |
Suma cyfr liczby jest liczbą pierwszą » 2014-11-23 13:45:12 Witam, jako zadanie domowe mam do wykonania program, który najpierw z pliku pobierze 10 liczb a następnie wypisze liczby , których suma cyfr jest liczbą pierwszą. Do tej pory napisałem coś takiego, ale nie działa i nie mam pomysłu co z tym dalej zrobić. Jestem w podstawie, nie chciałbym używać żadnych skompilowanych bibliotek itp. fstream plik; plik.open( "liczby.txt", ios::in ); if( plik.good() == true ) { cout << "Otworzylem plik" << endl; } else { cout << "Blad. Problemy z plikiem" << endl; } string liczby[ 10 ]; for( int x = 0; x < 10; x++ ) { plik >> liczby[ x ]; cout << liczby[ x ] << "\t"; } cout << endl; cout << "Lancuchy ktorych suma cyfr jest liczba pierwsza" << endl; int suma = 0; int sp = 0; for( int x = 0; x < 10; x++ ) { suma = 0; sp = 0; for( int i = 0; i < liczby[ x ].length(); i++ ) { liczby[ x ][ i ] = liczby[ x ][ i ] - '0'; suma = suma + liczby[ x ][ i ]; } for( int b = 1; b <= suma; b++ ) { if( suma % b == 0 ) { sp = sp + 1; } } if( sp == 2 ) { cout << liczby[ x ] << "\t"; } }
cout << endl; Zasada miała być taka, że sprawdza pierwszą liczbę, poprzez obliczenie jej sumy i porównanie czy jest to liczba pierwsza. I jeśli suma jest liczbą pierwszą to wypisze te liczbe i przejdzie do następnej w tablicy |
|
darko202 |
» 2014-11-24 14:08:23 czy mógłbyś określić w którym miejscu program Ci nie działa ? np. Wczytuje liczby z pliku i ...
|
|
Tomek_z_W11 |
» 2014-11-24 15:22:46 liczby[ x ][ i ] = liczby[ x ][ i ] - '0'; suma = suma + liczby[ x ][ i ];
przekonwertuj do drugiej tablicy, bo potem do sumy(int) dodajesz liczby[ x ][ i ](char), tzn taka konwersja nic nie daje :) Na przykład: int liczby_int[ 10 ]; liczby_int[ i ] = liczby[ x ][ i ] - '0'; suma = suma + liczby_int[ i ];
Nie widziałem innych błędów w pętlach. |
|
« 1 » |