👤

Subprogramul cifrak are 2 parametri, n, prin care primeşte un număr natural cu maximum 9 cifre, şi k, prin care primeşte un număr natural (k≤9). Subprogramul returnează numărul de cifre ale numărului n care sunt egale cu valoarea k. Exemplu: dacă n=233433, iar k=3, subprogramul va returna valoarea 4.
a) Scrieţi definiţia completă a subprogramului cifrak.
b) În fişierul numere.txt sunt memorate mai multe numere naturale (maximum 1000 de numere cu maximum 9 cifre fiecare). Fiecare linie a fişierului conţine câte un număr. Scrieţi programul C/C++ care, folosind apeluri ale subprogramului cifrak, afişează pe ecran, separate prin câte un spaţiu, toate numerele din fişier care conţin exact trei cifre de 0. Exemplu: dacă fişierul numere.txt conţine 260070 39008 70009 se vor afişa, nu neapărat în această ordine, numerele 260070 70009.


Răspuns :

#include <iostream>
#include <fstream>
using namespace std;

int cifrak(int n, int k){
    int t = 0;
    while(n>0){
        if(n%10 == k) t++;
        n=n/10;
    }
    return t;
}

int main(){
    int n;
    ifstream f("numere.txt");
    while(f>>n){
        if(cifrak(n, 0)==3) cout<<n<<" ";
    }
}