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

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

Răspuns de howardax
3

#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;

}

Rezultat:

Anexe:

MariaPopescu1213: Ce inseamna bool check?
howardax: Am declarat o variabilă de tip boolean, cu numele check, care poate primi doar valoarea true sau false. Am avut nevoie de ea ca să pot ciclul de divizare a numărului pe cifre.
MariaPopescu1213: Ok mersi mult
howardax: Succes!
Alte întrebări interesante