Sunteți pe pagina 1din 61

Cuprins

ALGORITMI. NOTIUNI GENERALE ............................................................................................................. 4


Etapele rezolvarii unei probleme: ............................................................................................................ 5
SCHEMA LOGICA ..................................................................................................................................... 8
Descrierea algoritmilor cu ajutorul schemelor logice ............................................................................... 9
1. De start i de stop ............................................................................................................................ 9
2. De citire i de scriere ....................................................................................................................... 9
De atribuire (de calcul) ...................................................................................................................... 10
De procedur .................................................................................................................................... 11
De nceput de procedur ............................................................................................................... 11
De sfrit de procedur ................................................................................................................. 11
Principiile de baz ale programrii structurate ...................................................................................... 12
Structura secvenial(secvena) ............................................................................................................. 12
2. S se calculeze aria unui triunghi oarecare dac se cunosc lungimile laturilor triunghiului.............. 13
Tem pentru acas: ........................................................................................................................... 13
Fie a i b dou variabile ntregi. Dorim s schimbm ntre ele valorile celor dou variabile. Mai precis, dac a =
640 i b = 480, dorim s obtinem a = 480 i b = 640. .......................................................................... 14
Determinarea maximului pentru ....................................................................................................... 14
Schema logica pentru rezolvarea unei ecuatii de gradul 1 (caz general) ............................................ 14
Exemple de probleme rezolvate in pseudocod...................................................................................... 15
1) Media aritmetica a n numere ma=(n1+n2+...nn)/n................................................................. 15
2) Factorialul unui numar n n!=1*2*3*...*n ...................................................................................... 15
folosind structura repetitiva conditionata anterior ........................................................................ 15
folosind structura repetitiva conditionata posterior ....................................................................... 16
folosind structura repetitiva cu numar cunoscut de pasi ................................................................ 16
folosind recursivitatea ................................................................................................................... 16
functia este apelata intr-un program principal ............................................................................... 16
3)Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau nu. ................................................. 16
varianta optimizata ........................................................................................................................... 17
4)Sa se calculeze cmmdc pentru doua numere .................................................................................. 17
prin impartiri repetate (algoritmul lui Euclid): ultimul rest diferit de 0 reprezinta cmmdc .............. 17
prin scaderi repetate (algoritmul lui Nicomachus): din numarul mai mare se scade numarul mai mic cat timp
cele doua numere sunt diferite ...................................................................................................... 17


5)Sa se afiseze suma cifrelor unui numar n ........................................................................................ 17
6)Sa se afle daca un numar este perfect ............................................................................................ 18
7)Sa se afle cifra maxima a unui numar (cea mai mare cifra a unui numar) ........................................ 18
Probleme propuse- Evaluare ................................................................................................................. 18
Evaluare ............................................................................................................................................ 23
**. Se da un numar intreg format din exact patru cifre si se cere sa se tipareasca: suma cifrelor lui, produsul
cifrelor lui. ......................................................................................................................................... 25
Evaluare 2 ......................................................................................................................................... 26
Nr.I .................................................................................................................................................... 28
Incercuii rspunsurile adevrate pentru subiectele de la 1 la 6. ............................................................ 28
nceput .......................................................................................................................................... 29
Nr.II ................................................................................................................................................... 31
Incercuii rspunsurile adevrate pentru subiectele de la 1 la 6. ............................................................ 31
Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau nu. ................................................ 34
Se citesc mai multe numere pana se tasteaza zero. Sa se afiseze numerele prime. ........................ 34
Sa se afiseze suma cifrelor unui numar n ....................................................................................... 34
Sa se afle daca un numar este perfect............................................................................................ 35
Sa se afle cifra maxima a unui numar (cea mai mare cifra a unui numar) ....................................... 35
Se citeste un numar format din mai multe cifre. sa se afiseze un mesaj daca numarul citit este palindrom 35
Se citesc mai multe numere pana se citeste cifra 0. Sa se afiseze toate numerele citite divizibile cu 5 36
Se citesc mai multe numere pana se citeste cifra 0. Sa se afiseze numerele de pe pozitii pare ....... 36
Fie x un numar ntreg format din exact 5 cifre. Sa se afiseze cifra unitatilor si cea a sutelor, pe acelasi rnd, cu
un spatiu ntre ele. ........................................................................................................................ 37
Cifra control .................................................................................................................................. 37
Cifre ordonate ............................................................................................................................... 38
Cifre pare ...................................................................................................................................... 38
Cmmdc .......................................................................................................................................... 39
Nr. deosebit................................................................................................................................... 39
Nr. perfect ..................................................................................................................................... 40
Nr. prim ......................................................................................................................................... 41
Palindrom ...................................................................................................................................... 42
Suma cifrelor ................................................................................................................................. 42
Probleme rezolvate in C++..................................................................................................................... 43


** se citesc coordonatele punctelor A(x1,y1) si B(x2,y2)//sa se calculeze lungimea segmentului AB si mijlocul
lui AB ............................................................................................................................................. 45
se citesc s secunde. sa se transforme in ore minute si secunde ...................................................... 46
** //se citesc 2 valori a si b//sa se calculeze urmatoarele functii matematice ........................... 46
Se citeste n. Sa se afiseze toti divizorii ........................................................................................... 47
Se citeste n. sa se genereze toate perechile (a,b) cu proprietatea ca a|b ....................................... 47
Structuri alternative .............................................................................................................................. 48
Instructiunea de selectie CASE ........................................................................................................... 48
Se citesc 2 variabile a si b. Sa se afiseze ce operatie se doreste a se executa in functie de simbolul citit utilizat
ca operator. ................................................................................................................................... 49
**//se citesc 2 unghiuri exprimate in grade,minute si secunde ...................................................... 50
sa se calculeze suma celor 2 unghiuri in grade min si sec ............................................................... 50
se citesc 3 numere a,b,c//sa se afiseze daca este triunghi: echilateral,isoscel,dreptunghic sau oarecare 51
Sa se scrie un program care sa rezolve ecuatia de grad II: ax2+bx+c=0, unde a, b, c apartin lui R. .. 51
- S se rezolve un sistem de dou ecuaii liniare cu dou necunoscute: a1*x+b1*y=c1 a2*x+b2*y=c2 52
Structuri repetitive ................................................................................................................................ 53
Structura repetitiva cu numar cunoscut de pasi are urmatorul principiu: ........................................ 53
- Structura repetitiva conditionata anterior are urmatorul principiu de executie .......................... 53
Structura repetitiva conditionata posterior are urmatorul principiu ................................................... 54
Exemple: ........................................................................................................................................... 54
Sa se calculeze n factorial( n!) , unde n este numar natural. ........................................................... 54
Calculati produsul numerelor naturale impare mai mici sau egale cu o valoare data n ................... 54
ex:pt n=8 p=1*3*5*7=105 ........................................................................................................... 54
- Sa se afiseze primii n termeni ai sirului lui Fibonacci;sirul are primii doi termeni egali cu 1 si fiecare din
urmatorii termeni este egal cu suma dintre precedentul si ante-precedentul ........................ 55
- Scrieti un program care afiseaza numarul de aparitii a unei cifre x intr-un numar n;de ex daca citim
n=2232 si x=2 se afiseaza numarul 3. ...................................................................................... 55
Verificati daca un numar natural x diferit de 0 si 1, este prim sau nu .............................................. 55
- CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI EUCLID (metoda impartirilor succesive)56
CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI NICOMAHUS (metoda scaderilor repetate) ... 56
Sa se scrie un program tcare realizeaza trecerea unui numar din baza 10 in baza b, unde b se citeste de la
tastatura ....................................................................................................................................... 56
Realizati un program care descompune in factori primi un numar n citit de la tastatura ................ 57
Sa se afiseze cifra maxima a unui numar citit de la tastatura .......................................................... 57
(cea mai mare cifra a unui numar) ............................................................................................ 57


? .................................................................................................................................................... 58
Ionel depune la banca o suma s. Dup ace afla care este dobanda d , ce suma se capitalizeaza dupa n ani? 59
Se citesc 3 numere. Scrie un program care determina valoarea maxima ........................................ 59
Se citesc un numar natural n. Sa se calculeze suma cifrelor lui n. ................................................... 60
Se citesc un numar natural n. Sa se calculeze suma cifrelor lui n( sa se afiseze numarul vazut in oglinda.) 60
Se citesc n numere . Sa se calculeze valoarea maxima.................................................................... 61



ALGORITMI
ALGORITMI. NOTIUNI GENERALE

-Algoritmul este conceptul fundamental al informaticii.
- ntr-o definitie aproximativa :
- algoritmul reprezinta o succesiune de pasi care poate ndeplini o anumita sarcina in
functie de datele de intrare pt a obtine datele de iesire
- mulime finit de reguli de calcul, descrise fr echivoc, care indic operaiile
elementare necesare i ordinea efecturii lor n scopul rezolvrii unei probleme ntr-un timp
finit
- metod (procedeu) de rezolvare a unei probleme


Observaii:
1. Oricrei probleme care admite o formulare matematic i se poate asocia un
algoritm.
2. Dezvoltarea unui algoritm este, n general, mai dificil dect scrierea programului
surs pe baza algoritmului.
Caracteristici fundamentale: Orice algoritm trebuie s ndeplineasc cinci
caracteristici:
1. generalitate - un algoritm trebuie sa ofere o metod general de rezolvare a unui
anumit tip de probleme, pentru date iniiale arbitrare.
2. precizie (claritate) - descrierea algoritmului trebuie facut fr ambiguiti, iar
comenzile trebuie s exprime operaii cunos-cute calculatorului, care pot fi executate de
ctre procesor.
3. determinare - la fiecare pas, aciunea care urmeaz a fi executat trebuie s poat
fi determinat fr echivoc i unic pe baza aciunilor precedente.
4. finitudinea - un algoritm trebuie s conduc la obinerea rezultatelor ntr-un numr
finit de pai.
5. eficien - un algoritm trebuie s fie construit n aa fel nct s foloseasc


resurse hard ct mai puine i s necesit un timp minim de execuie.
6. executabilitate - algoritmul ca ntreg i fiecare pas al su trebuie s poat fi
executat.



Nerespectarea acestor caracteristici generale conduce la obtinerea de
algoritmi neperformanti, posibil infiniti sau nerealizabili.
Observatia1. Nu orice problema admite un algoritm de rezolvare.
Observatia2. Doi agoritmi sunt echivalenti cand pentru aceleasi date de intrare
se obtin aceleasi date de iesire.



Eta
pele
rez
olva
rii u
nei
pro
ble
me:

1 stabilirea cerintelor problemei
2 stabilirea datelor de intrare si a datelor de iesire
3 stabilirea unui rationament general de rezolvare a problemei
4 reprezentarea algoritmului problemei intr-o forma simpla si clara
5 verificarea rationamentului pentru valori concrete
6 implementarea algoritmului intr-un limbaj de programare



Exista 2 modalitati de reprezentare a algoritmilor:
1. Scheme logice (algoritm in mod grafic folosind blocuri diferite pentru operatii
diferite )
-dezavantaje: sunt stufoase si greu de urmarit
-avantaje: utile celor care invata sa programeze si sunt in faza de gandire algoritmica
2. Limbajul pseudocod (este o scriere intermediar, menit s simplifice
scrierea unui algoritm ntr-un limbaj de programare i s ajute la realizarea claritii
algoritmului, n timp scurt.)



Metoda rafinrii pas cu pas
- descompunerea unei probleme ntr-un numr de probleme mai simple care pot fi
rezolvate
pe baza unui algoritm (mai mic mai simplu mai uor)
Rafinare - detalierea suficient a fiecrui pas

Exemplu: programarea unui robot s fac ceai
Algoritm iniial
1. pune frunzele de ceai n vas
2. fierbe apa
3. adaug apa fiart n vas
4. ateapt 5 minute
5. pune ceaiul n ceac
Rafinarea etapei 1.
1.1 deschide cutia de ceai
1.2 scoate o linguri de frunze de ceai din cutie
1.3 rstoarn frunzele din linguri n vas
1.4 nchide cutia de ceai
sau:
2.1 pune ap n fiebtor
2.2 pornete fierbtorul
2.3 ateapt pn cnd fierbe apa
2.4 oprete fierbtorul
sau:
5.1 pune ceaiul n ceac pn cnd se umple ceaca
Rafinarea suplimentar a etapei 1.1
1.1.1 scoate cutia de ceai din dulap
1.1.2 scoate capacul cutiei de ceai


Etapele dezvoltrii unui program: - implic:
1. dezvoltarea algoritmului
2. reprezentarea algoritmului ca program
Rezolvarea problemelor cu ajutorul calculatorului








Tema: determinarea timpului de zbor al unui avion pe baza orarului zborurilor
t = tsosire - tplecare
Pentru a construi un algoritm util, se va ine cont de:
- ziua sosirii i ziua plecrii
- fusurile orare schimbate
- ora de var/iarn




SCHEMA LOGICA





STOP
START



Descrierea algoritmilor cu ajutorul schemelor logice
n schemele logice, operaiile de baz din algoritmi sunt reprezemtate prin figuri
geometrice, specifice fiecrui tip de operaie, legate ntre ele prin sgei pentru a evidenia
ordinea de execuie a operaiilor. n interiorul figurii se scrie operaia corespunztoare, tot
acest ansamblu formeaz un bloc al schemei logice.
ntr-o schem logic pot s apar blocurile:
1. De start i de stop
- cuprind cuvintele start, respectiv stop ncadrate n elipse i marcheaz nceputul,
respectiv sfritul algoritmului



2. De citire i de scriere
citire - cuprinde ntr-un paralelogram o operaie de citire specificat prin cuvntul
citeste i lista variabilelor ce urmeaz a fi citite
scriere - cuprinde ntr-un paralelogram o operaie de scriere specificat prin
cuvntul scrie i lista expresiilor ale cror valori urmeaz a fi scrise


CITESTE lista de
variabile
SCRIE lista de expresii
SCRIE n nu poate fi 0

SCRIE x
SCRIE x
SCRIE soluia ecuaie
este x




Exemplu:
Determin afiarea pe ecran a textului cuprins ntre
apostrofuri (fr apostrofuri)

determin afiarea pe ecran a valorii variabilei x din
momentul respectiv


Dac dorim ca afiarea s fie mai frumoas, s cuprind pe lng valoarei variabilei x
i un text din care s rezulte semnificaia valorii, blocul de scriere ar putea fi:




De atribuire (de calcul)

Cuprinde ntr-un dreptunghi o operaie de atribuire.
Executarea unei operaii de atribuire const n:
- calculul valorii expresiei din operaia de atribuire
- transferul valorii calculate variabilei din operaia de atribuire
1. De decizie
Variabilaexpresie


Denumirea
procedurii
Return

Corespunde unei operaii de decizie i cuprinde n interiorul unui romb condiia a
crei valoare de adevr se verific
De procedur

Corespunde unui grup de blocuri neprecizate nc i cuprinde denumirea procedurii
ntr-un dreptunghi cu latuirle mici dublate. Denumirea procedurii se alege n aa fel nct
s sugereze prelucrrile care urmeaz s fie detailate ntr-o alt schem logic
coraspunztoare procedurii.
De nceput de procedur




Marcheaz nceputul unei scheme logice care detaileaz operaiile corespunztoare
unei proceduri; cuprinde ntr-o elips numele procedurii
De sfrit de procedur



Cuprinde ntr-o elips cuvntul Retur i marcheaz sfritul unei scheme logice care
descrie operaiile unei procepuri
Denumirea procedurii
conditie
Nu
Da


Principiile de baz ale programrii structurate
Principiile de baz ale programrii structurate sunt:
1. Proiectarea descendent a algoritmilor este cel mai important principiu
deoarece el asigur o modalitate natural i eficient de dezvoltare a algoritmilor care
evideniaz ideile de baz utilizate n rezolvarea problemei, pornind de la aspecte generale
i ajungnd n final la ultimele detalii ale rezolvrii
2. Utilizarea n algoritm a trei tipuri de structuri de control: structura
secvenial(secvena), structura alternativ(decizia) i structura repetitiv(ciclul).
Structura secvenial(secvena)
Cuprinde o succesiune de operaii, reprezentate prin unul sau mai multe blocuri
procedurale care se execut secvenial, adic unul dup cellalt n ordinea n ordinea n
care sunt scrise.
Probleme exemplu:
1. S se afieze durata exprimat n zile a micrii de rotaie a Pmntului n jurul
Soarelui tiind c este de 265 zile 5 ore 48 minute i 46 secunde.
Analiza problemei
Pentru a exprima n zile durata micrii de rotaie a Pmntului n jurul Soarelui, va
trebui s transformm n zile cele 5 ore 48 minute i 46 de secunde. Se va ine cont de
faptul c o zi are 24 de ore, o or 60 minute sau 3600 secunde.
Funcia programului este de a calcula durata exact n zile a micrii de rotaie a
Pmntului.

Start
d360+5/24+1/24(48/60+46/3600)
Scrie micarea de rotaie a
Pmntului=, d, zile
Stop


