Se consideră subprogramul P care primeşte ca parametri un număr natural n cu maximum 9 cifre şi o cifră c şi care va elimina din numărul n toate apariţiile cifrei c, furnizând tot prin parametrul n numărul obţinut.

a) Scrieţi definiţia completă a subprogramului P. (4p.)

b) Pe prima linie a fişierului text BAC.IN se găsesc, separate prin câte un spaţiu, mai multe numere naturale de cel mult 9 cifre fiecare. Scrieţi un program C/C++ care citeşte numerele din acest fişier, elimină toate cifrele impare din fiecare dintre aceste numere şi apoi scrie în fişierul text BAC.OUT numerele astfel obţinute, separate prin câte un spaţiu. Se vor folosi apeluri utile ale subprogramului P. Dacă un număr din fişierul BAC.IN nu conţine nicio cifră pară nenulă, acesta nu va mai apărea deloc în fişierul de ieşire. (6p.)

Exemplu: dacă fişierul BAC.IN conţine numerele 25 7 38 130 45127 0 35 60 15, atunci BAC.OUT va avea conţinutul: 2 8 42 60.

REZOLVARE

#include<fstream.h>

ifstream f("date.in");


ofstream g("date.out");

void p(long &n, int c)

{

int nr = 0;

while(n)

{

if(n%10 != c)

nr = nr * 10 + c;

n = n / 10;

}

while(nr)

{

n = n * 10 + n%10;

nr = nr / 10;

}

}

void main()

{int i;long n;

while(!f.eof())

{f>>n;

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

p(n,i);

if(n>0) g<<n<<" ";}

}