Documente Academic
Documente Profesional
Documente Cultură
SUBIECTUL I
1. b
2.
a) 599350
b) 1 9 7 3 1 0
c) citete z, x (numere naturale nenule)
repet
citete y (numr natural)
dac z<y-x atunci
scrie x%10
altfel
y%10
scrie
xy
pn cnd x=0
d) Varianta C/C++ Varianta PASCAL
#include<iostream.h> var x,y,z:word;
void main() begin
{ repeat
unsigned int x,y,z; write(z=);readln(z);
do write(x=);readln(x);
{ until (x>0) and (z>0);
cout<<z=;cin>>z; while x>0 do
cout<<x=;cin>>x; begin
} write(y=);
while(z==0 || x==0); readln(y);
while(x>0) if z<y-x then write(x mod 10)
{ else write(y mod
cout<<y=;cin>>y; 10);
if(z<y-x) cout<<x%10; x:=y;
else cout<<y%10; end;
x=y; end.
}
}
SUBIECTUL II
1. b
2
1
3
6
5 4
Bacalaureat 2008 Modele de rezolvare
Pentru intensiv, drumul (5,4), (4,2), (2,1), (1,6), (6,3) are lungimea maxim 5. Pentru
neintensiv, nodurile 5 i 6 au gradul exterior strict mai mare dect cel interior.
2. c
5
1 2 3 4 5 6 7 8 9 10 11
6 5 5 2 0 3 3 3 8 7 7
2
3
4 6 7 8
Frunzele sunt: 4, 1, 10, 11, 9
1
10 11 9
3.
Varianta C/C++ Varianta PASCAL
f.x=f1.x*f2.y+f1.y*f2.x f.x:=f1.x*f2.y+f1.y*f2.x
f.y=f1.y*f2.y f.y:=f1.y*f2.y
4.
irul memorat n variabila s este ideale pentru intensiv
irul memorat n variabila s este elene pentru neintensiv
5.
Varianta C/C++ Varianta PASCAL
#include <iostream.h> var A:array[1..24,1..24] of byte;
void main() n,i,j:byte;
{ begin
unsigned n,A[24][24],i,j; repeat
do write(n=);readln(n);
{ until (n>=2) and (n<=24);
cout<<n=; cin>>n; for i:=1 to n do A[i,i]:=0;
} for i:=1 to n do
while (n<2 || n>24); for j:=1 to n do
for(i=0;i<n;i++) A[i][i]=0; A[j,i]:=n-I;
for(i=0;i<n;i++) for i:=1 to n do
for(j=0;j<n;j++) begin
A[j][i]=n-i; for j:=1 to n do
for(i=0;i<n;i++) write(A[I,j], );
{ for(j=0;j<n;j++) writeln;
cout<<A[i][j]<< ; end;
}
cout<<\n; end.
}
SUBIECTUL III
1. a
2. xyyy pentru intensiv i xxxyyy pentru neintensiv
3.
Varianta C/C++ Varianta PASCAL
#include stdio.h var f:text;
void main() a:array[1..100] of integer;
{ n,i,x,aux:integer;
int n,a[100],x,i,aux,inv; inv:boolean;
FILE *f; begin
f=fopen(nr.txt,r); assign(f,NR.TXT);
n=0; reset(f);
while (!feof(f)) n:=0;
{ while not (eof(f)) do
Bacalaureat 2008 Modele de rezolvare
fscanf(f,%d,&x);
if (x>=100)
{a[n]=x; n++;
}
}
fclose(f);
if (n==0)
printf(NU
EXISTA); else
{ inv=0;
for(i=0;i<n-1;i++)
if (a[i]>a[i+1])
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
inv=1;
}
}
while (inv);
for(i=0;i<n;i++)
printf(%d ,a[i]);
}
4. a)
Varianta C/C++
int cif(long a, int b)
{
int nr=0;
while (a!=0)
{
if (a%10==b)
nr++; a=a/10;
}
return nr;
}
b)
Varianta C/C++
Pentru intensiv
#include <iostream.h>
long n,numar;
int cif(long a, int b)
{
int nr=0;
while (a!=0)
{
if (a%10==b)
nr++; a=a/10;
}
return nr;
}
void main()
{
begin
read(f,x);
if x>=100
then begin
n:=n+1;
a[n]:=x;
end;
end;
close(f);
if n=0 then
writeln(NU EXISTA)
else
begin
repeat
inv:=false;
for i:=1 to n-1 do if
a[i]>a[i+1] then
begin
aux:=a[i];
a[i]:=a[i+1];
a[i+1]:=aux;
inv:=true;
end; until
not inv;
for i:=1 to n do
write(a[i], );
end;
end.
Varianta PASCAL
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;
Varianta PASCAL
Var x:array[1..8] of integer;
n,numar:longint;
i,j,p,t:integer;
ok:boolean;
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;
Bacalaureat 2008 Modele de rezolvare
do cif:=nr;
{ end;
cout<<n=; cin>>n; begin
} while (n<10000000 || repeat
n>99999999); write(n=);readln(n);
int i,ok=1,j,p=0,x[8],t; until
for(i=9;i>=0;i--) (n>=10000000)and(n<=99999999);
{t=cif(n,i); ok:=true;
if (t!=0) p:=0;
if (t%2!=0)ok=0; for i:=9 downto 0 do
else begin
for(j=1;j<=t;j++) t:=cif(n,i);
{ x[p]=i; if t<>0 then
p++; if t mod 2<>0
} then ok:=false
} else
if(ok) for j:=1 to t do
{i=0; begin
do p:=p+1;
{ for(j=i+1;j<8-i;j++) x[p]:=i;
x[j]=x[j+1]; end;
x[7-i]=x[i]; end;
i=i+1; if ok then
} while (i<=2); begin
numar=0; i:=1;
for(i=0;i<8;i++) repeat
numar=numar*10+x[i]; for j:=i+1 to 9-i do
cout<<numar; x[j]:=x[j+1];
} x[9-i]:=x[i];
else cout<<0; i:=i+1;
} until i>3;
numar:=0;
for i:=1 to 8 do
numar:=numar*10+x[i];
writeln(numar);
end
else writeln(0);
Pentru neintensiv
end.
var x:array[1..8] of integer;
#include <iostream.h>
long n;int i; n:longint;
int cif(long a, int b) i,j,t,numar:integer;
{ function
int nr=0; cif(a:longint;b:integer):integer;
while (a!=0) var nr:integer;
{ begin
if (a%10==b) nr++; nr:=0;
a=a/10; while (a<>0) do
} begin
return nr; if (a mod 10=b) then nr:=nr+1;
} a:=a div 10;
void main() end;
{ cif:=nr;
do end;
{ begin
cout<<"dati n(cu cel putin o repeat
cifra write('dati n(cu cel putin o
impara)="; cin>>n; cifra impara)=');readln(n);
} while (n<0 || n>99999999); until (n>=0) and (n<=99999999);
int j,t,numar=0; numar:=0;
Bacalaureat 2008 Modele de rezolvare
for(i=9;i>=1;i=i-2) i:=9;
{t= cif(n,i); while i>=1 do
if (t!=0) Begin
for(j=1;j<=t;j++) t:=cif(n,i);
numar=numar*10+i; if (t<>0) then
} for j:=1 to t do
if(numar==0) cout<<"numarul nu are numar:=numar*10+i;
cifre impare"; i:=i-2;
else cout<<numar; end;
} if numar=0 then write('numarul nu
are cifre impare')
else writeln(numar);
end.