2. S se calculeze aria unui triunghi oarecare dac se cunosc lungimile laturilor
triunghiului.
1. Analiza problemei.
Datele de intrare:
Lungimile laturilor: numere reale a, b i c
Datele de ieire:
Aria triunghiului: numr real notat cu s
Datele de manevr:
Semiperimetrul: numr real notat cu p
Funcia programului:
Este de a calcula cu formula lui Heron aria triunghilui dat prin lungimile laturilor.
2. Determinarea algoritmului de rezolvare a problemei
P1. Se introduc de la tastatur valorile reale a, b i c
P2. Se calculeaz valoarea semiperimetrului p=(a+b+c)/2
P3. Se calculeaz valoarea ariei ) ( * ) ( * ) ( * c p b p a p p s =
P4. Se scrie aria
P5. Stop
Schema logic





Tem pentru acas:
Specificnd analiza problemei i funcia programului scriei algoritmii n schem
logic care:
1. Determin perimetrul i aria unui dreptunghi, unde lungimile laturilor sunt citite
de la tastatur.
2. Pentru a un numr real, citit de la tastatur, care reprezint lungimea laturii unui
cub, calculeaz i afieaz volumul i suprafaa total a cubului.
3. Interschimb valorile a dou numere reale a i b introduse de la tastatur i apoi
le afieaz.
4. Descriei, punnd n eviden analiza problemei i succesiunea pailor, algoritmul
n schem logic care pentru 2 valori a i b numere ntregi, afieaz 5 valori, reprezentnd
rezultatea celor 5 operaii (suma, produsul, diferena, ctul i restul operaie de mprire
pe mulimea numerelor ntregi)
Start
Citeste a, b, c
P=(a+b+c)/2
) ( * ) ( * ) ( * c p b p a p p s =

Scrie Aria=, s
Stop




Exemplul 1
.
Fie a i b dou variabile ntregi. Dorim s schimbm ntre ele valorile celor
dou variabile. Mai precis, dac a = 640 i b = 480, dorim s obtinem a = 480 i b = 640.
Un mod de a realiza aceast schimbare presupune utilizarea unei variabile suplimentare, cu
rol de intermediar. Folosind trei operatii de atribuire, algoritmul are urmtorii pai:
1. citete a, b
2. t := a
3. a := b
4. b := t
5. scrie a,b



Determinarea maximului pentru
Ex: Se da un sir de numere ntregi formate din 3 cifre. Si se determine maximul acestui sir.
n=5 -2,14,-32,158,4
Pseudocod
nceput
Citeste n
max=-999
Pentru contor=1,n executa
citeste a
Daca (max<a) atunci max=a
Sfrsit_daca
Sfarsit_pentru
Scrie max
Sfrsit


Schema logica pentru rezolvarea unei ecuatii de gradul 1 (caz general)

a b
480 640
t








Exemple de probleme rezolvate in pseudocod
1) Media aritmetica a n numere ma=(n1+n2+...nn)/n
start
citeste n
ma=0
pentru i=1,n
{
citeste x
ma=ma+x
}
ma=ma/n
scrie ma
stop
2) Factorialul unui numar n n!=1*2*3*...*n
folosind structura repetitiva conditionata anterior
start
citeste n
produs=1
i=1
cat timp i<=n
{p=p*i
START
CITESTE
A, B
A=0
X=-B/A
SCRIE:
X
B=0
SCRIE:
ECUATIE
IMPOSIBILA
SCRIE:
ECUATIE
NEDETERM
STOP
DA NU
NU DA


i=i+1}
scrie produs
sfarsit
folosind structura repetitiva conditionata posterior
start
citeste n
produs=1
i=1
repeta
{p=p*i
i=i+1}
cat timp i<=n
scrie produs
sfarsit
folosind structura repetitiva cu numar cunoscut de pasi
start
citeste n
produs=1
pentru i=1,n executa
p=p*i
scrie produs
sfarsit
folosind recursivitatea
fact(n)
{
daca n=0 atunci
returneaza 1
altfel
returneaza n*fact(n-1)
}
functia este apelata intr-un program principal
start
citeste n
scrie fact(n)
stop
3)Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau nu.
Un numar este prim daca nu are divizori decat pe 1 si pe el insusi.Un numar d este divizor pentru n daca restul
impartirii lui n la d este 0.Pentru a afla restul impartirii vom folosi operatorul mod(%)
start
citeste n
prim=1
pentru d=2,n/2 executa
daca n mod d =0 atunci
prim=0
daca prim=1 atunci
scrie "este prim"


altfel
scrie"nu este prim"
sfarsit
varianta optimizata
start
citeste n
prim=1
d=2
cat timp d<=n/2 si prim=1
daca n mod d = 0 atunci
prim=0
altfel d=d+1
daca prim=1 atunci
scrie "este prim:
altfel
scrie"nu este prim"
sfarsit
4)Sa se calculeze cmmdc pentru doua numere
prin impartiri repetate (algoritmul lui Euclid): ultimul rest diferit de 0 reprezinta cmmdc
start
citeste a,b
deimp=a
imp=b
cat timp imp != 0 executa
{
r=deimp mod imp
deimp=imp
imp=r
}
scrie "cmmdc este",deimp
stop
prin scaderi repetate (algoritmul lui Nicomachus): din numarul mai mare se scade
numarul mai mic cat timp cele doua numere sunt diferite
start
citeste a,b
cat timp a != b executa
daca a>b atunci
a=a-b
altfel
b=b-a
scrie "cmmdc este",a
stop
5)Sa se afiseze suma cifrelor unui numar n
Ultima cifra este data de restul impartirii numarului la 10 (n mod 10).Catul impartirii il aflam folosid operatorul div


start
citeste n
s=0
cat timp n>0
{
c=n mod 10
s=s+c
n=n div 10
}
scrie s
sfarsit
6)Sa se afle daca un numar este perfect
Un numar este perfect daca este egal cu suma divizorilor sai, inclusiv 1, dar fara el insusi.Exemplu: 6=1+2+3 este
numar perfect
start
citeste n
s=0
pentru d=1,n/2
daca n mod d = 0 atunci
s=s+d
daca s=n atunci
scrie "este numar perfect"
sfarsit
7)Sa se afle cifra maxima a unui numar (cea mai mare cifra a unui numar)
start
citeste n
max=-1
cat timp n>0
{
c=n mod 10
daca max<c atunci
max=c
n=n div 10
}
scrie max
sfarsit
Probleme propuse- Evaluare


1. n programul pseudocod alturat se consider c
valoarile citite pentru variabilele m si n sunt numere
naturale cu cel mult 9 cifre.
1. citete n,m
2. s0
3. cat timp (n>0)sau(m>0) executa





a) Care este numarul de executii ale instructiunii 5 daca
se citeste de la tastatura n=27 si m=75341?
4. dac n MOD 10>m MOD 10 atunci
4. ss+n MOD 10
5. altfel ss+m MOD 10
6.
6. n[n/10]
7. m[m/10]

8. scrie s
b) Ce va afisa algoritmul pentru n=27 si m=75341?
c) Scriei un program pseudocod echivalent cu cel dat
care s conin alt tip de structur repetitiv.
2. Fie pseudocodul alturat :
Citeste n,x
Mx
P1
Pentru i=2,n executa
Citeste x
Daca M<x atunci
Mx
Pi


scrie M,P
a) Care vor fi valorile variabilelor M si P daca la intrare
se citesc n=5, iar pentru x valorile 1, 2, 7, 9, 5?
b) Scrieti un program pseudocod echivalent care sa
utilizeze o structura repetitiva cu test final.
3. Se consider urmtorul algoritm descris n
pseudocod:
citeste y
citete x
nr0
repet
dac x=2*y atunci
nrnr+1

pn cnd x=0
scrie nr
a) Deducei ce se va afia, dac valorile citite ale lui x
sunt, n ordine, 2, -3, -6, 4, 8, 16, 0;
b) Formulai un enun pentru problema dat;
c) Rescriei secvena folosind o structur repetitiv cu
test iniial.







Scrie forma general i schema logic pentru structura repetitiv cu test final.
(1 p)
Scrie principiul de execuie pentru structura ct timp. (1 p)

Parcurgeti secventa (1 p)
k 5; q=2;
pentru j k-4 , k*k execut
q=q *10;
j= j+5;
4. Fie pseudocodul alturat :
Citeste n
dac n=1 sau n=2 atunci
t1
altfel
a1
b1
i2
ct timp i<n execut
ta+b
ba
at
ii+1

scrie t
a) Ce se va afia pentru n=6?

b) Rescriei algoritmul, folosind o structur repetitiv cu
numr cunoscut de pai
5. Fie pseudocodul alturat :
Citete x, n
y1
contor x
Ct timp contor>0 execut
yy*n
contorcontor-1
Sfrit ct timp
Scrie y
a) Ce valoare y se va afia pentru x=3 i n=3?

b) Ce realizeaz aceast secven?



scrie q;

Fie urmtoarea secven de program:
S 0; p 1; i 1; (1 p )
do
p p * i;
s s + p;
i i + 2;
while( i>n);
scrie p;
S se rescrie aceast secven folosind structura repetitiv de tip while-do ;
(1 p)
S se rescrie aceast secven folosind structura repetitiv de tip pentru.
(1 p)

Se d un numr natural n i un numr x, dac x este numr par si divizibil cu 3 s se calculeze suma primelor n
numere naturale, dac x este impar s se calculeze produsul primelor n numere naturale.
(2 p)

