Se consideră algoritmul de mai jos, descris în pseudocod.
S-a notat cu x%y restul împărţirii numărului natural x la numărul natural y, iar cu [z] partea întreagă a
numărului real z.
citeşte m (număr natural, m<10)
citeşte n (număr natural, n>1)
┌ pentru i←1,n execută
│ citeşte x
│ (număr natural)
│ aux←x
│ ok←0
│ ┌cât timp x>0 execută
│ │ ┌dacă x%10=m atunci
│ │ │ ok←1
│ │ └■
│ │ x←[x/10]
│ └■
│ ┌dacă ok=1 atunci
│ │ scrie aux
│ └■
└■
a) Scrieţi valorile care se vor afişa dacă numerele citite sunt m=5, n=5, apoi, în această ordine: 25, 40,
8, 15, 133.
b) Scrieţi care este cea mai mare valoare care poate fi citită pentru m dacă n=4, iar pentru x se citesc,
în ordine, valorile 121, 761, 961, 4481 astfel încât, la finalul executării algoritmului, să se afişeze
valoarea 761.
c) Scrieţi programul C/C++ corespunzător algoritmului dat.
Răspunsuri la întrebare
Răspuns de
3
a) 25,15
b) 7
c)
#include<iostream>
using namespace std;
int main()
{
int m,n,i,x,aux,OK;
cin>>m>>n;
for(i = 1; i <= n; ++i)
{
cin>>x;
aux = x;
OK = 0;
while(x > 0)
{
if(x % 10 == m) OK = 1;
x = x / 10;
}
if(OK == 1) cout<<aux<<"\n";
}
return 0;
}
b) 7
c)
#include<iostream>
using namespace std;
int main()
{
int m,n,i,x,aux,OK;
cin>>m>>n;
for(i = 1; i <= n; ++i)
{
cin>>x;
aux = x;
OK = 0;
while(x > 0)
{
if(x % 10 == m) OK = 1;
x = x / 10;
}
if(OK == 1) cout<<aux<<"\n";
}
return 0;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Franceza,
8 ani în urmă
Engleza,
9 ani în urmă
Limba română,
9 ani în urmă
Biologie,
9 ani în urmă