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

VA ROG MUULTTT 50PCT
Se introduce de la tastatură un şir de numere naturale, până la citirea numărului
0. Să se afişeze toate tripletele de numere introduse consecutiv care au proprietatea că al doilea şi al treilea număr sunt egale cu câtul, respectiv cu restul dintre
împărțirea primului număr la suma cifrelor sale.​


OiLoveYouO: in c++?
ana439306: in pseudocod
OiLoveYouO: a stai sa editez

Răspunsuri la întrebare

Răspuns de OiLoveYouO
1

Program in pseudocod:

vezi poza

\\(*numar) sunt comentarii, nu trebuie sa fie incluse in program

Program

#include <iostream>

using namespace std;

int x, a[100], i, s, y, k;

int main ()

{

while (cin >> x && x != 0) {  //(*1)

i++;

a[i] = x;  //(*2)

}

for (k = 3; k <= i; k++) {  //(*3)

y = a[k-2];  //(*4)

s = 0;  //(*5)

while (y > 0) {

s = s + y%10;  //(*6)

y = y/10;

}

if (a[k-1] == a[k-2]/s && a[k] == a[k-2]%s) cout << "(" << a[k-2] << ", " << a[k-1] << ", " << a[k] << "); ";  //(*7)

}

return 0;

}

Comentarii:

(*1) se citesc numerele cat timp exista si sunt diferite de 0

(*2) se pastreaza numerele citite intr-un vector, iar in final i ne va da si numarul de numere din vector

(*3) incepe algoritmul propriu-zis; parcurgem elementele din a de la pozitia 3 la pozitia k; in aceasta etapa se verifica daca tripletul a[k-2], a[k-1] si a[k] respecta cerinta

(*4) i se atribuie variabilei y valoarea lui a[k-2]; va fi nevoie sa modificam valoarea numarului ca sa-i aflam suma cifrelor si nu vrem sa-i pierdem valoarea lui a[k-2], asa ca ne folosim de variabila y pentru asta

(*5) se initializeaza suma cifrelor cu 0

(*6) se calculeaza suma cifrelor lui y in s, y%10 fiind ultima cifra a lui y

(*7) daca succesorul lui a[k-2], adica a[k-1]=a[k-2]/s=catul la impartirea lui a[k-2] la s si succesorul lui a[k-1], adica a[k]=a[k-2]%s=restul la impartirea lui a[k-2] la s, se afiseaza tripletul a[k-2], a[k-1], a[k].

EXEMPLE

se citeste sirul: 15 3 3 67 5 3 67 5 2 137 12 5 0 67 5 2

se afiseaza: (67, 5, 2); (137, 12, 5);

se citeste sirul: 15 0 3 3 67 5 3 67 5 2 137 12 5 67 5 2

se afiseaza: (nimic)

se citeste sirul: 205 29 2 7 0

se afiseaza: (205, 29, 2); (29, 2, 7);

Anexe:

OiLoveYouO: daca nu se intelege scrisul sa ma intrebi
OiLoveYouO: dar te poti uita si la ce am scris in c++ pentru ca e asemanator
ana439306: mersii mult. sper deosebitr de doamna profesoara, de la tine chiar intaleg
OiLoveYouO: ma bucur ❤
Alte întrebări interesante