Scrie forma general i schema logic pentru structura repetitiv cu test iniial.
(1 p )

Scrie principiul de execuie pentru structura repet. (1 p )

Parcurgeti secventa (1 p )
k 4; s=5;
pentru j k-3 , k*k execut
s=s*6;
j=j+3;
scrie s;
Fie urmtoarea secven de program:
P 0; a 1; i 1;
ct timp i <= 4 execut (1 p )
p p + a*i;
a a * n;
i i + 1;

scrie p;
S se rescrie aceast secven folosind structura repetitiv
de tip do-while, (1 p )
S se rescrie aceast secven folosind structura repetitiv
de tip pentru. (1 p )

5) Se d un numr natural n i un numr x, dac x este numr negativ, s se calculeze suma primelor n
numere naturale, dac x este pozitiv si este divizibil cu 4, s se calculeze produsul primelor n numere
naturale. (2 p)




**




Cum se scrie corect si ce va afia pe ecran n urma execuiei urmtoarelor
secvene de program?
x:=15; if x>0 then scrie(0) else if x=5 then scrie(1) else scrie(2);
0,5 p
b) dac de la tastatur se citesc valorile 5 i - 4 ce va afisa programul ?
var x, y ,s,:integer; read(x,y); s:=0; if (x>y) sau (y>0) then s:=floor(y/x); x:=x+y;
else if y<0 then s:=pow(y,x); y:=y-x; end; scrie(s, ,x, ,y) end. 0.5p)


Fiind dat expresia de mai jos, scrieti in pseudocod algoritmulde rezolvare :(x
intreg).
0, dac xs-1
F(x) = x
2
, dac 0sxs2
x+1, dac 3sxs5
x-1, dac 5<xs10
2p)
Se considera urmatorul program:
var a,b,c,medie:integer;
citeste a,b,c;
medie:=(a+b+c) / 3;
case (medie )
1..4:scrie(F.rau);
5..7:scrie(Mediocru);
8..9:scrie(Bine);
10:scrie(F.bine);
else scrie (EROARE !);
Ce se va afisa pentru a=5, b=6, c=8. si dati un exemplu de valori pentru a, b, c,
pentru care se va afisa mesajul Bine. 1p)
Scrieti in limbaj C++
1p)


. Se da un numar intreg format din exact patru cifre si se cere sa se tipareasca:
suma cifrelor lui, produsul cifrelor lui. Pentru numerele cosntruite astfel: din cifra
miilor si cifra unitatilor se va construi un numar; din cifra zecilor si cifra sutelor cel
de-al doilea numar; iar dintre cele doua se va tipari cel mai mare.
Ex: pentru numarul 4159 se vor tipari datele: suma= 19, produs=180, cel mai mare
dintre 49 si 51 este 51

3p)


1) . Cum se scrie corect si ce va afia pe ecran n urma execuiei urmtoarelor
secvene de program :
a) a=1,b=1,c=4; if a>=1 then if b>=2 then if c>=3 then scrie(3) else
scrie(2) else scrie(1); 0.5p)
x= 7 i y=3; if x>y then t=x; x=y; y=t p=1; d=y-x; if d% 2=1 then p=ceil(p/d); else
p=p*d; d=d+1 end; scrie(p,d); 0.5p)

2) Fiind dat urmtoarea expresie, scrieti in pesudocod algoritmulde
rezolvare:

>
<= < +
s <
s
=
7 * 2
7 5 1
, 5 5
5 0
) (
2
x dac x
x dac x
x dac x
x dac
x F

2p)

3) . Ce va afia programul urmtor, dac de la tastatur se introduc n ordine
numerele 2, 6 i 8?
Var x, y, z, m: integer;
citeste(x, y, z); m := (x+y+z)/ 3;
case (m)
1 .. 4: scrie (Corigent);
5 .. 7: scrie (Mediocru);
8 .. 9: scrie (Satisfctor);
10: scrie (Foarte bine)
else scrie (EROARE !);
Ce se va afisa pentru a=2, b=6, c=5. si dati un exemplu de valori pentru a, b, c,
pentru care se va afisa mesajul satisfacator. 1p)
Scrieti in limbaj C++
1p)


**
Evaluare
Scrie forma general i schema logic pentru structura repetitiv cu test final.

Scrie principiul de execuie pentru structura ct timp.

De cte ori secvena urmtoare afieaz litera a?
k 5;
pentru j k-4 , k*k , 5 execut
scrie a;
sf. pentru;



Fie urmtoarea secven de program:
S 0; p 1; i 1;
repet
p p * i;
s s + p;
i i + 1;
pn cnd i>n;
scrie p;
S se rescrie aceast secven folosind structura repetitiv de tip ct timp, apoi structura
repetitiv de tip pentru.

Fie un numr natural n. S se calculeze i s se afieze valoarea sumei
S = 1 +
2
2
1
+
2
3
1
+ ... +
2
1
n
. (Schema logic, pseudocod cu Repet, pseudocod cu Ct timp)

Se citesc numere naturale pn la ntlnirea numrului 0. S se determine i s se afieze
suma numerelor pare dintre numerele citite. (Pseudocod)

Se citete un numr natural n. S se calculeze i s se afieze produsul cifrelor lui.
(Pseudocod)

S se afieze toate numerele de 3 cifre care mprite la 9,11 i 13 dau de fiecare dat restul
5.

Scrie forma general i schema logic pentru structura repetitiv cu test iniial.

Scrie principiul de execuie pentru structura repet.

De cte ori secvena urmtoare afieaz litera C?
k 4;
pentru j k-3 , k*k , 4 execut
scrie C;
sf. pentru;

Fie urmtoarea secven de program:
P 0; a 1; i 1;
ct timp i <= 4 execut
p p + a*i;
a a * n;
i i + 1;
sf ct timp;
scrie p;


S se rescrie aceast secven folosind structura repetitiv de tip repet, apoi
structura repetitiv de tip pentru.

Fie un numr naural n. S se calculeze i s se afieze suma cifrelor lui. (Pseudocod)

Se citete un numr natural n. S se calculeze valoarea expresiei
E =
2
1
+
3
2
+ +
1 + n
n
. (Schema logic, pseudocod cu Repet, pseudocod cu Ct timp)

Se citesc numere ntregi pn la ntlnirea numrului 1. S se calculeze i s se afieze
produsul numerelor divizibile cu 3 dintre numerele citite. (Pseudocod)





**. Se da un numar intreg format din exact patru cifre si se cere sa se tipareasca: suma
cifrelor lui, produsul cifrelor lui.
Pentru numerele construite astfel: din cifra sutelor si cifra unitatilor se va construi
un numar; din cifra zecilor si cifra miilor cel de-al doilea numar; iar dintre cele doua
se va tipari cel mai mare.
Ex: pentru numarul 9321 se vor tipari datele: suma= 15, produs=54, cel mai mare
dintre 31 si 29 este 31 3p)
Se consider un numr natural
deteminai numrul de cifre ale acestui numr; (1p)
determinai numrul format din cifrele numrului iniial fr cifra 1; (1p)
determinai cea mai mic cifr din numr; (1p)
determinai inversul numrului; (1p)
Se citesc n numere naturale. S se determine, folosind structura repetitiv repet ct
timp numrul format din ultima cifr a fiecrui numr din ir. Se consider c n<9. (3p)
Ce se afieaz pentru n=10? (1p)
s=0; i=1; p=1;
Repet
p=p*i;
s=s+p;
i=i+1;
ct timp i<n;
scrie s;
**.Se consider urmtorul algoritm descris n pseudocod:
Date de intrare:n natural,a ntreg;
Date de ieire:S ntreg;


Date de manevr:i natural;
Citete n;
i0; S0;
Ct_timp i<n execut
{Citete a;
ii+1;
SS+a;}
Scrie S;
a)Urmrii pas cu pas algoritmul pentru valorile:4,5,1,10,4.
b)Care este efectul acestui algoritm?
c)Scriei o secven echivalent care s utilizeze structura repetitive execut ct_timp.
d)Ce asemnri /deosebiri exist ntre cele dou instruciuni repetitive?



**
a, b ntregi //date de intrare
aux ntreg //date de manevra
citeste a, b
aux = a
a = b
b =aux
scrie a, b

Explicarea algoritmului:
Pentru a interschimba valorile, se foloseste o variabila auxiliara, care preia valoarea
lui a, apoi a ia valoarea lui b, urmnd ca n final b sa ia valoarea lui aux, adica valoarea lui
a avuta initial. Algoritmul de interschimbare se mai numeste si Regula celor trei pahare,
deoarece este necesara o a treia variabila pentru a face interschimbarea.

**
Evaluare 2
I. Instructiunea de atribuire:
-sintaxa;(0.25p)
- principiul de functionare;(0.5p)
-un exemplu; (0.25p)




