a. Subprogramul gaseste_cifra are doi parametri:
x, prin care primeşte un număr natural din intervalul [0,109];
c, prin care primește o cifră.
Subprogramul returnează numărul de apariții ale cifrei c în scrierea numărului x. Scrieţi la
calculator definiţia completă a subprogramului.
Exemplu: pentru x=1323 și c=3, subprogramul returnează 2; pentru x=1323 și c=4,
subprogramul returnează 0.
b) Se citește de la tastatură un număr natural nr din intervalul [0,109]. Se cere scrierea și executarea
la calculator a unui program care să calculeze și să scrie, în fișierul control.out, valoarea
formată din numărul de apariții ale fiecărei cifre în scrierea numărului nr, folosind apeluri utile
ale subprogramului gaseste_cifra, iar pe linia următoare în fișier se va scrie cifra de control
a lui nr. Cifra de control este cifra obținută prin însumarea cifrelor numărului și repetarea
procedeului pentru suma obținută, până când se obține o singură cifră.
Exemplu: pentru nr=23242527, fișierul control.out va conține:
pe primul rând, numărul 41110100 (pentru că cifrele 0 și 1 nu apar, 2 apare de 4 ori, 3
apare o dată, 4 apare o dată, 5 apare o dată, 6 nu apare, 7 apare o dată, 8 și 9 nu apar).
pe al doilea rând, numărul 9 (2+2+2+2+3+4+5+7=27; 2+7=9)
Răspunsuri la întrebare
Răspuns de
3
a)
int gaseste_cifra(int x,int c){
int k=0;
do
k+=(x%10==c),
x/=10;
while(x);
return k;
}
b)
#include<iostream>
#include<fstream>
using namespace std;
int main(){
int n,x=0;
cin>>n;
ofstream fout("control.out");
for(int i=0;i<=9;i++)
x=x*10+gaseste_cifra(n,i);
fout<<x<<endl;
if(n%9==0)
fout<<9;
else
fout<<n%9;
return 0;
}
Alte întrebări interesante
Franceza,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă