Sunteți pe pagina 1din 7

Programe cu ramificări

Exemplul 1. Se consideră două numere întregi distincte. Să se scrie un program care determină numărul mai
mare.
Metoda 1:
Program p1_1;
Uses CRT;
Var a,b: integer;
Begin
clrscr;
write (‘a=’); readln (a);
write (‘b=’); readln (b);
writeln(’Raspuns: ’);
If a>b then writeln(’numarul ’, a,’ este mai mare ca ’,b)
Else writeln(’numarul ’, b,’ este mai mare ca ’,a);
readln;
End.
Metoda 2:
Program p2;
Uses CRT;
Var a,b: integer;
Max:integer;
Begin
clrscr;
write (‘Introduceti doua numere intregi a si b’);
readln (a,b);
If a>b then max:=a Else max:=b;
writeln(’Raspuns: ’);
writeln(’numarul mai maredintre ’,a,’ si ’,b,’este’,max);
readln;
End.
Metoda 3:
Program p2;
Uses CRT;
Var a,b,max: integer;
Begin
clrscr;
write (‘Dati doua numere intregi:’);
readln (a,b);
max:=a;
writeln(’Raspuns: ’);
If b>max then max:=b;
writeln(’Raspuns: ’);
writeln(’numarul mai maredintre ’,a,’ si ’,b,’este’,max);
readln;
End.

Exemplul 2. Se consideră două numere întregi distincte. Să se scrie un program care înlocuieşte numărul mai
mare cu suma numerelor date, iar numărul mai mic –cu valoarea absolută a diferenţei lor.
Program p2;
Uses CRT;
Var a,b: integer;
Begin
clrscr;
write (‘a=’); readln (a);
write (‘b=’); readln (b);
writeln(’Raspuns: ’);
S:=a+b;
D:=ads(a-b);
If a>b then
Begin
Writeln (‘Primul numar este mai mare’);
a:=s;
b:=d;
end
Else
Begin
Writeln (‘Al doilea numar este mai mare’);
a:=d;
b:=s;
end
writeln (‚a=’, a:3, ‚ b=’,b:3)
readln;
End.

Exemplul 3. Se consideră două numere întregi. Dacă primul număr este pozitiv, atunci de ridicat acest numărul
la pătrat, în caz contrar numerele rămân neschimbate.
Program p3;
Uses CRT;
V a r х , у: I n t e g e r ;
Begin
clrScr;
Write(‘х=’);
ReadLn (x);
w r i t e ( ‘ y= ’ ) ;
R e a d L n ( y) ;
If x>0 Then x:=*x;
WriteLn (‘Răspuns:’)
W r i t e L n ( ‘ x = ’ , x ’ y= ’ , y) ;
ReadLn
End.

Exemplul 4. Să se calculeze valoarea funcţiei f definită pe mulţimea numerelor reale, pentru un număr x citit la
tastatură.
Program p4;
Uses CRT;
Var x,f:Real;
Begin
clrscr;
write (‘Daţi argumentul funcţiei x =’);
readln (x);
If x<=-2 Then f:=-2
Else If x>=2 Then f:=2
Else f:=x
WriteLn (’Răspuns:’)
WriteLn (’Argumentul funcţiei x=’,x:5:1);
WriteLn (’Valoarea funcţiei f =’,f: 5:1);
ReadLn
End.

