Documente Academic
Documente Profesional
Documente Cultură
SUBIECTUL I
1. a
2.
a) 2211775
b) 9 8 7 7
0 c)
citete x (numr natural nenul)
repet
citete y (numr natural)
dac x>y atunci
scrie x%10
altfel
scrie y%10
xy
pn cnd y=0
8
Bacalaureat 2008 Modele de rezolvare
d) Varianta C/C++ Varianta PASCAL
#include<iostream.h> var x,y:word;
void main() begin
{ repeat
unsigned int x,y; write(x=);readln(x);
do until x>0;
{ while x>0 do
cout<<x=;cin>>x; begin
} write(y=);
while(x==0); readln(y);
while(x>0) if x>y then write(x mod 10)
{ else write(y mod 10);
cout<<y=;cin>>y; x:=y;
if(x>y) cout<<x%10; end;
else cout<<y%10; end.
x=y;
}
}
SUBIECTUL II
1. a
2. c
3. Valorile ultimelor dou elemente eliminate sunt 5 i 2.
4. Varianta C/C++ Varianta PASCAL
Pentru intensiv
s:=0;
s=0;
for(j=0;j<n/2;j++) for j:=1 to n div 2 do
{ begin
if(a[k][2*j]%2==1) if a[k,2*j] mod 2=1
s=s+a[k][2*j]; s:=s+ a[k,2*j];
if(a[k][2*j+1]%2==1) if a[k,2*j+1] mod 2=1
s=s+a[k][2*j+1]; s:=s+a[k,2*j+1];
} end;
printf(%d,s) writeln(s);
Pentru neintensiv
s=0; s:=0;
for(j=0;j<n;j++) for j:=1 to n do
if(a[k][j]%2= =1) if a[k,j] mod 2=1
s=s+a[k][j]; s:=s+ a[k,j];
printf(%d,s); writeln(s);
5.
Varianta C/C++ Varianta PASCAL
Pentru intensiv
const lit:set of char=[a..z];
#include<string.h>
#include<iostream.h> voc:set of
void main() a..z=[a,e,i,o,u];
{ var cuv:string[20];
char cuv[20]; i,j:byte;
unsigned int i,l,este; este:boolean;
do begin
{ cout<<cuvantul:; cin>>cuv; repeat
este=1; write(cuvantul:);readln(cuv);
9
Bacalaureat 2008 Modele de rezolvare
l=strlen(cuv);
for(i=0;i<l;i++)
if(!(cuv[i]>=97 &&
cuv[i]<=122))
este=0;
}
while (este==0);
for(i=0;i<l;i++)
switch(cuv[i])
{case`a`:cuv[i]=cuv[i]-32;break;
case`e`:cuv[i]=cuv[i]-32;break;
case`i`:cuv[i]=cuv[i]-32;break;
case`o`:cuv[i]=cuv[i]-32;break;
case`u`:cuv[i]=cuv[i]-32;break;
}
cout<<cuv;
}
Pentru neintensiv
#include <string.h>
#include <iostream.h>
#include <ctype>
void main()
{
char cuv[20]; unsigned
int i,l,este; do
{ cout<<cuvantul:;
cin>>cuv; este=1;
l=strlen(cuv);
for(i=0;i<l;i++)
if(!(cuv[i]>=97 &&
cuv[i]<=122)|| !(cuv[i]>=65
&& cuv[i]<=90))
este=0;
}
while (este==0);
for(i=0;i<l;i++)
if(cuv[i]>=97 && cuv[i]<=122)
cuv[i]=toupper(cuv[i]);
cout<<cuv;
}
este:=true;
l:=length(cuv);
for i:=1 to l do
if not (cuv[i] in lit)
then este:=false;
until este;
for i:=1 to l do
if cuv[i] in voc then
cuv[i]:=chr(ord(cuv[i])-32);
writeln(cuv);
end.
const lit:set of
char=[a..z,A..Z];
lit_mici:set
of char=[a..z];
var cuv:string[20];
i,j:byte;
este:boolean;
begin
repeat
write(cuvantul:);readln(cuv);
este:=true;
l:=length(cuv);
for i:=1 to l do
if not (cuv[i] in lit)
then este:=false;
until este;
for i:=1 to l do
if cuv[i] in lit_mici then
cuv[i]:=chr(ord(cuv[i])-32);
writeln(cuv);
end.
SUBIECTUL III
1. d
2. 5310135 pentru intensiv i 55110 pentru neintensiv
3.
Varianta C/C++ Varianta PASCAL
Pentru intensiv
var f:text;
#include stdio.h
void main() a:array[1..100] of integer;
{ int n,a[100],x,i,aux,inv; n,i,x,aux:integer;
FILE *f; inv:boolean;
f=fopen(NR.TXT,r); begin
n=0; assign(f,NR.TXT);
while (!feof(f)) reset(f);
{ fscanf(f,%d,&x); n:=0;
if (x>0) while not (eof(f)) do
{ a[n]=x; begin
10
Bacalaureat 2008 Modele de rezolvare
n++; read(f,x);
} if x>0 then
} begin
fclose(f); n:=n+1;
if (n==0) a[n]:=x;
printf(NU EXISTA); end;
else end;
{ do close(f);
{ inv=o; if n=0 then
for(i=0;i<n-1;i++) writeln(NU EXISTA)
if (a[i])>a[i+1]) else
{ aux=a[i]; begin
a[i]=a[i+1]; repeat
a[i+1]=aux; inv:=false;
inv=1; for i:=1 to n-1 do
} if a[i]>a[i+1] then
} begin
while (inv); aux:=a[i];
for(i=0;i<n;i++) a[i]:=a[i+1];
printf(%d ,a[i]); a[i+1]:=aux
} inv:=true;
} end;
until not inv;
for i:=1 to n do
write(a[i], );
end;
end.
4. a)
Varianta C/C++ Varianta PASCAL
unsigned f(unsigned a) function f(a:word):word;
{ unsigned i,nr,s=0; var i,nr,s:word;
i=2; begin
while (i<=a && a!=0) s:=0;
{ nr=0; i:=2;
while (a%i==0 && a!=0) while (i<=a) and (a<>0) do
{ a=a/i; begin
nr++; nr:=0;
} while (a mod i=0) and (a<>0) do
if (nr!=0) s+=nr; begin
else i++; a:=a div i;
} nr:=nr+1;
return s; end;
} if nr<>0 then s:=s+nr
else i:=i+1;
end;
f:=s;
b)
end;
Varianta C/C++ Varianta PASCAL
Pentru intensiv
type vector=array[1..3] of word;
#include<iostream.h>
unsigned var v,p:vector;
n,v[3],p[3],c,extraprim,aux; n,m,c,aux:word;
unsigned f(unsigned a) extraprim:boolean;
{ unsigned i,nr,s=0; function f(a:word):word;
i=2; var i,nr,s:word;
while (i<=a && a!=0) begin
{ nr=0; s:=0;
while (a%i==0 && a!=0) i:=2;
11
Bacalaureat 2008 Modele de rezolvare
{ a=a/i; while (i<=a) and (a<>0) do
nr++; begin
} nr:=0;
if (nr!=0) s+=nr; while (a mod i=0) and (a<>0) do
else i++; begin
} a:=a div i;
return s; nr:=nr+1;
} end;
void permut(unsigned i) if nr<>0 then s:=s+nr
{ unsigned j,l,nr; else i:=i+1;
if (i==c) end;
{nr=0; f:=s;
for(l=0;l<c;l++) end;
nr=nr*10+v[p[l]]; procedure permut(i:word);
if var j,l,nr:word;
(f(nr)>1)extraprim=0; begin
} if i=c+1 then
else begin
{ p[i]=i; nr:=0;
for(j=0;j<=i;j++) for l:=1 to c do
{ aux=p[i]; nr:=nr*10+v[p[l]];
p[i]=p[j]; if f(nr)>1 then
p[j]=aux; extraprim:=false;
permut(i+1); end
aux=p[i]; else
p[i]=p[j]; begin
p[j]=aux; p[i]:=i;
} for j:=1 to i do
} begin
}
aux:=p[i];p[i]:=p[j];p[j]:=aux;
void main()
{ permut(i+1);
do
aux:=p[i];p[i]:=p[j];p[j]:=aux;
{
cout<<"n="; cin>>n; end;
} end;
while (n<2 || n>999); end;
unsigned m=n; begin
c=0; repeat
while (m!=0) write(n=);readln(n);
{ v[c]=m%10; until(n>=2) and (n<=999);
m=m/10; m:=n;
c++; c:=0;
} while m<>0 do
if (c==3) begin
{aux=v[0];v[0]=v[2];v[2]=aux;} c:=c+1;
else if (c==2) v[c]:=m mod 10;
{aux=v[0];v[0]=v[1];v[1]=aux;} m:=m div 10;
extraprim=1; end;
permut(0); if (c=3) then
if (extraprim) cout<<"DA"; begin
else cout<<"NU"; aux:=v[1];v[1]:=v[3];v[3]:=aux;
} end;
else if (c=2) then
begin
aux:=v[1];v[1]:=v[2];v[2]:=aux;
end;
extraprim:=true;
permut(1);
if extraprim then write(DA)
12
Bacalaureat 2008 Modele de rezolvare
Pentru neintensiv se modific
verificarea lui n, adic n>99 n loc
de n>999 i dispare if(c==3)... din
funcia main rmnnd doar
if(c==2)...
else
write(NU); end.
Pentru neintensiv se modific
verificarea lui n, adic n<=99
n loc de n<=999
i dispare if(c=3)... rmnnd
doar if(c==2).