Sunteți pe pagina 1din 61

Cuprins

ALGORITMI. NOTIUNI GENERALE

Etapele rezolvarii unei probleme:

SCHEMA LOGICA

Descrierea algoritmilor cu ajutorul schemelor logice

1. De start şi de stop

4

5

8

9

9

2. De citire şi de scriere 9 De atribuire (de calcul) 10 De procedură 11
2. De citire şi de scriere
9
De atribuire (de calcul)
10
De procedură
11
De început de procedură
11
De sfârşit de procedură
11
Principiile de bază ale programării structurate
12
Structura secvenţială(secvenţa)
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ă schimbăm î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

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 da un numar intreg format din exact patru cifre si se cere sa se tipareasca: suma cifrelor lui, produsul
cifrelor l
ui
25
Evaluare 2
26
Nr.I
28
Incercuiţi răspunsurile adevărate pentru subiectele de la 1 la 6
28
Început
29
Nr.II
31
Incercuiţi răspunsurile adevărate pentru subiectele de la 1 la 6
31
Sa se verifice daca un numar n diferit de 0 sau 1 este prim sau
34
Se citesc mai multe numere pana se tasteaza zero. Sa se afiseze numerele
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 rând, cu
un spatiu între
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

  48 Instructiunea de selectie “CASE” 48 Se citesc 2 variabile a si b. Sa se

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

50

50

**//se citesc 2 unghiuri exprimate in grade,minute si secunde

citesc 2 unghiuri exprimate in grade,minute si secunde sa se calculeze suma celor 2 unghiuri in

sa se calculeze suma celor 2 unghiuri in grade min si sec

se citesc 3 numere a,b,c//sa se afiseze daca este triunghi: echilateral,isoscel,dreptunghic sau oarecare

51

51

52

Sa se scrie un program care sa rezolve ecuatia de grad II: ax2+bx+c=0, unde a, b, c apartin lui

Să se rezolve un sistem de două ecuaţii liniare cu două necunoscute: a1*x+b1*y=c1 a2*x+b2*y=c2

53

53

53

54

54

54

54

54

Structuri repetitive

Structura repetitiva cu numar cunoscut de pasi are urmatorul principiu:

Structura repetitiva conditionata posterior are urmatorul principiu

Structura repetitiva conditionata anterior are urmatorul principiu de executie

Exemple:
Exemple:

Sa se calculeze n factorial( n!) , unde n este numar natural

Calculati produsul numerelor naturale impare mai mici sau egale cu o valoare data n

ex:pt n=8 p=1*3*5*7=105

urmatorii termeni este egal cu suma dintre precedentul si ante-precedentul

n=2232 si x=2 se afiseaza numarul

Sa se afiseze primii n termeni ai sirului lui Fibonacci;sirul are primii doi termeni egali cu 1 si fiecare din

55

55

55

55

56

Scrieti un program care afiseaza numarul de aparitii a unei cifre x intr-un numar n;de ex daca citim

Verificati daca un numar natural x diferit de 0 si 1, este prim sau nu

CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI EUCLID (metoda impartirilor succesive)56

CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI NICOMAHUS (metoda scaderilor repetate)

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

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

n numere . Sa se calculeze valoarea maxima 61 ALGORITMI ALGORITMI. NOTIUNI GENERALE -Algoritmul este conceptul
n numere . Sa se calculeze valoarea maxima 61 ALGORITMI ALGORITMI. NOTIUNI GENERALE -Algoritmul este conceptul

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

-

mulţime finită de reguli de calcul, descrise fără echivoc, care indică operaţiile

elementare necesare şi ordinea efectuării lor în scopul rezolvării unei probleme într-un timp finit

-

metodă (procedeu) de rezolvare a unei probleme

Observaţii:

1.

Oricărei probleme care admite o formulare matematică i se poate asocia un

algoritm.

2.

Dezvoltarea unui algoritm este, în general, mai dificilă decât scrierea programului

sursă pe baza algoritmului.

sursă pe baza algoritmului.

Caracteristici fundamentale:

Orice algoritm trebuie să îndeplinească cinci

caracteristici:

1.

anumit tip de probleme, pentru date iniţiale arbitrare.

generalitate - un algoritm trebuie sa ofere o metodă generală de rezolvare a unui

2. precizie (claritate) -

descrierea algoritmului trebuie facută fără ambiguităţi, iar

comenzile trebuie să exprime operaţii cunos-cute calculatorului, care pot fi executate de

către procesor.

3. determinare - la fiecare pas, acţiunea care urmează a fi executată trebuie să poată

fi determinată fără echivoc şi unic pe baza acţiunilor precedente.

4. finitudinea - un algoritm trebuie să conducă la obţinerea rezultatelor într-un număr

finit de paşi.

5. eficienţă - un algoritm trebuie să fie construit în aşa fel încât să folosească

resurse hard cât mai puţine şi să necesită un timp minim de execuţie. 6. executabilitate
resurse hard cât mai puţine şi să necesită un timp minim de execuţie.
6. executabilitate - algoritmul ca întreg şi fiecare pas al său 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 clarității
algoritmului, în timp scurt.)

Metoda rafinării pas cu pas

- descompunerea unei probleme într-un număr de probleme mai simple care pot fi rezolvate pe baza unui algoritm (mai mic mai simplu mai uşor) Rafinare - detalierea suficientă a fiecărui pas

Exemplu: programarea unui robot să facă ceai Algoritm iniţial

