Informatică, întrebare adresată de mihnea298, 8 ani în urmă

Se citeste un numar natural n. Se calculeaza suma cuburilor cifrelor lui. Exemplu: daca se citeste 25, se calculeaza 2⌃3+5⌃3=133. Cu numarul obtinut procedam la fel: 1⌃3+3⌃3+3⌃3=55. Repetam procedeul: 5⌃3+5⌃3=250. Si iar: 2⌃3+5⌃3+0⌃3=133. Repetam procedeul pana ce obtinem un numar natural care este deja prezent in seria generata. Se cere sa se afiseze sirul de valori calculate prin acest procedeu.
ex: pentru n=25, se afiseaza seria:
25 133 55 250 133.
Sa se rezolve in c++ folosind subprograme.

Răspunsuri la întrebare

Răspuns de Sergetec
1

Salut!

Ai rezolvarea in C++ mai  jos

#include <iostream>

using namespace std;

int a[10001], cnt;

bool verif(int x) {

   for (int i = 1; i <= cnt; ++i) {

       if (a[i] == x) {

           return false;

       }

   }

   return true;

}

void prelucrare(int n) {

   int s = 0;

   while (n) {

       int c = n % 10;

       s += c * c * c;

       n /= 10;

   }

   if (!verif(s)) { //conditie de oprire

       a[++cnt] = s; //adaugam ultima valoare a.k.a cea care se repeta

       return;

   }

   a[++cnt] = s;

   prelucrare(s); //apelare recursiva

}

int main() {

   int n;

   cin >> n;

   a[++cnt] = n; //adaugam numarul cu care incepem

   prelucrare(n);

   for (int i = 1; i <= cnt; ++i) {

       cout << a[i] << " ";

   }

   return 0;

}

Alte întrebări interesante