Sunteți pe pagina 1din 7

Varianta <2>

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).

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