1. pune frunzele de ceai în vas 2. fierbe apa 3. adaugă apa fiartă în
1. pune frunzele de ceai în vas
2. fierbe apa
3. adaugă apa fiartă în vas
4. aşteaptă 5 minute
5. pune ceaiul în ceaşcă
Rafinarea etapei 1.
1.1
deschide cutia de ceai
1.2
scoate o linguriţă de frunze de ceai din cutie
1.3
răstoarnă frunzele din linguriţă în vas
1.4
închide cutia de ceai
sau:
2.1 pune apă în fiebător
2.2 porneşte fierbătorul
2.3 aşteaptă până când fierbe apa
2.4 opreşte fierbătorul
sau:
5.1
pune ceaiul în ceaşcă până când se umple ceaşca
Rafinarea suplimentară a etapei 1.1
1.1.1 scoate cutia de ceai din dulap
1.1.2 scoate capacul cutiei de ceai
Etapele dezvoltării 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
Tema: determinarea timpului de zbor al unui avion pe baza orarului zborurilor Δt = tsosire
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 plecării
- fusurile orare schimbate
- ora de vară/iarnă

SCHEMA LOGICA

SCHEMA LOGICA
SCHEMA LOGICA
SCHEMA LOGICA
STOP Descrierea algoritmilor cu ajutorul schemelor logice În schemele logice, operaţiile de bază din algoritmi
STOP Descrierea algoritmilor cu ajutorul schemelor logice În schemele logice, operaţiile de bază din algoritmi
STOP
STOP

Descrierea algoritmilor cu ajutorul schemelor logice În schemele logice, operaţiile de bază din algoritmi sunt reprezemtate prin figuri geometrice, specifice fiecărui tip de operaţie, legate între ele prin săgeţi pentru a evidenţia ordinea de execuţie a operaţiilor. În interiorul figurii se scrie operaţia corespunzătoare, 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ă respectiv sfărşitul algoritmului

START
START

începutul,

2. De citire şi de scriere

citire - cuprinde într-un paralelogram o operaţie de citire specificată prin cuvântul citeste şi lista variabilelor ce urmează a fi citite

prin

scriere

cuprinde

într-un

paralelogram

o

operaţie

de

scriere

specificată

-

cuvântul scrie şi lista expresiilor ale căror valori urmează a fi scrise

CITESTE lista de variabile
CITESTE lista de
variabile
SCRIE lista de expresii Exemplu: Determină afişarea pe ecran a
SCRIE lista de expresii
Exemplu:
Determină
afişarea
pe
ecran a

textului

cuprins între

SCRIE ”n nu poate fi 0 ”
SCRIE ”n nu poate fi 0

apostrofuri (fără apostrofuri)

”n nu poate fi 0 ” apostrofuri (fără apostrofuri) pe ecran a valorii SCRIE x SCRIE
pe ecran a valorii SCRIE x SCRIE “soluţia ecuaţie este” x
pe
ecran
a
valorii
SCRIE x
SCRIE “soluţia ecuaţie
este” x

determină afişarea momentul respectiv

variabilei

x

din

Dacă dorim ca afişarea să fie mai frumoasă, să cuprindă pe lângă valoarei variabilei x şi un text din care să rezulte semnificaţia valorii, blocul de scriere ar putea fi:

SCRIE x
SCRIE x
valorii, blocul de scriere ar putea fi: SCRIE x De atribuire (de calcul) Variabila  expresie

De atribuire (de calcul)

de scriere ar putea fi: SCRIE x De atribuire (de calcul) Variabila  expresie Cuprinde într-

Variabilaexpresie

Cuprinde într-un dreptunghi o operaţie de atribuire.

Executarea unei operaţii de atribuire constă în:

- calculul valorii expresiei din operaţia de atribuire

- transferul valorii calculate variabilei din operaţia de atribuire

1. De decizie

Nu conditie
Nu
conditie

Da

Nu conditie Da C orespunde unei operaţii de decizie şi cuprinde în interiorul unui romb condiţia

Corespunde unei operaţii de decizie şi cuprinde în interiorul unui romb condiţia a cărei valoare de adevăr se verifică

De procedură

Denumirea procedurii Corespunde unui grup de blocuri neprecizate încă şi cuprinde denumirea procedurii într-un
Denumirea procedurii
Corespunde unui grup de blocuri neprecizate încă şi cuprinde denumirea procedurii
într-un dreptunghi cu latuirle mici dublate. Denumirea procedurii se alege în aşa fel încât
să sugereze prelucrările care urmează să fie detailate într-o altă schemă logică
coraspunzătoare procedurii.
De început de procedură
Denumirea
procedurii
Marchează începutul unei scheme logice care detailează operaţiile corespunzătoare
unei proceduri; cuprinde într-o elipsă numele procedurii
De sfârşit de procedură
Return
Return

Cuprinde într-o elipsă cuvântul Retur şi marchează sfârşitul unei scheme logice care descrie operaţiile unei procepuri

Principiile de bază ale programării structurate Principiile de bază ale programării 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 evidenţiază ideile de bază utilizate în rezolvarea problemei, pornind de la aspecte generale şi ajungând în final la ultimele detalii ale rezolvării

structura

secvenţială(secvenţa), structura alternativă(decizia) şi structura repetitivă(ciclul).

2. Utilizarea

în

algoritm

a

trei

tipuri

de

structuri

de

control:

în algoritm a trei tipuri de structuri de control: Structura secvenţială(secvenţa) Cuprinde o succesiune de

Structura secvenţială(secvenţa) Cuprinde o succesiune de operaţii, reprezentate prin unul sau mai multe blocuri procedurale care se execută secvenţial, adică unul după celălalt în ordinea în ordinea în care sunt scrise.

Probleme exemplu: 1. Să se afişeze durata exprimată în zile a mişcării de rotaţie a
Probleme exemplu:
1. Să se afişeze durata exprimată în zile a mişcării de rotaţie a Pământului în jurul
Soarelui ştiind că este de 265 zile 5 ore 48 minute şi 46 secunde.
Analiza problemei
Pentru a exprima în zile durata mişcării de rotaţie a Pământului în jurul Soarelui, va
trebui să transformăm î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.
Funcţia programului este de a calcula durata exactă în zile a mişcării de rotaţie a
Pământului.
Start
d360+5/24+1/24(48/60+46/3600)
a Pământului. Start d360+5/24+1/24(48/60+46/3600) Scrie ”mişcarea de rotaţie a Pământului=”, d,
a Pământului. Start d360+5/24+1/24(48/60+46/3600) Scrie ”mişcarea de rotaţie a Pământului=”, d,

