Sunteți pe pagina 1din 4

Bacalaureat 2008 Modele de rezolvare

SUBIECTUL I
1. d
2.
a) 963
b) 61, 65, 67
c)
citete n (numr
natural) z0
p1
dac n<>0 atunci
repet
cn%10
n[n/10]
dac c%3=0 atunci
zz+p*(9-c)
pp*10

pn cnd n=0

d) Varianta C/C++
#include<iostream.h>
void main()
{
unsigned int n,c,z=0,p=1;
cout<<n=;cin>>n;
while(n>0)
{
c=n%10;
n=n/10;
if(c%3==0)
{
z=z+p*(9-
c); p=p*10;
}
}
cout<<z;
}

SUBIECTUL II
1. c
2. d
3.
Varianta C/C++
C.x = (A.x + B.x)/2;
C.y = (A.y + B.y)/2;
4.
Pentru intensiv
nlimea arborelui este 3 Frunzele
arborelui sunt: 1, 2, 3 i 8
Pentru neintensiv
Nodul cu cei mai muli fii este 6.

Varianta <1>





















Varianta PASCAL
var n,c,z,p:word;
begin
z:=0;p:=1;
write(n=);readln(n);
while n>0 do
begin
c:=n mod 10;
n:=n div 10;
if c mod 3=0 then
begin
z:=z+p*(9-c);
p:=p*10;
end
end;
write(z)
end.







Varianta PASCAL
C.x := (A.x + B.x)/2;
C.y := (A.y + B.y)/2;








5
Bacalaureat 2008 Modele de rezolvare

Frunzele arborelui sunt: 1, 2, 3 i 8
5.
Varianta C/C++
#include<iostream.h>
void main()
{
unsigned int
n,m,i,j,A[11][11];
do
{cout<<n=;cin>>n;
}
while(n<2 || n>10);
do
{cout << m; cin>> m;
}
while ( m<2 || m>10);
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
if(i<j) A[i][j]=i;
else A[i][j]=j;
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
cout <<A[i][j]<<` `;
cout <<`\n`;
}
}




Varianta PASCAL
var n,m,,i,j:byte;
A:array[1..10,1..10] of
byte; begin
repeat
write(n=);readln(n);
until (n>=2) and (n<=10);
repeat
write(m=);readln(m);
until (m>=2) and (m<=10);
for i:=1 to n do
for j:=1 to m do
if i<j then A[i,j]:=i
else A[i,j]:=j;
for i:=1 to n do
begin
for j:=1 to m do
write(A[i,j], );
writeln;
end
end.


SUBIECTUL III
1. b
2. 12345 pentru intensiv
6 pentru neintensiv n cazul n care prima condiie a funciei n C/C++ este n= =0
3.

Varianta C/C++ Varianta PASCAL

Pentru intensiv
var f:text;

# include stdio.h

void main() n,a:word;

{ este:boolean;

unsigned n,a,este=0; begin

FILE *f; assign(f,bac.txt);

f=fopen(bac.txt,r); reset(f);

do repeat

{ printf(n=) write(n=);readln(n);

scanf(%d, &n); until (n<>0) and (n<=999);
} este:=false;

while (n==0 || n>999); while not(eof(f)) do

while(!feof(f)) begin

{ read(f,a);

fscanf(f,%d,&a); if a mod n=0 then

if(a%n==0) begin

{printf(%d ,a); write(a, );

este=1; este:=true;

} end;

} end;

if(este==0) if not este then

printf(NU write(NU EXISTA);


6
Bacalaureat 2008 Modele de rezolvare


EXISTA);
fclose(f);
}
4. a)
Varianta C/C++
Pentru intensiv
int sub (int v[100],int n,int
a)
{int i; nr=0 ;
for(i=0; i<n; i++)
if (v[i]<a)
nr++; return nr;
}



La neintensiv se modific
doar condiia v[i]==a n loc
de v[i]<a
b)
Varianta C/C++
Pentru intensiv
#include <iostream.h>
#include <conio.h>
int v[100],int n, int a;
{
int i, nr=0 ;
for(i=0;i<n;i++)
if(v[i]<a) nr++ ;
return nr;
}

void main()
{
int
i,j,este=1; do
{
cout<<n= ; cin>>n ;
}
while(n==0 || n>100);
for(i=0;i<n;i++)
do
{
cout <<v[<<i<<]=;
cin>>v[i] ;
}
while(v[i]<-9999 || v[i]>9999);
for(i=0;i<n;i++)
t[i]=sub(v,n,v[i]);
i=0;
while(i<n && este)
{
este=0;
for(j=0;j<n;j++)
if(i==t[j]) este=1;
i++;
}

close(f);
end.


Varianta PASCAL

type vector=array[1..100] of integer;

function
sub(v:vector;n:integer;a:integer):integer;
var i,nr:integer;
begin
nr:=0;
for i:=1 to n do
if v[i]<a then
nr:=nr+1; sub:=nr;
end;
La neintensiv se modific doar condiia
v[i]=a n loc de v[i]<a

Varianta PASCAL

type vector=array[1..100] of integer;
var v:vector;
n,a,i,j:integer;
este:boolean;
function
sub(v:vector;n:integer;a:integer):integer;
var i,nr:integer;
begin
nr:=0;
for i:=1 to n do
if v[i]<a then
nr:=nr+1; sub:=nr;
end;
begin
este:=true;
repeat
write(n=);readln(n);
until (n<>0) and (n<=100);
for i:=1 to n do
repeat
write(v[,i,]=);
readln(v[i]);
until (v[i]>=-9999)and(v[i]<=9999);
for i:=1 to n do
t[i]:=sub(v,n,v[i]);
i:=0;
while (i<n) and este=true
do begin
este:=0;
for j:=1 to n do
if i=t[j] then este:=true;
i:=i+1;
end;
if este=true then write(DA)
else write(NU);
7
Bacalaureat 2008 Modele de rezolvare

if(este) cout<<DA; end.
else cout <<NU;
}

Pentru neintensiv
#include <iostream.h> type vector=array[1..100] of integer;

#include <conio.h> var v:vector;

int v[100],int n, int a; n,a,i:integer;

{ function

int i, nr=0 ; sub(v:vector;n:integer;a:integer):integer;
for(i=0;i<n;i++) var i,nr:integer;

if(v[i]==a) nr++ ; begin

return nr; nr:=0;

} for i:=1 to n do

void main()
if v[i]=a then nr:=nr+1;

sub:=nr;

{ end;

int i; begin

Do repeat

{ write(n=);readln(n);

cout<<n= ; cin>>n ; until (n<>0) and (n<=100);

} for i:=1 to n do

while(n==0 || n>100); repeat

for(i=0;i<n;i++) write(v[,i,]=);

Do readln(v[i]);

{ until (v[i]>=-9999)and(v[i]<=9999);

cout <<v[<<i<<]=; for i:=1 to n do

cin>>v[i] ; t[i]:=sub(v,n,v[i]);

} i:=0;

while(v[i]<-9999 || v[i]>9999); while (i<n) and (t[i]=1) do i:=i+1;

for(i=0;i<n;i++) if i<n then write(NU)

t[i]=sub(v,n,v[i]); else write(DA);

i=0; end.

while(i<n && t[i]==1) i++;

if(i<n) cout<<NU;

else cout <<DA;

}

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