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

Liczby Armstronga (narcystyczne)

Ostatnio zmodyfikowano 2017-11-09 13:31
Autor Wiadomość
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!
C/C++
#include <iostream>
#include <cmath>
//N-cyfrowa liczba Armstronga to liczba równa sumie N-tych potęg swoich cyfr. Proszę napisać
//program, który znajduje wszystkie liczby Armstronga.

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; //liczba cyfr
    int kopia;
    for( int i = 1; i < 1000; i++ ) //sprawdzam, czy i jest szukanąliczbą
    {
        kopia = i;
        while( kopia > 0 )
        {
            kopia = kopia / 10;
            lc++;
        }
       
        if( suma_poteg( i, lc ) == i )
        {
            cout << i << endl;
        }
    }
   
    return 0;
}
P-166359
Luq
» 2017-11-02 20:07:49
Nie zerujesz zmiennej lc na końcu pętli.
P-166368
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? :)
P-166419
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
P-166610
pekfos
» 2017-11-09 13:31:50
Spróbuj
suma += pow( liczba % 10, a ) + 0.1;
.
P-166611
« 1 »
  Strona 1 z 1