Scrie ”mişcarea de rotaţie a Pământului=”, d, ”zile”

Stop
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 ieşire:

Aria triunghiului: număr real notat cu s Datele de manevră:

Semiperimetrul: număr real notat cu p Funcţia programului:

Semiperimetrul: număr real notat cu p Funcţia programului: Este de a calcula cu formula lui Heron

Este de a calcula cu formula lui Heron aria triunghilui dat prin lungimile laturilor.

2.

Determinarea algoritmului de rezolvare a problemei

Start Citeste a, b, c s  p*( p  a)*( p b)*( p 
Start
Citeste a, b, c
s 
p*( p  a)*( p b)*( p  c)
Scrie ”Aria=”, s
Stop

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 s p*(p a)*(p b)*(p c) P4. Se scrie aria P5. Stop

Schema logică

b )*( p  c ) P4. Se scrie aria P5. Stop Schema logică P=(a+b+c)/2 Temă

P=(a+b+c)/2

c ) P4. Se scrie aria P5. Stop Schema logică P=(a+b+c)/2 Temă pentru acasă: Specificând analiza
c ) P4. Se scrie aria P5. Stop Schema logică P=(a+b+c)/2 Temă pentru acasă: Specificând analiza

Temă pentru acasă:

Specificând analiza problemei şi funcţia programului scrieţi algoritmii în schemă logică care:

1.
1.

Determină perimetrul şi aria unui dreptunghi, unde lungimile laturilor sunt citite

de la tastatură.

2. Pentru a un număr real, citit de la tastatură, care reprezintă lungimea laturii unui

cub, calculează şi afişează volumul şi suprafaţa totală a cubului.

3. Interschimbă valorile a două numere reale a şi b introduse de la tastatură şi apoi

le afişează.

4. Descrieţi, punând în evidenţă analiza problemei şi succesiunea paşilor, algoritmul

în schemă logică care pentru 2 valori a şi b numere întregi, afişează 5 valori, reprezentând rezultatea celor 5 operaţii (suma, produsul, diferenţa, câtul şi restul operaţie de împărţire pe mulţimea numerelor întregi)

Exemplul 1

.

Fie a şi b două variabile întregi. Dorim să schimbăm î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 următorii paşi:

1. citeşte a, b

2. t := a

3. a := b

4. b := t

5. scrie a,b

480 640 a b t
480
640
a
b
t

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 Sfârsit_daca Sfarsit_pentru Scrie max Sfîrsit

atunci max=a Sfârsit_daca Sfarsit_pentru Scrie max Sfîrsit Schema logica pentru rezolvarea unei ecuatii de gradul 1

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

START CITESTE A, B DA NU A0 NU DA B=0 X=-B/A SCRIE: SCRIE: SCRIE: ECUATIE
START
CITESTE
A, B
DA
NU
A0
NU
DA
B=0
X=-B/A
SCRIE:
SCRIE:
SCRIE:
ECUATIE
X
ECUATIE
IMPOSIBILA
NEDETERM
STOP
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
i=i+1} scrie produs sfarsit folosind structura repetitiva conditionata posterior start citeste n produs=1 i=1
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

prim=0

altfel d=d+1 daca prim=1 atunci scrie "este prim:

altfel scrie"nu este prim" sfarsit

"este prim: altfel scrie"nu este prim" sfarsit 4)Sa se calculeze cmmdc pentru doua numere prin impartiri

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

numarul mai mic cat timp cele doua numere sunt diferite start citeste a,b cat timp a

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

s=s+c

n=n div 10

}

scrie s

sfarsit

6)Sa se afle daca un numar este perfect

scrie s sfarsit 6)Sa se afle daca un numar este perfect Un numar este perfect daca

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

daca max<c atunci max=c n=n div 10 } scrie max sfarsit Probleme propuse- Evaluare 1. În

Probleme propuse- Evaluare

1. În programul pseudocod alăturat se consideră că

valoarile citite pentru variabilele m si n sunt numere

naturale cu cel mult 9 cifre.

1. citeşte n,m

2. s0

3. ┌cat timp (n>0)sau(m>0) executa

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

Citeste n,x

Mx

[m/10] └■ 8. scrie s Citeste n,x M  x a) Care este numarul de executii

a) Care este numarul de executii ale instructiunii 5 daca se citeste de la tastatura n=27 si m=75341?

b) Ce va afisa algoritmul pentru n=27 si m=75341?

c) Scrieţi un program pseudocod echivalent cu cel dat care să conţină alt tip de structură repetitivă.

2. Fie pseudocodul alăturat :

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.

P1 ┌Pentru i=2,n executa │ Citeste x │ ┌Daca M<x atunci │ │ Mx │
P1
┌Pentru i=2,n executa
Citeste x
┌Daca M<x atunci
Mx
Pi
└■
└■
scrie M,P
citeste y
citeşte x
nr0
┌repetă

┌dacă x=2*y atunci

│ nrnr+1

│ └■

└■până când x=0

scrie nr

3.

pseudocod:

Se consideră următorul algoritm descris în

3. pseudocod: Se consideră următorul algoritm descris în a) Deduceţi ce se va afişa, dacă valorile

a) Deduceţi ce se va afişa, dacă valorile citite ale lui x sunt, în ordine, 2, -3, -6, 4, 8, 16, 0;

b) Formulaţi un enunţ pentru problema dată;

