subprogramul cif

2
Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un număr natural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returnează numărul de apariţii ale cifrei b în scrierea numărului a. Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2. a) Scrieţi definiţia completă a subprogramului cif. (4p.) b) Scrieţi declarările de date şi programul principal Pascal care citeşte de la tastatură un număr natural n cu cel mult 8 cifre, dintre care cel puţin una impară, şi care determină şi afişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mare număr natural care poate fi obţinut utilizând toate cifrele impare ale numărului n. var x:array[1..8] of integer; n:longint; i,j,t,numar:integer; function cif(a:longint;b:integer):integer; var nr:integer; begin nr:=0; while (a<>0) do begin if (a mod 10=b) then nr:=nr+1; a:=a div 10; end; cif:=nr; end; begin write('dati n(cu cel putin o cifra impara)=');readln(n); numar:=0; i:=9; while i>=1 do

Upload: mihai-oprea

Post on 23-Oct-2015

12 views

Category:

Documents


0 download

DESCRIPTION

Subprogramul cif

TRANSCRIPT

Page 1: Subprogramul cif

Subprogramul cif, cu doi parametri, primeşte prin intermediul parametrului a un numărnatural cu cel mult 8 cifre şi prin intermediul parametrului b o cifră; subprogramul returneazănumărul de apariţii ale cifrei b în scrierea numărului a.Exemplu: pentru a=125854 şi b=5, subprogramul va returna valoarea 2.a) Scrieţi definiţia completă a subprogramului cif. (4p.)b) Scrieţi declarările de date şi programul principal Pascal care citeşte de la tastatură unnumăr natural n cu cel mult 8 cifre, dintre care cel puţin una impară, şi care determină şiafişează pe ecran, folosind apeluri utile ale subprogramului cif, cel mai mare număr naturalcare poate fi obţinut utilizând toate cifrele impare ale numărului n.

var x:array[1..8] of integer;n:longint;i,j,t,numar:integer;

function cif(a:longint;b:integer):integer;var nr:integer;begin

nr:=0;while (a<>0) do

beginif (a mod 10=b) then nr:=nr+1;a:=a div 10;end;

cif:=nr;end;

begin

write('dati n(cu cel putin o cifra impara)=');readln(n);numar:=0;i:=9;while i>=1 do

begint:=cif(n,i);if (t<>0) thenfor j:=1 to t donumar:=numar*10+i;i:=i-2;

end;if numar=0 then write('numarul nu are cifre impare')

else writeln(numar);end.