Documente Academic
Documente Profesional
Documente Cultură
Pentru nici una din problemele care se vor rezolva la disciplina Programarea Calculatoarelor
NU SE FOLOSESC VARIABILE GLOBALE
ELEMENTE INTRODUCTIVE ALE LIMBAJULUI C
1. PRIMUL PROGRAM ÎN C
Programele pe care le scriem în C lucrează cu variabile, constante, funcții și instrucțiuni.
O variabilă este o locație de memorie care are atașată o etichetă (numele variabilei) și în care stocăm
diferite informații care se pot modifica pe parcursul execuției programului (de aici și numele de variabilă),
constantele sunt valori care nu se modifică pe parcursul execuției programului și care nu au asociată o locație
de memorie.
Programele scrise în C respectă următorul principiu: nu lucrează decât cu lucruri cunoscute.
Din acest motiv înainte de a folosi o variabilă trebuie să specificăm ce fel de variabilă este. Acest lucru
se face indicând tipul (întreg sau real) variabilei (sau variabilelor cu care lucrăm).
Exemplu 1:
1.1. dacă vrem să lucrăm cu o variabilă de tip întreg pe care să o denumim a vom scrie:
int a;
1.2. dacă vrem să lucrăm cu o variabilă de tip real în simplă precizie care să aibă numele
ma:
float ma;
1.3. Pentru o variabilă de tip real în dublă precizie vom avea:
double mg;
Pentru citirea unor valori de la tastatură se folosește funcția scanf.
Exemplu 2:
2.1. pentru citirea unei valori întregi în variabila a se scrie în program:
scanf(“%d”, &a);
2.2. pentru citirea unei valori de tip real declarată de tipul float și al cărui nume este ma
scanf(“%f”, &ma);
2.3. citirea unei variabile de tipul double se face cu:
scanf(”%lf”, &mg);
Pentru afișarea pe monitor a unui mesaj se folosește printf.
Exemplu 3:
3.1. Afisarea unui text simplu (\n – are ca efect trecerea cursorului pe rândul următor)
printf(“Hello world!\n”);
3.2. Afișarea valorii unei variabile de tip real în simplă precizie într-un text:
printf(“Valoarea mediei aritmetice este %f!\n”,ma);
3.3 Afișarea valorii unei variabile de tip întreg într-un text:
printf(“%d este valoarea variabilei a. \n”, a);
Modalitatea de lucru pentru scrierea programelor (de exemplu vrem să realizăm un program numit p1).
1) Se editează fișierul cod sursă (folosind comanda vim p1.c) – vezi tutorial vim
1
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 2
TEMA 1
Problema nr. 1.1
Se citesc de la tastatură două numere întregi. Să se calculeze suma și media lor aritmetică.
Problema nr. 1.2
Se citesc de la tastatură două numere reale în dublă precizie. Să se calculeze produsul și media lor
geometrică.
Problema nr. 1.3
Se citesc de la tastatură 3 numere întregi care reprezintă lungimile laturilor unui triunghi. Să se
calculeze aria triunghiului folosind formula lui Heron.
Figura 1. Selecţia cu două alternative – instrucțiunea if
2
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 2
Figura 3. Repetiție cu test inițial – instrucțiunea for
3
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 2
TEMA 2
Problema nr. 2.1.
Să se scrie un program care citeşte de la tastatură trei numere întregi și afişează valoarea maximului
lor.
Problema nr. 2.2.
Fie următoarea funcţie:
ì x 2 + 3x + 5, x Î (- ¥,2]
ï
f (x ) = í3x, x Î (2,8)
ïe + 2,
x
x Î [8, ¥ )
î
Să se calculeze valoarea funcţiei f pentru un x citit de la tastatură.
Problema nr. 2.3.
Se citesc de la tastatură 3 numere reale care reprezintă coeficienţii unei ecuaţii de gradul 2. Să se
determine rădăcinile acestei ecuaţii. În cazul în care ecuaţia nu poate fi rezolvată se vor afişa mesaje
corespunzătoare.
4
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 2
TEMA 3
Problema nr. 3.1.
Să se scrie un program care citeşte de la tastatură două numere întregi pozitive și folosind algoritmul
lui Euclid (prin împărțiri repetate) calculează cel mai mare divizor comun (cmmdc) și afișează rezultatul
obținut.
Problema nr. 3.2. – problema se va rezolva folosind cele 3 instrucțiuni de repetiție
a) Să se scrie un program care afişează un tabel care pe prima coloană are temperaturi Fahrenheit şi
pe cea de-a doua coloană temperaturile echivalente în grade Celsius, folosind formula
5
C= (F - 32 )
9
unde C reprezintă valoarea temperaturii dată în grade Celsius, iar F reprezintă valoarea temperaturii în
grade Fahrenheit. Tabelul este generat pentru temperaturi Fahrenheit cuprinse între 0 şi 300, cu un pas egal
cu 10oF.
b) Să se scrie un program care afişează tabelul corespunzător de tranformare din grade Celsius în grade
Fahrenheit. De această dată pasul va fi citit de pe dispozitivul de intrare.
Problema nr. 3.3 – nu se vor folosi vectori
De pe dispozitivul de intrare se citeşte un număr real b şi un şir de valori reale pozitive terminate
printr-o valoare negativă (care nu face parte din şir). Să se stabilească elementul din şir cel mai apropiat de
b . Se va preciza şi poziţia acestuia (al câtelea element din şir este). Termenii şirului vor fi păstraţi în aceeaşi
variabilă a .
Problema nr. 3.4. – nu se vor folosi vectori
De pe dispozitivul de intrare se citeşte un şir de numere întregi pozitive, şir terminat cu valoarea 0 care
nu face parte din şir. Pentru fiecare element citit să se indice cel mai mare pătrat perfect mai mic sau egal cu
el.
5
PROGRAMAREA CALCULATOARELOR LUCRAREA NR. 2
TEMA 4
Problema nr. 4.1.
O pereche de numere naturale a şi b se numesc prietene dacă suma divizorilor unuia din numere este
egală cu celălalt număr (şi invers). De exemplu, 220 şi 284 sunt numere prietene deoarece:
1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 sunt divizori ai numărului 220 şi suma lor este 284
1, 2, 4, 71, 142 sunt divizori ai numărului 284 şi suma lor este 220.
Să se scrie un program care găseşte toate numerele prietene dintr-un interval dat de numere naturale
[x, y]. Cele două numere care reprezintă capetele intervalului sunt citite de la tastatură şi programul face şi
validarea datelor (verifică corectitudinea datelor de intrare). Nu se vor folosi tablouri.
Problema nr. 4.2.
Numerele naturale pot fi clasificate în: deficiente, perfecte sau abundente după cum suma divizorilor
este mai mică, egală sau mai mare decât valoarea numărului. Astfel:
n = 12 este abundent deoarece are suma divizorilor sd = 1+2+3+4+6 = 16 > 12,
n = 6 este perfect pentru că sd = 1+2+3 = 6,
n=14 este deficient deoarece sd = 1 + 2 + 7 = 10 < 14.
Scrieţi un program care citeşte două valori naturale x şi y şi, în funcţie de opţiunea utilizatorului,
afişează toate numerele perfecte, abundente sau deficiente din intervalul [x, y]. Programul trebuie să conţină
o secvenţă de validare a datelor. Nu se vor folosi tablouri.
Problema nr. 3.3.
Se citesc de la tastatură un număr necunoscut de numere întregi nenule terminate cu 0. Să se
stabilească dacă acestea:
- formează un şir strict crescător (tip şir = 6)
- formează un şir crescător (tip şir = 5)
- formează un şir strict descrescător (tip şir = 2)
- formează un şir descrescător (tip şir = 3)
- sunt identice (şirul este constant) (tip şir = 4)
- nu sunt ordonate (tip şir = 1)
Observaţii:
1. Numerele citite nu se vor memora într-un vector (tablou).
Indicaţii:
Intre doua elemente ale şirului se pot stabili următoarele relaţii de ordine:
- mai mic
- egal
- mai mare
Se determina numărul de relaţii de ordine de fiecare tip şi în funcţie de acest număr se stabileşte tipul
şirului astfel:
a. numai relaţii mai mic - sir strict crescător
b. relaţii mai si relaţii egal – sir crescător
c. numai relaţii egal – sir constant
d. relaţii egal si relaţii mai mare – sir descrescător
e. numai relaţii mai mare – sir strict descrescător
f. toate tipurile de relaţii – sir oarecare