Fișierul atestat.in conține, dispuse pe mai multe linii, cel mult un milion de caractere (litere mari și mici ale alfabetului englez, cifre și caractere speciale).
Se consideră subprogramele:
● cifra cu un singur parameru: c de tip caracter. Subprogramul returnează valoarea 1 dacă c este caracter cifră, respectiv valoarea 0 dacă c nu este caracter cifră.
● numar cu doi parametri: n un număr întreg cu cel mult 9 cifre și cif o cifră. Subprogramul determină modificarea valorii parametrului n prin lipirea cifrei cif la sfârșitul numărului. De exemplu, dacă n are valoarea 12, în urma alelului numar(n,3), n va avea valoarea 123.
Cerințe:
a. Scrieți definiția completă a subprogramului cifra;
b. Scrieți definiția completă a subprogramului numar;
c. Scrieți un program care citește datele din fișierul atestat.in și, utilizând apeluri utile ale subprogramelor cifra și numar, determină și scrie pe prima linie a fișierului atestat.out numărul obținut din cifrele care apar în fișierul atestat.in. Acest număr va conține, de la stânga spre dreapta, mai întâi cifrele impare în ordine crescătoare și apoi cifrele pare, așezate în ordine descrescătoare. Numărul obținut are cifrele distincte două câte două. În cazul în care, în fișierul atestat.in nu există cifre, programul va scrie în fișierul atestat.out mesajul "nu exista".
Exemplu:
atestat.in
w e r r t y u h f d s
d f h y i u h n 2 7 6 5
6 6 6 0 0 d f g h j k l
a s d r v b g t t t y y
a a q w v c 3 5 8 * ) n
& ! n s
atestat.out
3578620

Răspuns :

Răspuns:

#include <iostream>

#include <fstream>

using namespace std;

int cifra(char c){

   int aux = c - '0';

   if(aux >=0 && aux <=9){

       return 1;

   }

   return 0;

}

int numar(int n, int cif){

   return n*10+cif;

}

int frecventa[10];

int main()

{

   ifstream in("atestat.in");

   ofstream out("atestat.out");

   char c;

   bool test = false;

   while(in>>c){

           if(cifra(c) == 1){

           test = true;

           frecventa[c-'0'] = 1;

       }

   }

   if(test == false){

       out<<"Nu exista\n";

       out.close();

       in.close();

       return 0;

   }

   long int nr = 0;

   for(int i = 1 ; i<10;i+=2){

       if(frecventa[i] == 1){

           nr = numar(nr,i);

       }

   }

   for(int i = 8 ; i>=0;i-=2){

       if(frecventa[i] == 1){

           nr = numar(nr,i);

       }

   }

   out<<nr;

   out.close();

   in.close();

   return 0;

}

Explicație: