Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Suma cyfr liczby jest liczbą pierwszą

Ostatnio zmodyfikowano 2014-11-24 15:22
Autor Wiadomość
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.
C/C++
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
P-121214
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 ...
P-121267
Tomek_z_W11
» 2014-11-24 15:22:46
C/C++
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:

C/C++
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.
P-121275
« 1 »
  Strona 1 z 1