Suma kwadratów cyfr liczb od 0 do 10000.

0

Witam. Mam napisać program, który wyświetli sumę kwadratów cyfr danej liczby, a dokładniej mówiąc liczb od 0 do 10000. Przykład 232, czyli suma kwadratów cyfr tej liczby to 17. Udało mi się napisać to dla jednej liczby przykładowej. Teraz potrzebuję przerobić, aby program wypisał kwadraty cyfr liczb od 1 do 10 000. Jak to zrobić? Będzie potrzebne kilka tablic przechowujących cyfry każdej liczby i kolejna tablica do przechowywania wyników kwadratów cyfr każdej liczby, ale za bardzo nie wiem jak zrobić. Może ktoś coś podpowie.

 
#include <stdio.h>

int main()
{
    int lNaturalna, i;
    int tabCyfr[15]; //do przechowywania cyfr danej liczby
    int licznik = 15;
    int wynik=0; //zmienna przechowująca sumę kwadratów cyfr danej liczby, w tym przykładzie 232

    for(i=0;i<15;i++)
        tabCyfr[i]=0;

    lNaturalna=232;

    while(lNaturalna!=0)
    {
        licznik--;
        tabCyfr[licznik]=lNaturalna%10; //przypisujemy cyfry liczby jako kolejne elementy tablicy od końca
        lNaturalna=lNaturalna/10;
    }

    for(i=licznik;i<15;i++)
    {
        wynik+=tabCyfr[i]*tabCyfr[i]; //obliczamy kwadrat cyfr
    }
    printf("\n%d", wynik);

    getchar();
    return 0;
}

1

Najpierw przenieś robienie kwadratów cyfr do funkcji, uzależniając od liczby podanej jako argument (np. int kwadratCyfr(int liczba) ). Następnie po prostu robisz pętle.

0

a na grzyba tabCyfr[] ?
weź ją i wy..krochmal, przecie jedna pętla wystarczy.

0

czy warto sprawdzać liczby większe od 243?

nie ładniej?

int znajdzSumeKwadratowCyfr(int lNaturalna) {
    int wynik=0;
    while( lNaturalna ){
        int i= lNaturalna%10;
        wynik += i*i;
        lNaturalna /= 10;}
    return wynik;}

1 użytkowników online, w tym zalogowanych: 0, gości: 1