II. Se citesc de la tastatura doua valori intregi.
Realizati un algoritm care sa afiseze maximul dintre aceste doua valori.(2p)
0,5 pct citirea datelor de intrare
1,5 pct-rezolvarea corecta a cerintei
III. Realizati un algoritm care sa afiseze toti divizorii impari ai unui numar n
natural dat de la
tastatura.(3p)
0,5pct citirea datelor de intrare
1,5 pct secventa prin care se determina divizorii
1 pct - secventa prin care se determina proprietatea de divizor impar


I. Alegeti o instructiune pe ramuri si discutati urmatoarele aspecte:
-sintaxa;(0.25p)
- principiul de functionare;(0.5p)
-un exemplu; (0.25p)


I. Se citesc de la tastatura doua valori intregi.
Realizati un algoritm care sa afiseze minimul dintre aceste doua valori.(2p)
0,5 pct citirea datelor de intrare
1,5 pct-rezolvarea corecta a cerintei




II. Realizati un algoritm care sa afiseze numarul de divizori pari ai unui numar
n natural dat de la tastatura.(3p)
0,5pct citirea datelor de intrare
1,5 pct secventa prin care se determina divizorii
1 pct - secventa prin care se determina numarul de divizori pari
Nr.I

Incercuii rspunsurile adevrate pentru subiectele de la 1 la 6.
Cunoatem patru structuri algoritmice:
structura liniar, structura
secvenial, structura selectiv i
structura repetitiv.
a) da;
b) nu, sunt 5, exist si structura
alternativ.;
c) nu sunt 3, structura secvenial este
numit si liniar iar cea selectiv si
alternativ;

Transpunerea grafic a unui algoritm
folosind figuri geometrice numite
blocuri este:
a) schem logic;
b) pseudocod;
c) program;
d) algoritm;

Urmtoarea structur:
Dac condiie indeplinit
atunci instr1
sfrit dac;
este pseudocod pentru:
a) structura liniar;
b) structura repetitiv cu numr
cunoscut de pai;
c) structura alternativ cu ramur
vid;
d) structura alternativ.
4. Algoritmul este :
a) succesiune de operaii infinite;
b) succesiune de operaii pentru
rezolvarea unei probleme oarecare;
c) o noiune ce nu poate fi descris;
d) folosit numai la informatic i
matematic;

5. Blocul pentru introducerea datelor
este de forma unui:
a) ptrat
6. Se d urmtorul algoritm scris n
pseudocod. S se precizeze ce execut
acest algoritm pentru valorile lui x -3 i


b) romb
c) dreptunghi
d) paralelogram
5
a) -3 5 b) -3 0 c) 1 0
1 5 1 5 -3 5
nceput
x,p,s: integer;
citete x;
p:=1; s:=0;
dac x<0 atunci p:=p*x
altfel s:=s +x
sfrit dac;
scrie p, s;
stop
7. S se scrie schema logic i pseudocodul pentru calculul valorii expresiei tiind c a este
o constant:
x
2
+ 5x+3 dac x<-10;
E(x)= xa dac -10<=x<10;
2x+3 dac x>=10


8. Se citete un numr ntreg. Dac acesta este par s se determine maximul dintre dou
numere reale, iar dac nu este par s se afieze suma a dou numere naturale, doar dac
este divizibil cu 5. (schema logic sau pseudocod ).
9. Pentru urmtorul algoritm:
- care este rezultatul n urma execuiei
- transcrie-l sub form de schem logic


x,z,m,n,a,b: ntregi;
n3; bn; mb; xb+4;
daca b=5 atunci inceput ab; bb-1; sfarsit
altfel inceput bb-1; ab; sfarsit;
ya;
daca (y=a) and (m=n) atunci scrie 1
altfel scrie 0;
n a+b; b b-1;
daca n= -(m-x) atunci scrie 1
altfel daca (a=0) or (b<>0) atunci scrie 0
altfel scrie 1
stop






Nr.II

Incercuii rspunsurile adevrate pentru subiectele de la 1 la 6.
1. Avem urmtoarele proprieti ale
algoritmilor: finitudinea, claritatea,
generalitatea, corectitudinea
a) da;
b) nu, sunt 5 i anume
eficiena;
c) da, structuralitatea are
cele dou principii de
elaborare a algoritmilor;
4. Dreptunghiul n schema logic
reprezint blocul:
a) Bloc de decizie
b) Bloc de intrare
c) bloc de calcul
d) de nceput a algoritmului

2. Descrierea unui algoritm folosind
text sub forma unor fraze
convenionale cum ar fi scrie,
citete, dac, atunci, altfel,
etc reprezint:
a) schem logic;
b) pseudocod;
c) program;
d) algoritm;

5. Se d urmtorul algoritm scris n
pseudocod. S se precizeze ce execut
acest algoritm pentru n=5
p, s, n:integer;
citeste n;
p:=1; s:=0;
dac n mod 5 =0 atunci p:=p*n
altfel s:=s +n
sfrit dac;
s:=s+n;
p:=p*n;
scrie p,s;
stop
a) 1 7 b) 7 14 c) 1 0
3. Urmtoarea structur:
Dac condiie indeplinit
atunci instr1
6. Blocul de decizie este reprezentat
prin:
a) ptrat


Altfel instr2
sfrit dac;
este pseudocod pentru:
a) structura repetitiv cu numr
cunoscut de pai;
b) structura alternativ cu 2 cazuri
c) structura secvenial
d) structura alternativ cu ramur
vid
b) romb
c) paralelogram
d) dreptunghi


.

7. S se scrie schema logic i pseudocodul pentru calculul valorii expresiei tiind c b
este o constant:
x
3
+ 2x dac x>=7;
E(x)= x+b dac -7<=x<7;
x-5 dac x < -7;

8. Se citete un numr ntreg. Dac acesta este pozitiv s se afieze media geometric a
dou numere, n caz contrar s se calculeze i s se afieze produsul a 2 numere ntregi,
doar dac sunt pare.
9. Pentru urmtorul algoritm:
- care este rezultatul n urma execuiei
- transcrie-l sub form de schem logic
x,z,m,n,a,b: ntregi;
n5; bn; mb; xb+4;
daca b=5 atunci inceput ab; bb-1; sfarsit
altfel inceput bb-1; ab; sfarsit;


ya;
daca (y=a) and (m=n) atunci scrie 1
altfel scrie 0;
n a+b;
b b-1;
daca n= -
(m- x)
atunci scrie 1
altfel daca (a=0) or (b<>0) atunci scrie 0
altfel scrie 1
stop

1. Scriei 2 programe care, folosind dou structuri repetitive la alegere, afieaz numerele
naturale din intervalul [a, b].
(2p)
. 2) Ce afieaz secvenele de program de mai jos?
(3p)


a=3627; k=0;
do{
c=a % 10; a=a/10;
if(c>a%10) k++;
} while(a);
Scrie k;

k:=0;
for(g=3;g<8;g++)
for(u=2; u<6;u++)
if (g>u)k++;
cout<<k;






























Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau nu.
Un numar este prim daca nu are divizori decat pe 1 si pe el insusi.Un numar d este divizor pentru n
daca restul impartirii lui n la d este 0.Pentru a afla restul impartirii vom folosi operatorul mod(%)
citeste n
prim=1
pentru d=2,n/2 executa
daca n mod d =0 atunci
prim=0
daca prim=1 atunci
scrie "este prim"
altfel
scrie"nu este prim"
sfarsit

Sa se afiseze suma cifrelor unui numar n
Ultima cifra este data de restul impartirii numarului la 10 (n mod 10).Catul impartirii il aflam folosid
operatorul div
citeste n
s=0
cat timp n>0
{
s
c=n mod 10
s=s+c
n=n div 10
}
scrie
Se citesc mai multe numere pana se tasteaza zero. Sa se afiseze numerele prime.
citeste n
while n<>0
prim=1
pentru d=2,n/2 executa
daca n mod d =0 atunci
prim=0
daca prim=1 atunci
scrie n ,
citeste n

Presupunem ca numarul citit este prim
Pentru toate valorile de la 2 pan la n
Se testeaza daca exista cel putin un divizor. daca DA atunci
numarul nu este prim .
testam daca variabilla prim nu si-a schimbat valoarea, daca
DA atunci numarul nu este prim





























Sa se afle daca un numar este perfect
Un numar este perfect daca este egal cu suma divizorilor sai, inclusiv 1, dar fara el insusi.Exemplu:
6=1+2+3 este numar perfect
citeste n
s=0
pentru d=1,n/2
daca n mod d = 0 atunci
s=s+d
daca s=n atunci
scrie "este numar perfect"
sfarsit

Sa se afle cifra maxima a unui numar (cea mai mare cifra a unui numar)
start
citeste n
max=-1
cat timp n>0
{
c=n mod 10
daca max<c atunci
max=c
n=n div 10
}
scrie max
sfarsit

