URGENT VA ROG
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
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
int gaseste_cifra(int x, int c){
int k=0;
bool check=true;
while(check){
if(x/10==0){
if(x%10==c){
k++;
}
check=false;
} else {
if(x%10==c){
k++;
}
x=x/10;
}
}
return k;
}
int main()
{
int x, c, nr, cifraControl=0;
cout<<"Dati x:"; cin>>x;
cout<<"Dati c:"; cin>>c;
cout<<gaseste_cifra(x,c);
cout<<"\nDati nr:"; cin>>nr;
ofstream controlF("control.out");
for(int i=0; i<=9; i++){
int aparitii=gaseste_cifra(nr,i);
controlF<<aparitii;
cifraControl+=aparitii*i;
if(cifraControl>=10){
int rest, cat;
rest=cifraControl%10;
cat=cifraControl/10;
cifraControl=rest+cat;
}
}
controlF<<"\n"<<cifraControl;
controlF.close();
return 0;
}