c) Rescrieţi secvenţa folosind o structură repetitivă cu test iniţial.

Citeste n

dacă n=1 sau n=2 atunci

t1

altfel

a1

b1

i2

n=1 sau n=2 atunci t  1 altfel a  1 b  1 i 

4. Fie pseudocodul alăturat :

a) Ce se va afişa pentru n=6?

b) Rescrieţi algoritmul, folosind o structură repetitivă cu număr cunoscut de paşi

cât timp i<n execută ta+b ba

at
at
ii+1 scrie t Citeşte x, n y1 contor x Cât timp contor>0 execută yy*n Sfârşit
ii+1
scrie t
Citeşte x, n
y1
contor x
Cât timp contor>0 execută
yy*n
Sfârşit cât timp
Scrie y

5.

Fie pseudocodul alăturat :

a) Ce valoare y se va afişa pentru x=3 şi n=3?

b) Ce realizează această secvenţă?

contorcontor-1

b) Ce realizează această secvenţă? contor  contor-1 Scrie forma generală şi schema logică pentru structura

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

Scrie principiul de execuţie pentru structura cât timp.

(1 p)

Parcurgeti secventa

k 5;

pentru j k-4 , k*k execută

q=2;

structura cât timp. (1 p) Parcurgeti secventa k  5; pentru j  k- 4 ,

q=q *10;

j= j+5;

(1 p)

scrie q;

Fie următoarea secvenţă de program:

do

S

← 0;

p ← 1; i ← 1;

(1 p )

secvenţă de program: do S ← 0; p ← 1; i ← 1; (1 p )

p

s

← p * i;

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

folosind structura repetitivă de tip pentru. (1 p) (1 p ) (1 p ) s=s*6; j=j+3;
(1 p ) (1 p ) s=s*6; j=j+3; i ← 1; (1 p ) p
(1 p )
(1 p )
s=s*6;
j=j+3;
i ← 1;
(1 p )
p ← p + a*i;
a ← a * n;
i ← i + 1;
(1 p )

(1 p )

Se dă un număr natural n şi un număr x, dacă x este număr 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 iniţial. (1 p )

Scrie principiul de execuţie pentru structura repetă.

Parcurgeti secventa

k 4;

pentru j k-3 , k*k execută

s=5;

secventa k  4; pentru j  k- 3 , k*k execută s=5; scrie s; Fie

scrie s;

Fie următoarea secvenţă de program:

P ← 0;

cât timp i <= 4 execută

a ← 1;

de program: P ← 0; cât timp i <= 4 execută a ← 1; scrie p;

scrie p; Să se rescrie această secvenţă folosind structura repetitivă

de tip do-while,

Să se rescrie această secvenţă folosind structura repetitivă de tip pentru.

5) Se dă un număr natural n şi un număr x, dacă x este număr 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 afişa pe ecran în urma execuţiei următoarelor secvenţe 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;

else if y<0 then s:=pow(y,x); y:=y-x; end;

read(x,y); s:=0; if (x>y) sau (y>0) then s:=floor(y/x); x:=x+y;

scrie(s,’ ‘,x,’ ‘,y) end.

0.5p)

x:=x+y; scrie(s,’ ‘,x,’ ‘,y) end. 0.5p) Fiind dată expresia de mai jos, scrieti in pseudocod

Fiind dată expresia de mai jos, scrieti in pseudocod algoritmulde rezolvare :(x intreg).

0, dacă x-1 F(x) = x 2 , dacă 0x2 x+1, dacă 3x5 x-1, dacă
0,
dacă x-1
F(x) =
x 2 ,
dacă 0x2
x+1, dacă 3x5
x-1, dacă 5<x10
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”.
Scrieti in limbaj C++
1p)
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 afişa pe ecran în urma execuţiei următoarelor secvenţe de program :

a) a=1,b=1,c=4;

if a>=1 then

scrie(2) else scrie(1); x= 7 şi y=3; if x>y then t=x; x=y; y=t p=p*d; d=d+1 end; scrie(p,d);

if b>=2 then if c>=3 then scrie(3) else

0.5p)

p=1; d=y-x; if d% 2=1 then p=ceil(p/d); else

0.5p)

2)

Fiind dată următoarea expresie, scrieti in pesudocod algoritmulde

rezolvare:

F

(

x

)

  x

x

 

2 dacă

1

dacă

5

 

x

5

 

x

7

5,

  x x   2 dac ă  1 dac ă 5  

2*

x dacă x

7

0

dacă x 

5

2p)

3) . Ce va afişa programul următor, 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

5

m: integer; citeste(x, y, z); m := (x+y+z)/ 3; case (m) 1 5 4: scrie (‘Corigent’);

4: scrie (‘Corigent’);

7: scrie (‘Mediocru’);

9: scrie (‘Satisfăcător’); 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++

8

1p)

**

„satisfacator” . 1p) Scrieti in limbaj C++ 8 1p) ** Evaluare Scrie forma generală şi schema

Evaluare

Scrie forma generală şi schema logică pentru structura repetitivă cu test final.

Scrie principiul de execuţie pentru structura cât timp.

De câte ori secvenţa următoare afişează litera a? k 5; pentru j k-4 , k*k , 5 execută

sf. pentru;

scrie ’a’;

Fie următoarea secvenţă de program:

S

repetă

← 0;

p ← 1; i ← 1;

p

← p * i;

s

← s + p;

i ← i + 1;

până când i>n; scrie p; Să se rescrie această secvenţă folosind structura repetitivă de tip cât timp, apoi structura repetitivă de tip pentru.

tip cât timp, apoi structura repetitivă de tip pentru. Fie un număr natural n. Să se

Fie un număr natural n. Să se calculeze şi să se afişeze valoarea sumei

S = 1 +

1

2

2

1 1 3 + + 2 2 n
1
1
3
+
+
2 2
n

