Sunteți pe pagina 1din 6

Varianta <3>

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.

S-ar putea să vă placă și