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

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 lucaciucandrei
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