Se citeste un numar format din mai multe cifre. sa se afiseze un mesaj daca
numarul citit este palindrom
citeste n
inv=0
nr=n
cat timp n>0
{
inv=inv*10+n%10
n=n div 10
}
if(nr==inv)
scrie numarul citit este palindrom

-Memoram o valoare pentru n
-Initializam variabila invers cu zero . Aceasta variabila
va retine valoarea vazuta in oglinda. Ex: n=23432
inv=23432
-Memorez in variabila numar valoarea lui n pentru a
nu se pierde cu div si mod
-se adauga in inv ultima cifra din n
-se elimina o cifra din n

-compar numarul initial cu cel inversat. Daca DA atuni
este palindrom














Se citesc mai multe numere pana se citeste cifra 0. Sa se afiseze toate
numerele citite divizibile cu 5
citeste n
p=0
cat timp n<>0
{
daca n%5==0 atunci
scrie n
citeste n
}
scrie p

-Cat timp n diferit de zero
Initializez variabila p=0 care retine de cate ori apare un
numar divizibil cu 5
Testez daca numarul citit are divizorul 5
Daca DA sa-l afiseze
Se mai citeste un numar diferit de zero
Se citesc mai multe numere pana se citeste cifra 0. Sa se afiseze numerele de
pe pozitii pare
citeste n
p=1
cat timp n<>0
{
daca p%2==0 atunci
scrie n
citeste n
}



Citeste un nr pana se tasteaza zero
Initializez variabila pozitie cu 1
Testez daca pozitia este para daca DA afiseaza numarul citit
Mai citeste un alt numar


**
Fie x un numar ntreg format din exact 5 cifre. Sa se afiseze cifra unitatilor si cea a
sutelor, pe acelasi rnd, cu un spatiu ntre ele.


Exemplu: daca pentru x se citeste valoarea 12345 se va afisa 5 3.

x ntreg //date de intrare
c1,c2 ntregi //date de manevra
citeste x //retin cifra unitatilor n c1
c1 = x % 10
x = x/100 //elimin cifra unitatilor si a zecilor
c2 = x % 10 //retin cifra sutelor n c2
scrie c1, c2


Explicarea algoritmului:
Pentru a obtine cifrele unui numar trebuie sa efectuam mpartiri la 10. Am aratat ca
operatorul % returneaza restul mpartirii. n cazul n care un numar se mparte la 10,
atunci restul este chiar ultima cifra, iar ctul mpartirii este numarul fara ultima cifra. n
cazul mpartirii la 100 restul returneaza ultimele 2 cifre, iar ctul este numarul fara
ultimele 2 cifre. Pentru a afisa cifra sutelor este suficient sa eliminam ultimele 2 cifre (prin
mpartire la 100) si sa afisam ultima cifra a numarului n
**

Cifra control
Cerinta: determinati cifra de control al unui numar citit de la tastatura (suma cifrelor
respectivului numar, pana cand ajunge la rang de unitate)
Ex: 1824- 1+8+2+4=15; 1+5=6

Rezolvare:





Cifre ordonate
Cerinta: verificati daca un numar citit de la tastatura are cifrele ordonate crescator.
Rezolvare:

Cifre pare
Cerinta: verificati daca un numar citit de la tastatura are toate cifrele pare
Rezolvare:




Cmmdc
Cerinta: aflati cmmdc-ul dintre doua numere
Rezolvare

Metoda 1:

Nr. deosebit
Cerinta: verificati daca un numar citit de la tastatura este deosebit (este egal cu suma
dintre alt numar m si suma cifrelor numarului m)
Rezolvare:





Nr. perfect
Cerinta: verificati daca un numar citit de la tastatura este perfect (un numar este perfect
daca este egal cu suma cifrelor sale)
Rezolvare:





Nr. prim
Cerinta: verificati daca un numar este prim
Rezolvare

Metoda 1:

Metoda 2:




Palindrom
Cerinta: afisati mesajul da daca un numar este palindrom ( este egal cu inversul sau)
Rezolvare:



Suma cifrelor
Cerinta :aflati suma cifrelor unui numar natural, citit de la tastatura.
Rezolvare:







Probleme rezolvate in C++

//se citeste un numar zecimal
//sa se calculeze in baza de numeratie q

#include <iostream>
int main()
{
int n,nq,n10,q,p;
cout<<"numarul zecimal= ";cin>>n;
cout<<"baza= ";cin>>q;
nq=0;p=1;
while(n!=0)
{
nq=nq+p*(n%q);
n=n/q;
p=p*10;
}
cout<<"nr= "<<nq;

}

#include <iostream>
#include<math.h>
using namespace std;
int main()
{
//Pasul 1 declararea dI si iesire
int a,b, S,P,Ma,Mg;
//P2 citirea DI


cout<<" ce valoarea are a ?";
cin>>a;
cout<<"ce valoare are b ?";
cin>>b;
//P3 rezolvarea problemei
S=a+b;
P=a*b;
Ma=S/2;
Mg=sqrt(P);
//P4 afisarea rezultatelor
cout<<"suma este: "<<S<<endl;
cout<<"produsul celor doua valori este : "<<P<<endl;
cout<<"media aritmetica: "<<Ma<<endl;
cout<<"media geometrica: "<<Mg;
return 0;
}

**
#include <iostream>
#include<math.h>

using namespace std;

int main()
{int a,b,c;
cout<<"a=";cin>>a; cout<<"b=";cin>>b;
c=a%b;

cout<<c;
return 0;
}

**
#include <iostream>

using namespace std;

int main()
{int a,b,c;
cout<<"a=";cin>>a; cout<<"b=";cin>>b;
c=a%b;
cout<<c;
cout<<"cati octeti ocupa variabila c:"<<endl;
cout<<sizeof(c);
cout<<"cati octeti ocupa tipul de date intregi (int) ?:"<<endl;
cout<<sizeof(int);
cout<<"cati octeti ocupa tipul de date shortint(intregi si pozitive) ?:"<<endl;
cout<<sizeof(short int);
cout<<"cati octeti ocupa tipul de date long double: (reale ) ?:"<<endl;
cout<<sizeof(long double);
cout<<"cati octeti ocupa tipul de date char (de tip caracter) ?:"<<endl;


cout<<sizeof(char);


return 0;
}
**

#include <iostream>
#include<math.h>

using namespace std;

int main()
{int a,b,c;
cout<<"a=";cin>>a; cout<<"b=";cin>>b;
c=a%b;

cout<<c;
return 0;
}


** se citesc coordonatele punctelor A(x1,y1) si B(x2,y2)//sa se calculeze lungimea
segmentului AB si mijlocul lui AB

#include <iostream>
#include<math.h>

using namespace std;

int main()
{float x1,x2,y1,y2,L,xm,ym;
cout<<"se citeste punctul A de pe abscisa :";
cin>>x1;
cout<<"se citeste punctul A de pe ordonata :";
cin>>y1;
cout<<"se citeste punctul B de pe abscisa :";
cin>>x2;
cout<<"se citeste punctul B de pe ordonata :";
cin>>y2;

L=sqrt(pow((x1-x2),2)+pow((y1-y2),2));
xm=(x1-x2)/2+x1;
ym=(y1-y2)/2+y1;
cout<<"lungimea segmentului AB="<<L<<endl;
cout<<"mijlocul segmentului se afla la coordonatele "<<x1+xm<<","<<y1+ym<<endl;
return 0;
}



**
//se citesc s secunde. sa se transforme in ore minute si secunde

#include <iostream>

using namespace std;

int main()
{
long int z,o,s,h,m,sec;

cout<<"gandeste-te la un numar: ";cin>>s;
cout<<"se citesc "<<s<<" secunde care inseamna: ";

h=s/3600; //se transforma secundele in ore
z=h/24; // formeaza nr. zile din nr. ore
o=h%24; //restul de ore dintr-o zi
m=s%3600/60; //cate minute au ramas
sec=s%3600%60; //restul de secunde ramase
cout<<z<<"zile"<<o<<" ore "<<m<<" minute "<<sec<<"secunde";

return 0;
}
**

** //se citeste un numar natural nenul din 3 cifre ,// sa se afiseze cifrele separate si suma
lor
#include<iostream>


int main()
{ long nr,a,b,c,s=0;
cout<<"Se citeste un numar format din 3 cifre: ";
cin>>nr;
a=nr%10; //extragem cifra unitatilor (ultima cifra)
nr=nr/10; //reducem numarul cu o cifra mai putin
b=nr%10; //cifra zecilor extrasa dupa ce am eliminat o cifra din nr
nr=nr/10;
c=nr%10;
cout<<"am separat nr in cifre: "<<endl;
cout<<c<<" ; "<<b<<" ; "<<a<<endl;
cout<<"suma cifrelor extrase este: "<<a+b+c<<endl;
return 0;
}
** //se citesc 2 valori a si b//sa se calculeze urmatoarele functii matematice



#include<iostream>
#include<math.h>

int main()
{ float a,b;
cout<<"se citesc doua valori: ";
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"pentru valorile "<<a<<" si "<<b<<" calculam urmatoarele functii:" <<endl;
cout<<" modulul lui " <<a<<" este: "<<abs(a)<<endl;
cout<<a<<" la puterea "<<b<<" este: "<<pow(a,b)<<endl;
cout<<a<<" rotunjit la cel mai aproape intreg mai mare: "<<ceil(a)<<endl;
cout<<a<<" rotunjit la o valoare mai mica: "<<floor(a)<<endl;
cout<<"sinus de "<<a<<" este: "<<sin(a);

}

// Se citeste n. Sa se afiseze toti divizorii
#include<iostream.h>
int main()
{
int n,i,k;
cout<<"valoarea lui n ";
cin>>n;
k=0;
cout<<" divizorii lui "<<n <<endl;
cout<<"1"<<endl;
for(i=2;i<=n/2;i++)
if(n%i==0){ k=k+1;
cout<<i<<" "<<n<<"%"<<i<<"="<<n%i<<endl; }
cout<<"sunt "<<k <<" divizori";
}

// Se citeste n. sa se genereze toate perechile (a,b) cu proprietatea ca a|b

#include<iostream.h>
int main()
{
int n,i,j;
cout<<"valoarea lui n ";
cin>>n;
for(i=1;i<=n;i++)
{cout<<"valoarea lui i= "<<i<<endl;
for(j=i; j<=n-1;j++)
{cout<<"valoarea lui j="<<j;
if(j%i==0)
cout<<" perechea (" <<i<<" , " <<j<<" ) "<<endl;


}
}
}



Structuri alternative



-Structura alternativa dirijeaza executia unei secvente de instructiuni S1 sau S2 in functie de valoarea conditiei
logica











Tema: se citesc 2 numerea si b:
Stabiliti: a) valoarea maxima, modulul diferentei , paritatea lor;
b) F(x)=max |2a-1|
9-x^2



Instructiunea de selectie CASE



Structura de selectie dirijeaza executia unei secvente de instructiuni (S1, S2, .Sn) in functie de valoarea
unui selector











IF(cond_logica)
S1;
ELSE
S2;
Testare conditie_logica
Daca Adevarat
atunci
Secventa S1 Secventa S2
alffel
switch (selector)
{ case 1: S1; break;
case 2: S2; break;
case 3: S3; break;
..........................
case n: Sn; break;
default: cout<<"ati tastat o optiune inexistenta";
}




**Exemplu
// se citeste de la tastatura x si y
// programul calculeaza operatii arimtmetice in functie de optiunea utilizatorului
Se citesc 2 variabile a si b. Sa se afiseze ce operatie se doreste a se executa in functie de
simbolul citit utilizat ca operator.

#include <iostream>
using namespace std;
int main()
{ char oper;
int a,b;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"Introduceti un operator aritmetic: + , - , / , * sau % "<<endl;
cin>>oper;
cout<<"\n ai ales operatorul :"<<oper; // \n echivalent cu<<endl; (new line)trece la linie noua
switch (oper) // in functie de valoarea variabilei OPER se va executa o instructiune;
{
case('+'):
cout<<"\n Operatorul de adunare!\n"<<"a+b= "<<a<<"+"<<b<<"="<<a+b;
break;
case ('-'):
cout<<"\n Operatorul de scadere!\n"<<"a-b= "<<a<<"-"<<b<<"="<<a-b;
break;
case ('*'):
cout<<"\n Operatorul de inmultire!\n"<<"a*b= "<<a<<"*"<<b<<"="<<a*b;
break;
case ('/'):
cout<<"\n Operatorul de impartire!\n"<<"a/b= "<<a<<"/"<<b<<"="<<a/b;
break;
case ('%'):
cout<<"\n Operatorul rest!\n"<<"a%b= "<<a<<"%"<<b<<"="<<a%b;
break;
default:
cout<<"\n Operator ilegal!\n";
}
return 0;
}


**. Sa se afiseze ce program sapatamanal avem in functie de o zi citita:

#include <iostream>
#include<string.h>
using namespace std;



int main()
{
int zi;
cout<<"ce zi este astazi? "; cin>>zi; //s-a citit selectorul zi

switch (zi) {
case (7):
cout<<"\n este duminica si stai acasa";
break;
case (2):
cout<<"\n este o zi in cursul sapatamanii si mergi la cursuri";
break;
case (6):
cout<<"\n Este sambata si mergi la bunici";
break;
default:
cout<<"\n Merg la lucru";
}
return 0;
}

**
#include <iostream>

using namespace std;

int main()
{int x,y,E,T,S,K;
cout<<"x=";cin>>x; cout<<"y=";cin>>y;

if(x%2==0 && y/3!=0 && y/3!=0 && y/3!=0)
cout<<x<<"este par si "<<y <<" este divizibil cu 3 ,5 si 7" ;
else
cout<<x<<"nu este par si "<<y <<" nu este divizibil cu 3 ,5 si 7" ;
return 0;
}

**//se citesc 2 unghiuri exprimate in grade,minute si secunde
//sa se calculeze suma celor 2 unghiuri in grade min si sec

#include<iostream.h>
#include<math.h>
using namespace std;
int main()
{ float ag,am,as,bg,bm,bs,sg=0,sm=0,ss;
cout<<"gradele primului unghi ";
cin>>ag;
cout<<"minutele primului unghi ";
cin>>am;


cout<<"secundele primului unghi ";
cin>>as;
cout<<"gradele celui de-al doilea unghi ";
cin>>bg;
cout<<"minutele celui de-al doilea unghi ";
cin>>bm;
cout<<"secundele celui de-al doilea unghi ";
cin>>bs;
ss=as+bs;
if(ss>60) {ss=ss-60;
sm=1;}
sm=sm+am+bm;
if(sm>60) {sm=sm-60;
sg=1;}
sg=sg+ag+bg;
if(sg>360) sg=sg-360;
cout<<"suma gradelor celor 2 unghiuri este: "<<sg<<" grade "<<endl;
cout<<sm<<" minute si "<<ss<<" secunde"<<endl;

}

**
//se citesc 3 numere a,b,c//sa se afiseze daca este triunghi: echilateral,isoscel,dreptunghic
sau oarecare
#include<iostream>
using namespace std;
int main()
{ int a,b,c;

cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"c="; cin>>c;
if(a==b && b==c) cout<<"triunghi echilateral";
else if(a==b || b==c || a==c)cout<<"triunghi isoscel";
else if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)
cout<<"triunghi dreptunghic";
else cout<<"triunghi oarecare";

}


Sa se scrie un program care sa rezolve ecuatia de grad II: ax2+bx+c=0, unde a, b, c
apartin lui R.
#include<iostream>
#include<math.h>
int main( )
{


int a,b,c;
float x1,x2,delta,preal,pimag;
cout<<"Dati valoarea lui a = ";
cin>>a;
cout<<"Dati valoarea lui b = ";
cin>>b;
cout<<"Dati valoarea lui c = ";
cin>>c;
if(a==0)
cout<<"Ecuatie de gradul I"<<"\n";
else
{
delta=b*b-4*a*c;
if(delta >= 0)
{
cout<<"Radacini reale: ";
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
cout<<"x1 = "<<x1<<" x2 = "<<x2;
}
else
{
cout<<"Radacini complexe :";
delta=-delta;
preal=-b/(2*a);
pimag=sqrt(delta)/(2*a);
cout<<"x1 = "<<preal<<" + i*"<<pimag<<"\n";
cout<<"x2 = "<<preal<<" - i*"<<pimag;
}
}
}

- S se rezolve un sistem de dou ecuaii liniare cu dou necunoscute:
a1*x+b1*y=c1
a2*x+b2*y=c2
Soluiile sistemului de ecuaii sunt:
x=dx/d=(b2*c1-b1*c2)/(a1*b2-b1*a2)
y=dy/d=(a1*c2-a2*c1)/(a1*b2-b1*a2)
#include<iostream>
void main(){
int a1, b1, c1, a2, b2, c2, d, dx, dy;
float x, y;
cout<<"a1="; cin>>a1;
cout<<"b1="; cin>>b1;
cout<<"c1="; cin>>c1;
cout<<"a2="; cin>>a2;
cout<<"b2="; cin>>b2;
cout<<"c2="; cin>>c2;
d=(a1*b2-b1*a2);
dx=(b2*c1-b1*c2);
dy=(a1*c2-a2*c1);
if (d==0)
if (dx==0)


cout<<Sistem nedeterminat.;
else
cout<<Sistem incompatibil.;
else{
x=dx/d;
y=dy/d;
cout<<x=<<x<<endl;
cout<<y=<<y;
}
}

Structuri repetitive
Structurile repetitive pot fi contidionate anterior sau cu test initial, conditionate posterior sau cu test final si cu
numar cunoscut de pasi.
Structura repetitiva cu numar cunoscut de pasi are urmatorul principiu:
- se evalueaza expresia 1;
- se atribuie variabilei contor valoarea expresiei exp1;
- se evalueaza expresia 2;
- daca valoarea variabilei contor este mai mare decat valoarea expresiei exp2, atunci se iese din
instructiunea repetitiva;
- daca valoarea variabilei contor este mai mica sau egala decat valoarea expresiei exp2, atunci se executa
instructiunea si incrementeaza (se mareste cu o unitate) valoarea variabilei contor, dupa care se revine la
pas 3 ( evaluarea expresiei exp2 ).
for (i=exp1;i<=exp2;i++)
{
<I>;
}


- Structura repetitiva conditionata anterior are urmatorul principiu de executie:
- se evalueaza expresia logica
- daca la evaluare primeste valoarea adevarat, se executa secventa de instructiuni i (!atentie: numarul
minim de iteratii- de repetitii - in cazul instructiunii repetitive conditionate anterior este 0 )
- in caz contrar, se trece mai departe
while ( <L> )
{
<I>;
}



Structura repetitiva conditionata posterior are urmatorul principiu:
- se executa instructiunile (! atentie: numar minim de iteratii este 1)
- se evalueaza expresia
- daca valoarea expresiei este adevarata, se revine la primul pas
- in caz contrar, se iese din instructiunea repetitiva
do
{
<I>;
}
while ( <L> ) ;

Exemple:
Sa se calculeze n factorial( n!) , unde n este numar natural.
#include<iostream>
int main()
{
int n,p=1,i;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
p=p*i;
cout<<"n!="<<p;
}

Calculati produsul numerelor naturale impare mai mici sau egale cu o valoare data n
ex:pt n=8 p=1*3*5*7=105
#include<iostream >
int main()
{
int p,i,n;
cout<<"n=";cin>>n;
p=1;i=1;
while(i<=n)
{
p=p*i;
i=i+2;
}
cout<<"p="<<p;
}


- Sa se afiseze primii n termeni ai sirului lui Fibonacci;sirul are primii doi termeni
egali cu 1 si fiecare din urmatorii termeni este egal cu suma dintre
precedentul si ante-precedentul
#include<iostream >
int main()
{
int i,n;
long f,p,a;
cout<<"n=";cin>>n;
p=a=1;
cout<<a<<" "<<p<<endl;
for(i=3;i<=n;i++)
{
f=p+a;
cout<<f<<endl;
a=p;
p=f;
}
}
- Scrieti un program care afiseaza numarul de aparitii a unei cifre x intr-un numar
n;de ex daca citim n=2232 si x=2 se afiseaza numarul 3.
#include<iostream >
int main()
{
int n,n1,nr,x;
cout<<"n=";cin>>n;
cout<<"x=";cin>>x;
nr=0;
n1=n;
do
{
if(n1%10==x) nr++;
n1=n1/10;
}while(n1);
cout<<"cifra "<<x<<" apare de "<<nr<<" ori";
}
Verificati daca un numar natural x diferit de 0 si 1, este prim sau nu
#include<iostream >
int main()
{
int x,d,ok;
cout<<"x=";cin>>x;
ok=1;d=2;
while(d<=x/2 && ok)
{
if(x%d==0)
ok=0;
d++;
}
if(ok) cout<<"nr prim";


else cout<<"nr nu este prim";
}

- CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI EUCLID (metoda
impartirilor succesive)
#include<iostream>
int main()
{
int a,b,r;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
cout<<"cmmdc: "<<b;
}
CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI NICOMAHUS (metoda
scaderilor repetate)
#include<iostream >
int main()
{
int a,b,r;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
while(a!=b)
if(a>b) a=a-b;
else b=b-a;
cout<<"cmmdc: "<<b;
}
Sa se scrie un program tcare realizeaza trecerea unui numar din baza 10 in baza b, unde
b se citeste de la tastatura
#include<iostream >
int main()
{
long n,n1,b,aux,nr;
aux=nr=0;
cout<<"n=";cin>>n;
cout<<"b=";cin>>b;
n1=n;
do
{
aux=aux*10+n1%b;
n1=n1/b;
}


while(n1!=0);
cout<<aux<<endl;;
do
{
nr=nr*10+aux%10;
aux=aux/10;
}
while(aux);
cout<<"numarul "<<n<<" in baza "<<b<<" este: "<<nr;
}
Realizati un program care descompune in factori primi un numar n citit de la tastatura
#include<iostream >
int main()
{
int n,d=2,p;
cout<<"n=";cin>>n;
while(n>1)
{
p=0;
while(n%d==0)
{
p=p+1;
n=n/d;
}
if(p) cout<<d<<" la puterea "<<p<<endl;
d=d+1;
}
}
Sa se afiseze cifra maxima a unui numar citit de la tastatura
(cea mai mare cifra a unui numar)
#include<iostream >
int main()
{
int n,c,n1;
cout<<"n=";cin>>n;
c=0;n1=n;
do
{
if(c<n1%10)
c=n1%10;
n1=n1/10;
}while(n1);
cout<<"cifra maxima "<<n<<" este: "<<c;
}


- Se considera urmatorul sir de numere naturale: 1, 12, 123, 1234,...
Pentru un numar n citit de la tastatura determinati cate dintre primele n numere


din sir sunt divizibile cu 3.
n este cuprins intre 1 si 1000000000.
#include<iostream >
int main()
{
unsigned long n;
cin>>n;
if(n%3==0 || n%3==1)
cout<<2*(n/3);
else cout<<2*(n/3)+1;
}
-


//Se citesc mai multe numere pana cand se tasteaza cifra 0;//Sa se afiseze media cifrelor
pare

#include<iostream>
Int main()
{
int n,ma,x=0,s=0;
cout<<"Nr.= ";cin>>n;
while(n!=0)
{
if(n%2==0){
x++;
s=s+n;
}
cout<<"Nr.= ";cin>>n;
}
ma=s/x;
cout << "Media aritmetica = " <<ma<< endl;
}


?

#include<iostream>
Int main()
{
int x,p=0,n=0;
do
{
cout<<"Introduceti nr :";
cin>>x;
if(x>0)
p+=1;
else


n+=1;
} while(x!=0);
cout << "Ati introdus " <<p<<" nr. pozitive si "<<n<<" nr. negative."<<endl;
}



Ionel depune la banca o suma s. Dup ace afla care este dobanda d , ce suma se
capitalizeaza dupa n ani?
#include<iostream>
using namespace std;
int main()
{
int n,d,i;
float s;
cout<<"\n ce suma se depune? ";
cin>>s;
cout<<"\n ce dobanda pe an cu capitalizare?
";
cin>>d;
cout<<"\n pentru cati ani? ";
cin>>n;
for(i=1;i<=n;i++)
s=s+s*d/100;
cout<<"\n dupa "<<n<<"ani s-au cumulat "<<s<<"lei in banca: ";

return 0;
}


Se citesc 3 numere. Scrie un program care determina valoarea maxima

#include<iostream>
using namespace std;
int main()
{
int a,b,c,max;
cout<<"valoarea lui a: ";
cin>>a;
cout<<"valoarea lui b: ";
cin>>b;
cout<<"valoarea lui c: ";
cin>>c;
max=a;
if (max<b)
max=b;


if(max<c)
max=c;
cout<<"valoarea maxima este "<<max;
return 0;
}

Se citesc un numar natural n. Sa se calculeze suma cifrelor lui n.
#include<iostream>
using namespace std;
int main()
{
int n,i,s;
int nr;
cout<<"valoarea lui n; " ;
cin>>n;
s=0; nr=n;
while(n!=0)
{s=s+n%10; cout<<"s= "<<s<<" " ;
n=n/10; cout<<"n= " <<n<<endl;
}
cout<<"suma cifrelor lui "<<nr<<" este "<<s;

return 0;
}

Se citesc un numar natural n. Sa se calculeze suma cifrelor lui n( sa se afiseze numarul
vazut in oglinda.)
#include<iostream>
using namespace std;
int main()
{
int n,nr,s,c;
cout<<"valoarea lui n; " ;
cin>>n; nr=n;
s=0;
while(n!=0)
{ c=n%10; cout<<"c= "<<c<<" " ;
s=s*10+c; cout<<"s= " <<s<<" ";
n=n/10; cout<<"n= "<<n<<endl;
}
cout<<"numarul "<<nr<<" inversat este "<<s;

return 0;
}



Se citesc n numere . Sa se calculeze valoarea maxima
#include<iostream>
using namespace std;
int main()
{
int max,i,n,nr;
cout<<"cate numere se citesc? ";
cin>>n;
cout <<"primul numar citit "; // se initializeaza
maximul cu primul numar
cin>>max;
i=1;
while(i<n){cout<<"dam valoare urmatorului numar
";
cin>>nr;
if(max<nr)
max=nr;
i=i+1;
}
cout<<"valoarea maxima este "<<max;
return 0;
}