Informatică, întrebare adresată de roxanamariafaur, 9 ani în urmă

S-a notat cu x%y restul împăririi numărului natural x
la numărul natural nenul y si cu [z] partea întreagă a
numărului real z.
citeste n
(număr natural nenul)
m=0
p=1
┌cât timp n≥10 execută
│ c1=n%10
│ n=[n/10]
│ c2=n%10
│┌dacă c1≠c2 atunci
││┌dacă c1>c2 atunci
│││ m=m+(c1-c2)*p
│││altfel
│││ m=m+(c2-c1)*p
││└■
││ p=p*10
│└■
└■
scrie m
a) Scrieti numărul afisat dacă se citeste valoarea
216553. (6p.)
b) Scrieti două numere de trei cifre care pot fi
citite, astfel încât în urma executării
algoritmului, pentru fiecare dintre acestea, să se
afișeze valoarea 1. (4p.)
c) Scrieti în pseudocod un algoritm, echivalent cu
cel dat, în care să se înlocuiască structura cât
timp...execută cu o structură repetitivă cu
test final. (6p.)
d) Scrieti programul C/C++ corespunzător
algoritmului dat.

Răspunsuri la întrebare

Răspuns de blindseeker90
2
Programul calculeaza diferentele absolute intre 2 cifre consecutive si formeaza un numar din ele atata timp cat diferenta este diferita de 0. daca ai 24, va afisa 2, la fel daca ai si 42. 
daca ai 131 va afisa 22(diferentele intre cifre consecutive sunt de cate 2)
a)1512(2-1 6-1 6-5 5-5=0 ignora 5-3)
b)554 211
c) executa

cat timp n>=10, restul e identic
d) 
#include <iostream>
using namespace std;

int main(){
int c1,c2,p,m,n;
cout<<"Introduceti numar:";
cin>>n;
m=0;
p=1;
while(n>10){
c1=n%10;
n=n/10;
c2=n%10;
if(c1!=c2){
if(c1>c2){
m=m+(c1-c2)*p;
}

else{
m=m+(c2-c1)*p;
}
p=p*10;
}
}
cout<<"Rezultat: "<<m;
return 0;
}
Alte întrebări interesante