+

. (Schema logică, pseudocod cu Repetă, pseudocod cu Cât timp)

Se citesc numere naturale până la întâlnirea numărului 0. Să se determine şi să se afişeze suma numerelor pare dintre numerele citite. (Pseudocod)

Se citeşte un număr natural n. Să se calculeze şi să se afişeze produsul cifrelor lui. (Pseudocod)

Să se afişeze toate numerele de 3 cifre care împărţite la 9,11 şi 13 dau de fiecare dată restul

5.

Scrie forma generală şi schema logică pentru structura repetitivă cu test iniţial.

Scrie principiul de execuţie pentru structura repetă.

De câte ori secvenţa următoare afişează litera C?

k 4;

ori secvenţa următoare afişează litera C? k  4; pentru j  k- 3 , k*k

pentru j k-3 , k*k , 4 execută scrie ’C’; sf. pentru;

Fie următoarea secvenţă de program:

P ← 0;

cât timp i <= 4 execută

a ← 1;

i ← 1;

p ← p + a*i;

a ← a * n;

i ← i + 1;

sf cât timp; scrie p;

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

Fie un număr naural n. Să se calculeze şi să se afişeze suma cifrelor lui. (Pseudocod)

Se citeşte un număr natural n. Să se calculeze valoarea expresiei

E =

1

+

2

3 + +

n

2

n 1

. (Schema logică, pseudocod cu Repetă, pseudocod cu Cât timp)

Se citesc numere întregi până la întâlnirea numărului 1. Să se calculeze şi să se afişeze produsul numerelor divizibile cu 3 dintre numerele citite. (Pseudocod)

divizibile cu 3 dintre numerele citite. (Pseudocod) cifrelor lui, produsul cifrelor l ui. Se citesc n
cifrelor lui, produsul cifrelor l ui. Se citesc n numere naturale. Să se determine, folosind
cifrelor lui, produsul cifrelor l
ui.
Se citesc n numere naturale. Să se determine, folosind structura repetitivă repetă … cât
timp numărul format din ultima cifră a fiecărui număr din şir. Se consideră că n<9.
(3p)

Ce se afişează pentru n=10? (1p) s=0; i=1; p=1; Repetă p=p*i; s=s+p;

**. Se da un numar intreg format din exact patru cifre si se cere sa se tipareasca: suma

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 număr natural deteminaţi numărul de cifre ale acestui număr; (1p) determinaţi numărul format din cifrele numărului iniţial fără cifra 1; (1p) determinaţi cea mai mică cifră din număr; (1p) determinaţi inversul numărului; (1p)

i=i+1;

cât timp i<n; scrie s;

**.Se considerǎ urmǎtorul algoritm descris în pseudocod:

Date de intrare:n natural,a întreg; Date de ieşire:S întreg;

Date de manevrǎ:i natural; Citeşte n; i0; S0; Cât_timp i<n executǎ {Citeşte a;

ii+1;

SS+a;}

Scrie S; a)Urmǎriţi pas cu pas algoritmul pentru valorile:4,5,1,10,4. b)Care este efectul acestui algoritm? c)Scrieţi o secvenţǎ echivalentǎ care sǎ utilizeze structura repetitive executǎ cât_timp. d)Ce asemǎnǎri /deosebiri existǎ între cele douǎ instrucţiuni repetitive?

exist ǎ între cele dou ǎ inst rucţiuni repetitive? ** a, b întregi //date de intrare
exist ǎ între cele dou ǎ inst rucţiuni repetitive? ** a, b întregi //date de intrare

**

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, urmând 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.

**

o a treia variabila pentru a face interschimbarea. ** Evaluare 2 I. Instructiunea de atribuire: -sintaxa;(0.25p)

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)

impari ai unui numar n natural dat de la tastatura.(3p) 0,5pct –citirea datelor de intrare 1,5
0,5pct –citirea datelor de intrare 1,5 pct – secventa prin care se determina divizorii
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)

- principiul de functionare;(0.5p) -un exemplu; (0.25p) I. Se citesc de la tastatura doua valori intregi.

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

prin care se determina numarul de divizori pari Nr.I Incercuiţi răspunsurile adevărate pentru subiectele de la

Incercuiţi răspunsurile adevărate pentru subiectele de la 1 la 6.

a) schemă logică; b) pseudocod; c) program; d) algoritm; 4. Algoritmul este : a) b)
a) schemă logică;
b) pseudocod;
c) program;
d) algoritm;
4. Algoritmul este :
a)
b)
sfârşit dacă;
c)
d)

Cunoaştem patru structuri algoritmice:

Transpunerea grafică a unui algoritm folosind figuri geometrice numite blocuri este:

structura liniară, structura secvenţială, structura selectivă şi structura repetitivă.

a) da;

b) nu, sunt 5, există si structura alternativă.;

c) nu sunt 3, structura secvenţială este numită si liniară iar cea selectivă si alternativă;

Următoarea structură:

Dacă condiţie indeplinită atunci instr1

succesiune de operaţii infinite; succesiune de operaţii pentru rezolvarea unei probleme oarecare; o noţiune ce nu poate fi descrisă; folosit numai la informatică şi matematică;

fi descrisă; folosit numai la informatică şi matematică; este pseudocod pentru: a) structura liniară; b) structura

este pseudocod pentru:

a) structura liniară;

b) structura repetitivă cu număr cunoscut de paşi;

c) structura alternativă cu ramură vidă;

d) structura alternativă.

5. Blocul pentru introducerea datelor este de forma unui:

a) pătrat

6. Se dă următorul algoritm scris în pseudocod. Să se precizeze ce execută acest algoritm pentru valorile lui x -3 şi

b) romb 5 c) dreptunghi a) -3 5 b) -3 0 c) 1 0 d)
b) romb
5
c) dreptunghi
a) -3 5
b) -3 0
c) 1 0
d) paralelogram
1 5
1 5
-3 5
Început
x,p,s: integer;
citeşte x;
p:=1; s:=0;
dacă x<0 atunci p:=p*x
altfel
s:=s +x
sfârşit 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)=
xa
dacă -10<=x<10;
2x+3
dacă x>=10
8. Se citeşte un număr întreg. Dacă acesta este par să se determine maximul dintre două

numere reale, iar dacă nu este par să se afişeze suma a două numere naturale, doar dacă este divizibilă cu 5. (schema logică sau pseudocod ).

9. Pentru următorul algoritm:

- care este rezultatul în urma execuţiei

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

Incercuiţi răspunsurile adevărate pentru subiectele de la 1 la 6.

1.

Avem următoarele proprietăţi ale

algoritmilor: finitudinea, claritatea, generalitatea, corectitudinea

4. Dreptunghiul în schema logică

reprezintă blocul:

a) da;
b) nu, sunt 5 şi anume eficienţa;
c) da, structuralitatea are cele două principii de elaborare a algoritmilor;

a) Bloc de decizie
b) Bloc de intrare
c) bloc de calcul de început a algoritmului

d)

de intrare c) bloc de calcul de început a algoritmului d) 5. p, s, n:integer; a)
5. p, s, n:integer; a) schemă logică; b) pseudocod; citeste n; c) program; p:=1; s:=0;
5.
p, s, n:integer;
a) schemă logică;
b) pseudocod;
citeste n;
c) program;
p:=1; s:=0;
d) algoritm;
dacă n mod 5 =0 atunci
altfel
sfârşit dacă;
s:=s+n;
p:=p*n;

scrie p,s;

stop

a)

1

7

b) 7 14

c) 1

0

2. Descrierea unui algoritm folosind text sub forma unor fraze convenţionale cum ar fi scrie…, citeşte…, dacă…, atunci…, altfel…, etc reprezintă:

Se dă următorul algoritm scris în

pseudocod. Să se precizeze ce execută acest algoritm pentru n=5

p:=p*n

s:=s +n

ce execută acest algoritm pentru n=5 p:=p*n s:=s +n 3. Următoarea structură: Dac ă condiţie indeplinită

3. Următoarea structură:

Dacă condiţie indeplinită atunci instr1

6. Blocul de decizie este reprezentat prin:

a)

pătrat

Altfel instr2

b) romb

c) paralelogram

d) dreptunghi

sfârşit dacă;

este pseudocod pentru:

a) structura repetitivă cu număr cunoscut de paşi;

b) structura alternativă cu 2 cazuri

c) structura secvenţială

d) structura alternativă cu ramură vidă

secvenţială d) structura alternativă cu ramură vidă . x 3 + 2x dacă x>=7; x+b dacă
. x 3 + 2x dacă x>=7; x+b dacă -7<=x<7; x-5 dacă x < -7;
.
x 3 + 2x
dacă x>=7;
x+b
dacă -7<=x<7;
x-5
dacă x < -7;

care este rezultatul în urma execuţiei

7.

Să se scrie schema logică şi pseudocodul pentru calculul valorii expresiei ştiind că b este o constantă:

E(x)=

8.

două numere, în caz contrar să se calculeze şi să se afişeze produsul a 2 numere întregi,

Se citeşte un număr întreg. Dacă acesta este pozitiv să se afişeze media geometrică a

doar dacă sunt pare.

9.

să se afişeze media geometrică a doar dacă sunt pare. 9. Pentru următorul algoritm: - -

Pentru următorul algoritm:

-

- 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; a=3627; k=0; k:=0; daca n= - do{ for(g=3;g<8;g++)
altfel scrie 0;
n
a+b;
b
b-1;
a=3627;
k=0;
k:=0;
daca
n= -
do{
for(g=3;g<8;g++)
(m-
x)
c=a % 10; a=a/10;
for(u=2; u<6;u++)
if(c>a%10)
k++;
if (g>u)k++;
} while(a);
cout<<k;
Scrie k;
atunci scrie 1
altfel daca (a=0) or (b<>0) atunci scrie 0
altfel scrie 1
stop
1. Scrieţi 2 programe care, folosind două structuri repetitive la alegere, afişează numerele
naturale din intervalul [a, b].
(2p)

. 2) Ce afişează secvenţele de program de mai jos?

(3p)

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"

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 .

cel putin un divizor. daca DA atunci numarul nu este prim . testam daca variabilla prim

testam daca variabilla prim nu si-a schimbat valoarea, daca DA atunci numarul nu este prim

si-a schimbat valoarea, daca DA atunci numarul nu este prim Se citesc mai multe numere pana

Se citesc mai multe numere pana se tasteaza zero. Sa se afiseze numerele prime.

citeste n

 

while n<>0

   

prim=1

prim=0

pentru d=2,n/2 executa daca n mod d =0 atunci

daca prim=1 atunci scrie n ,” ”

daca n mod d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa

citeste n

d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa se afiseze suma
d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa se afiseze suma
d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa se afiseze suma
d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa se afiseze suma
d =0 atunci daca prim=1 atunci scrie n ,” ” citeste n Sa se afiseze suma

Sa se afiseze suma cifrelor unui numar n

,” ” citeste n Sa se afiseze suma cifrelor unui numar n Ultima cifra este data

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

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

daca s=n atunci scrie "este numar perfect" sfarsit Sa se afle cifra maxima a unui numar

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

}

Se citeste un numar format din mai multe cifre. sa se afiseze un mesaj daca
Se citeste un numar format din mai multe cifre. sa se afiseze un mesaj daca
numarul citit este palindrom
citeste n
-Memoram o valoare pentru n
-Initializam variabila invers cu zero . Aceasta variabila
va retine valoarea vazuta in oglinda. Ex: n=23432 
inv=0
inv=23432
nr=n
cat timp n>0
{
-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
inv=inv*10+n%10
n=n div 10
-compar numarul initial cu cel inversat. Daca DA atuni
este palindrom
}
if(nr==inv)
scrie “numarul citit 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

divizibil cu 5 Testez daca numarul citit are divizorul 5 Daca DA sa-l afiseze Se mai
Daca DA sa-l afiseze Se mai citeste un numar diferit de zero Se citesc mai multe

Se citesc mai multe numere pana se citeste cifra 0. Sa se afiseze numerele de pe pozitii pare

Citeste un nr pana se tasteaza zero

citeste n

p=1

cat timp n<>0

{

daca p%2==0 atunci scrie n citeste n

}

Initializez variabila pozitie cu 1

Testez daca pozitia este para daca DA afiseaza numarul citit

Mai citeste un alt numar

variabila pozitie cu 1 Testez daca pozitia este para daca DA afiseaza numarul citit Mai citeste
variabila pozitie cu 1 Testez daca pozitia este para daca DA afiseaza numarul citit Mai citeste

**

Fie x un numar întreg format din exact 5 cifre. Sa se afiseze cifra unitatilor si cea a sutelor, pe acelasi rând, 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

c2 = x % 10 //retin cifra sutelor în c2 scrie c1, c2 Explicarea algoritmului: Pentru
c2 = x % 10 //retin cifra sutelor în c2 scrie c1, c2 Explicarea algoritmului: Pentru

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 câtul împartirii este numarul fara ultima cifra. În cazul împartirii la 100 restul returneaza ultimele 2 cifre, iar câtul 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

si sa afisam ultima cifra a numarului n ** Cifra control Cerinta : determinati cifra de

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.
Cifre ordonate Cerinta: verificati daca un numar citit de la tastatura are cifrele ordonate crescator.
Cifre ordonate Cerinta: verificati daca un numar citit de la tastatura are cifrele ordonate crescator.
Cifre ordonate Cerinta: verificati daca un numar citit de la tastatura are cifrele ordonate crescator.

Cifre ordonate

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

Rezolvare:

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

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
Cmmdc Cerinta: aflati cmmdc-ul dintre doua numere Rezolvare Metoda 1: Nr. deosebit Cerinta: verificati daca

Cmmdc

Cerinta: aflati cmmdc-ul dintre doua numere

Rezolvare

Metoda 1:

aflati cmmdc-ul dintre doua numere Rezolvare Metoda 1: Nr. deosebit Cerinta: verificati daca un numar citit

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
Nr. perfect Cerinta: verificati daca un numar citit de la tastatura este perfect (un numar
Nr. perfect Cerinta: verificati daca un numar citit de la tastatura este perfect (un numar

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:

daca un numar citit de la tastatura este perfect (un numar este perfect daca este egal
Nr. prim Cerinta: verificati daca un numar este prim Rezolvare Metoda 1: Metoda 2:
Nr. prim Cerinta: verificati daca un numar este prim Rezolvare Metoda 1: Metoda 2:
Nr. prim Cerinta: verificati daca un numar este prim Rezolvare Metoda 1: Metoda 2:

Nr. prim

Cerinta: verificati daca un numar este prim

Rezolvare

Metoda 1:

Nr. prim Cerinta: verificati daca un numar este prim Rezolvare Metoda 1: Metoda 2:

Metoda 2:

Palindrom

Palindrom Cerinta : afisati mesajul „da„ daca un numar este palindrom ( este egal cu inversul
Palindrom Cerinta : afisati mesajul „da„ daca un numar este palindrom ( este egal cu inversul

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

Rezolvare:

numar este palindrom ( este egal cu inversul sau) Rezolvare: Suma cifrelor Cerinta :aflati suma cifrelor
numar este palindrom ( este egal cu inversul sau) Rezolvare: Suma cifrelor Cerinta :aflati suma cifrelor

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
Probleme rezolvate in C++ //se citeste un numar zecimal //sa se calculeze in baza de
Probleme rezolvate in C++ //se citeste un numar zecimal //sa se calculeze in baza de
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;

geometrica: "<<Mg; return 0; } ** #include <iostream> #include<math.h>
geometrica: "<<Mg; return 0; } ** #include <iostream> #include<math.h>

}

** #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;

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;

#include<math.h> using namespace std; int main() {int a,b,c;

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

cout<<c;

return 0;

}

c=a%b; cout<<c; return 0; } ** se citesc coordonatele punctelor A(x1,y1) si B(x2,y2)//sa

** 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;

citeste punctul A de pe abscisa :"; cin>>x1; cout<<"se citeste punctul A de pe ordonata

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;

using namespace std; int main() { long int z,o,s,h,m,sec; cout<<"gandeste-te la un numar:

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

// formeaza nr. zile din nr. ore //restul de ore dintr-o zi

// formeaza nr. zile din nr. ore //restul de ore dintr-o zi //extragem cifra unitatilor (ultima

//extragem cifra unitatilor (ultima cifra) //reducem numarul cu o cifra mai putin //cifra zecilor extrasa dupa ce am eliminat o cifra din nr

h=s/3600; //se transforma secundele in ore

z=h/24;

o=h%24;

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;

citeste un numar format din 3 cifre: "; cin>>nr; a=nr%10; nr=nr/10; b=nr%10; nr=nr/10; c=nr%10;

a=nr%10;

nr=nr/10;

b=nr%10;

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

"<<a<<" este: "<<sin(a); } // Se citeste n. Sa se afiseze toti divizorii
} // Se citeste n. Sa se afiseze toti divizorii #include<iostream.h> int main() { int
}
// 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<<"
cout<<"sunt "<<k <<" divizori";
"<<n<<"%"<<i<<"="<<n%i<<endl; }
}
// 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

} } } Structuri alternative - Structura alternativa dirijeaza executia unei secvente de instructiuni S1 sau

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

alffel atunci… Testare conditie_logica Secventa S2 Secventa S1 |2a-1| 9-x^2
alffel
atunci…
Testare conditie_logica
Secventa S2
Secventa S1
|2a-1|
9-x^2

IF(cond_logica)

ELSE

S1;

S2;

Tema:

Stabiliti: a) valoarea maxima, modulul diferentei , paritatea lor;

se citesc 2 numerea si b:

b) F(x)=max

Instructiunea de selectie “CASE”

Daca Adevarat

F(x)=max Instructiunea de selectie “CASE” Daca Adevarat Structur a de selectie dirijeaza executia unei secvente de

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

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<<"b=";cin>>b; // // in functie de valoarea variabilei OPER se va executa
// // in functie de valoarea variabilei OPER se va executa o instructiune;
//
// in functie de valoarea variabilei OPER se va executa o instructiune;

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)

{

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;
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?

switch (zi) { case (7):

";

cin>>zi; //s-a citit selectorul zi

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
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;

"<<ss<<" secunde"<<endl; } ** //se citesc 3 numere a,b,c//sa se afiseze daca este
"<<ss<<" secunde"<<endl; } ** //se citesc 3 numere a,b,c//sa se afiseze daca este

}

**

//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";

else cout<<"triunghi oarecare"; } Sa se scrie un program care sa rezolve ecuatia de grad II:

}

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)

if(delta >= 0)

{

cout<<"Radacini reale: ";

x1=(-b+sqrt(delta))/(2*a);

x2=(-b-sqrt(delta))/(2*a);

x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); cout<<"x1 = "<<x1<<" x2

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ă ecuaţii liniare cu două necunoscute:

a1*x+b1*y=c1

a2*x+b2*y=c2

Soluţiile sistemului de ecuaţii sunt:

x=dx/d=(b2*c1-b1*c2)/(a1*b2-b1*a2)

y=dy/d=(a1*c2-a2*c1)/(a1*b2-b1*a2)

y=dy/d=(a1*c2-a2*c1)/(a1*b2-b1*a2) #include<iostream> void main(){ int a1, b1, c1, 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

cout<<”y=”<<y; } } Structuri repetitive Structurile repetitive pot fi contidionate anterior sau cu
Structurile repetitive pot fi contidionate anterior sau cu test initial, conditionate posterior sau cu test
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> ) ;

do { } <I>; while ( <L> ) ; Exemple: Sa se calculeze n factorial( n!)
do { } <I>; while ( <L> ) ; Exemple: Sa se calculeze n factorial( n!)

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;

}

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;

}

}

{ f=p+a; cout<<f<<endl; a=p; p=f; } }  Scrieti un program care afiseaza numarul de aparitii
{ f=p+a; cout<<f<<endl; a=p; p=f; } }  Scrieti un program care afiseaza numarul de aparitii

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";

}

apare de "<<nr<<" ori"; } Verificati daca un numar natural x diferit de 0 si 1,

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;

}

b=r; r=a%b; } cout<<"cmmdc: "<<b; } CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI NICOMAHUS
b=r; r=a%b; } cout<<"cmmdc: "<<b; } CEL MAI MARE DIVIZOR COMUN - ALGORITMUL LUI NICOMAHUS

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;

}

else b=b-a; cout<<"cmmdc: "<<b; } Sa se scrie un program tcare realizeaza trecerea unui numar

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) {
#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;

}

cout<<2*(n/3); else cout<<2*(n/3)+1; }  // Se citesc mai multe numere pana cand se tasteaza cifra
//
//

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

pare

x++; s=s+n; }
x++;
s=s+n;
}

#include<iostream> Int main()

{

int n,ma,x=0,s=0; cout<<"Nr.= ";cin>>n;

while(n!=0)

{

if(n%2==0){

cout<<"Nr.= ";cin>>n;

}

ma=s/x; cout << "Media aritmetica = " <<ma<< endl;

}

"Media aritmetica = " <<ma<< endl; } ? #include<iostream> Int main() { int x,p=0,n=0; do

?

#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++)

cati ani? "; cin>>n; for(i=1;i<=n;i++) s=s+s*d/100; cout<<"\n dupa
cati ani? "; cin>>n; for(i=1;i<=n;i++) s=s+s*d/100; cout<<"\n dupa
cati ani? "; cin>>n; for(i=1;i<=n;i++) s=s+s*d/100; cout<<"\n dupa

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

3 numere. Scrie un program care determina valoarea maxima #include<iostream> using namespace std; int main() {

#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;

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;

using namespace std; int main() { int n,i,s; int nr; " ; cout<<"n= "
" ; cout<<"n= " <<n<<endl;
" ;
cout<<"n= " <<n<<endl;

" ;

cout<<"valoarea lui n; " ; cin>>n;

s=0;

while(n!=0)

nr=n;

{s=s+n%10; cout<<"s= "<<s<<"

n=n/10;

}

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; cin>>n; nr=n;
int n,nr,s,c;
cin>>n;
nr=n;

cout<<"valoarea lui n; " ;

s=0;

while(n!=0)

cout<<"valoarea lui n; " ; s=0; while(n!=0) { c=n%10; cout<<"c=

{ 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;

se initializeaza maximul cu primul numar cin>>max; i=1; while(i<n){cout<<"dam valoare

i=1;

while(i<n){cout<<"dam valoare urmatorului numar ";

valoare urmatorului numar "; cin>>nr; if(max<nr) max=nr; i=i+1; }

cin>>nr;

if(max<nr)

max=nr;

i=i+1;

}

cout<<"valoarea maxima este "<<max;

return 0;

}

cin>>nr; if(max<nr) max=nr; i=i+1; } cout<<"valoarea maxima este "<<max; return 0; }