Exemplul 5. Se consideră trei numere întregi. Să se scrie un program care aranjează aceste numere în ordine
crescătoare.
Program p5;
Uses CRT;
V a r x , y, z , a u x : I n t e g e r ;
Begin
ClrScr;
write (‘Daţi 3 numele întregi x,y şi z :’);
readln (x, y ,z);
If x>y Then {Se compară primele două numere }
Begin
aux:=x; {Se schimbă cu locul}
x : = y; {primul număr cu al doilea }
y:=aux
End;
If y>z Then {Se compară numărul al doilea şi al treilea }
Begin
a u x : = y; {Se schimbă cu locul}
y:=z; { numărul al doilea cu al treilea }
z:=aux;
End;
If x>y Then { Se compară primul număr cu al doilea }
Begin
aux:=x; {Se schimbă cu locul}
x : = y; {primul număr cu al doilea }
y:=aux;
End;
Write(’Numerele aranjuate crescător: );
Write(x,’ ’z, ’ ’,y=;
ReadLn
End.

Exemplul 6. Se consideră trei numere întregi. Dacă primele două sunt nenule să se afişeze media aritmetică a
tuturor numerelor, în caz contrar se să afişeze numărul mai mare dintre toate numerele.
Program p6;
Uses CRT;
Var a,b,c: Integer;
max:Integer;
Begin
clrscr;
write (‘Daţi 3 numere întrigi a, b şi c : ’);
ReadLn (a, b,c);
If a*b <>0 Then
WriteLn(Media aritmetică : ’,(a+b+c)/3:5:1)
Else
Begin
max:=a;
If b>max Then max:=b;
If c>max Then max:=c;
WriteLn (’Numărul mai mare :’,max);
End;
ReadLn
End.

Exemplul 7. Se consideră un cerc de rază R şi un pătrat cu litera a. Să se scrie un program care determină dacă
cercul încape în pătrat.
Program p7;
Uses CRT;
Var a,R:Real;
Begin
clrscr;
write (‘Introdu raza cercului: ’);
Readln (R);
Write (’Introdu latura pătratului :’)
Readln(a);
Write(‘Răspuns:’);
If R<=a/2 then writeln (‘cercul incape in patrat’ )
Elese writeln(‘cercul nu incape in patrat’)
ReadLn;
End.

Probleme propuse
1. Se consideră trei numere întregi. Să se scrie un program care determină numărul mai mare.
2. Se consideră patru numere întregi. Să se scrie un program care determină numărul mai mic.
3. Se consideră numărul natural N. Să se scrie un program care determină dacă numărul N este par.
4. Se consideră două numere întregi. Dacă primul este negativ, atunci suma lor se micşorează de 5 ori, în caz
contrar-se măreşte de 5 ori.
5. Se consideră două numere întregi. Dacă primul este pozitiv, atunci el se măreşte cu 100, în caz contrar
numerele rămân neschimbate.
6. Se consideră două numere întregi. Dacă primul număr este mai mare decât modulul celui de-al doilea
număr, atunci primul număr se micşorează de trei ori, în caz contrar numerele rămân neschimbate.
7. Se consideră două numere întregi diferite. Să se afişeze numerele în următoarea ordine: mai întâi cel mai
mare, apoi cel mai mic.
8. Se consideră două numere întregi. Să se afişeze primul număr, dacă el este mai mare decât al doilea, în caz
contrar să se afişeze ambele numere.
9. Se consideră trei numere întregi. Să se ridice la pătrat numerele negative, celelalte rămânând neschimbate.
10. Se consideră trei numere întregi. Dacă toate sunt pozitive, să se afişeze numărul mai mare dintre al doilea şi
al treilea număr, în caz contrar să se calculeze media aritmetică a primelor două numere.
11. Se consideră trei numere întregi. Dacă suma primelor două este pozitivă, atunci să se afişeze numerele în
ordine crescătoare, în caz contrar să se afişeze numărul maxim dintre ultimele două numere.
12. Se consideră trei numere întregi, două dintre care sunt egale. Să se scrie un program care afişează numărul
diferit de celelalte două.
13. Să se scrie un program care citeşte două numere întregi x, y şi afişează 0, dacă numerele citite sunt egale,
afişează 1, dacă primul este mai mare decât al doilea.
14. De la tastatură se introduce un caracter. Să se determine ce fel de caracter este: literă mare, literă mică, cifră
sau semn special. Se admit litere numai din alfabetul latin.
15. De la tastatură se introduce o literă din alfabetul latin. Să se determin dacă litera este vocală sau consoană.
16. De la tastatură se introduce o cifră. Să se determine dacă cifra este pară.
17. Se consideră trei numere reale. Să se scrie un program care determină dacă aceste numere reprezintă
lungimile laturilor unui triunghi şi, în caz afirmativ, să se:
a. calculeze perimetrul triunghiului;
b. determine natura triunghiului în dependenţă de lungimile laturilor (isoscel, echilateral , scalen).
18. Se consideră trei puncte cu coordonatele date: A(x1, y1), B(x2, y2) ,C (x3, y3 ). Să se determine care din
puncte se află aproape de originea de coordonate. Programul va utiliza formula pentru calcularea distanţei
dintre două puncte cu c coordonatele date: D = (xi-xj)2+(yi-yj )2
19. Trei vânzători X, Y şi Z au vândut portocale. X a vândut 170 kilograme la preţul de 8,5 lei kilogramul, Y –
350 kilograme cu 8,8 lei kilogramul, iar Z-150 kilograme cu 9 lei kilogramul. Să se scrie un program care
calculează preţul mediu de comercializare; cine dintre vânzători a obţinut cea mai mare sumă de la
comercializarea portocalelor.
20. Se consideră numerele reale x, y şi z. Să se calculeze:
a. max (x +y+z, xyz)
b. min (x2+y 2 , y 2+ z 2 )+4
21. Să se calculeze valoarea funcţiei f definită pe mulţimea numerelor reale, pentru un x citit de la tastatură.
22. Să se calculeze valoarea funcţiei f definită pe mulţimea numerelor reale, pentru un x citit de la tastatură
23. Să se scrie un program pentru rezolvarea ecuaţiei liniare de forma ax +b=0.
24. Să se scrie un program pentru rezolvarea ecuaţiei pătrate ax2+bx +c=0 cu coeficienţii reali.
25. Să se scrie un program pentru rezolvarea ecuaţiei bipătrate ax4 +bx 2 + c=0 cu coeficienţii realii.
Instrucţiunea Case
Exemplul 1. De la tastatură se citeşte numărul de ordine al zilei săptămânii. Să se afişeze denumirea zilei. Luni
are numărul de ordine 1, marţi –2 ş.a.m.d.
Program p1;
Uses CRT;
Var n:1..7;
Begin
clrscr;
write (‘Introdu un numar intre 1..7: ’);
Readln (n);
Write(‘Răspuns: ’);
Case n of
1: write (‘Luni’);
2: write (‘Marti’);
3: write (‘Miercuri’);
4: write (‘Joi’);
5: write (‘Vineri’);
6: write (‘Simbata’);
7: write (‘Duminica’);
end;
ReadLn;
End.

Exemplul 2. De la tastatură se introduce o dată din luna aprilie (anul 2000). Să se determine ce zi a fost la
această dată (denumirea zilei ), dacă se ştie că 1 aprilie a fost sâmbătă.
Program p2
Uses CRT;
Var n:1..30;
Begin
clrscr;
write (‘Introdu un numar intre 1..30: ’);
Readln (data);
Write(‘Răspuns: ’);
Case n of
1,8,15,22,29 : writeln (‘Simbata’);
2,9,16,23,30 : writeln (‘Duminica’);
3,10,17,24 : writeln (‘Luni’);
4,11,18,25 : writeln (‘Marti’);
5,12,19,26 : writeln (‘Miercuri’);
6,13,20,27 : writeln (‘Joi’);
7,14,21,28 : writeln (‘Vineri’);
Else writeln(’N-aţi introdus corect data’);
End;
Readln
End.

Exemplul 3. De la tastatură se citeşte unul dintre următoarele numere: 1,5,10,50,100,500 sau 1000. Să se scrie
un program care afişează cifra romană corespunzătoare numărului citit.
Program p3;
Uses CRT;
Var x:1..1000;
Begin
clrscr;
write (‘Introdu 1,5,10,50,100,500,sau1000: ’);
Readln (x);
Write(‘Răspuns: ’);
Case data of
1: Writeln(‘I‘);
5: Writeln(‘V‘);
10: Writeln(‘X‘);
50: Writeln(‘L‘);
100: Writeln(‘C ‘);
500: Writeln(‘D‘);
1000: Writeln(‘M‘);
End;
Readln;
End.

Exemplul 4. Să se scrie un program care determină acţiunea pietonului în faţa semaforului.


Program p21;
Uses CRT;
Tapy Semator=(Rosu,Galmen,Verde);
Var x:Semator;
Begin
clrscr;
x:=Galben;
x:=Succ (x
Case x of
Rosu: Writeln(‘Opriti-va‘);
Galben: Writeln(‘Atentie‘);
Verde: Writeln(‘Porniti-va‘);
End;
Readln;
End.
Exemplul 5. De la tastatură se citeşte un caracter din tabelul de cod ASCII. Să se determine ce fel de caracter
este, adică litera mare, litera mică, cifră sau semn special. Să admit litere numai din alfabetul latin.
Program p22;
Uses CRT;
Var car:Char;
Begin
clrscr;
write (‘Introdu un caracter ’);
Readln (car);
Write(‘Răspuns: ’);

Case car of
‘A’..’Z’: Writeln(‘Caracterul introdus este litera mare‘);
‘a’..’z’: Writeln(‘Caracterul introdus este litera mica ‘);
‘0’..’9’: Writeln(‘Caracterul introdus este cifra‘);
else Writeln(‘Caracterul introdus este semn special’);
End;
Readln;
End.

Probleme propuse
1. Se citeşte numărul de ordine al lunii. Să se scrie un program care afişează anotimpul corespunzător.
2. Se citeşte de la tastatură numărul de ordine al zilei săptămânii. Să se scrie un program care afişează numărul
de lecţii pe care le aveţi în această zi.
3. Se citeşte numărul de ordine al lunii. Să se scrie un program care afişează Să se scrie un program care
afişează numărul de zile corespunzător lunii.
4. De la tastatură se citeşte o cifră. Să se scrie un program care afişează denumirea acesteia.
5. De la tastatură se citeşte o literă din alfabetul latin. Să se scrie un program care determină dacă litera
introdusă reprezintă o vocală sau o consoană.
6. De la tastatură se citeşte două numere întregi diferite de zero şi una din operaţiile aritmetice +, -, *, /. Dacă a
fost introdus semnul ‚+’, să se calculeze suma numerelor, dacă a fost introdus semnul ‚-’, să se calculeze
diferenţa numerelor, dacă a fost introdus semnul ‚*’, să se calculeze produsul lor, dacă a fost introdus
semnul ‚/’, să se calculeze câtul lor.
7. Se consideră numărul natural N. Să se scrie un program care determină dacă ultima cifră a numărului N este
divizibilă cu 3.
8. De la tastatură se citeşte una din cifrele romane: I, V, X, L, C, D sau M. Să se scrie un program care afişează
numărul zecimal corespunzător cifrei citite.
9. De la tastatură se citeşte un număr natural n, 1n99. Să se scrie un program care scrie acest număr cu
litere. De exemplu, dacă s-a citit n=12 se va obţine doisprezece.