Liczby Armstronga (narcystyczne)
Ostatnio zmodyfikowano 2017-11-09 13:31
Naoki Temat założony przez niniejszego użytkownika |
Liczby Armstronga (narcystyczne) » 2017-11-02 16:02:01 Witajcie! Napisałem program znajdujący liczby Armstronga z przedziału 1-1000, Niestety program wyrzuca mi jedynie 1; Poniżej wstawiam mój kod, jeśli ktoś potrafi znaleźć błędy to bardzo proszę o informację, z góry dzięki! #include <iostream> #include <cmath>
int suma_poteg( int liczba, int a ) { int suma = 0; while( liczba > 0 ) { suma = suma + pow(( liczba % 10 ), a ); liczba = liczba / 10; } return suma; } using namespace std;
int main() { int lc = 0; int kopia; for( int i = 1; i < 1000; i++ ) { kopia = i; while( kopia > 0 ) { kopia = kopia / 10; lc++; } if( suma_poteg( i, lc ) == i ) { cout << i << endl; } } return 0; } |
|
Luq |
» 2017-11-02 20:07:49 Nie zerujesz zmiennej lc na końcu pętli. |
|
Naoki Temat założony przez niniejszego użytkownika |
» 2017-11-03 16:22:15 Dzięki! Problem polega jeszcze na tym, że moja funkcja liczy dla 153 wartość sumy potęg 152, jakieś pomysły dlaczego? :) |
|
nanoant20 |
» 2017-11-09 12:52:17 @Naoki od samego początku śledze tego posta i zauważyłem, że twój algorytm jest wadliwy. Żeby było śmiesznie pod Xubunut 16 działa prawidłowo, po windows'ami już nie. Pokazuje ze liczba np.153 nie jest liczbą narcystyczną, co nie jest zgodne z prawdą. Pokazuje wybiórcze wartości.
P.S. @pekfos jak mało ludziom potrzeba do szczęścia. + 0.1 @pekfos chapeau bas
|
|
pekfos |
» 2017-11-09 13:31:50 Spróbuj suma += pow( liczba % 10, a ) + 0.1; . |
|
« 1 » |