Sunteți pe pagina 1din 5

Laborator săptămâna 29.10.2018 - 2.11.

2018
Laborator săptămâna 5.11.2018 - 9.11.2018

OBIECTIVE:
- utilizarea instrucţiunilor if, switch
- utilizarea instrucţiunilor repetitive while, do while, for

I. EXERCITII

1. Care este efectul urmatoarelor instructiuni pentru valorile 0,1,2,3,4,5:


a) switch (grade) {
case 4: printf("Excelent"); break;
case 3: printf("Good"); break;
case 2: printf("Average"); break;
case 1: printf("Poor"); break;
case 0: printf("Failing"); break;
default: printf("Illegal Grade"); break;
}
b) switch (grade) {
case 4: printf("Excelent");
case 3: printf("Good");
case 2: printf("Average");
case 1: printf("Poor");
case 0: printf("Failing");
default: printf("Illegal Grade");
}
c) switch (grade) {
case 4: case 3: case 2: case 1: printf("Passing"); break;
case 0: printf("Failing"); break;
default: printf("Illegal Grade"); break;
}

2. Ce rezulta in urma executiei fragmentului de cod urmator:


a) i = 9384;
do {
printf("%d", i);
i /= 10;
}
while (i>10);

b) i=1;
while (i <= 128) {
printf("%d ", i);
i*=2;
}

c) for (i=5, j=i-1; i>0, j>0; --i, j=i-1)


printf("%d", i);

1
d) sum = 0;
for (i = 0; i<10; i++) {
if (i % 2}
continue;
sum += i;
}
printf("%d\n", sum);

II. PROBLEME

1. Să se determine şi să se afişeze dacă un caracter citit de la tastatură este literă mare, litera
mică sau cifră.

2. Determinaţi denumirea unei cifre introduse de la tastatură în limba engleză şi în limba


română.

3. Scrieţi un program care citeşte trei numere întregi nenule a, b, c şi verifică dacă acestea
au acelaşi semn.

4. Se citesc numere întregi până la întâlnirea numărului 0. Să se calculeze şi să se afişeze


suma numerelor pozitive şi câte numere impare sunt. (Implementare folosind atât
instructiunea while cât și do while).

5. Se citeşte un număr natural n. Să se determine câte cifre pare şi câte cifre impare are n.

6. Se citeşte un număr natural n. Să se scrie un algoritm care afişează mesajul „da” dacă cea
mai semnificativă cifră este strict mai mare decât cifra unităţilor sau mesajul „nu” în caz
contrar. De exemplu, pentru n=5832 se va afişa „da” pentru că 5>2, iar pentru n=4539 se
va afişa „nu”.

7. Să se calculeze și să se afișeze suma numerelor multiple de 3 pâna la un număr N dat.

8. Se dă un număr natural n. Să se afişeze cea mai mare cifră a lui n şi numărul de apariţii în
n.

9. Se consideră funcţia:

 x2 − 9
 , pentru x < 1
 x − 1
f ( x) = x , pentru 1 ≤ x ≤ 5
 1
 , pentru x > 5
 x − 5

Să se afişeze:
• valorile funcţiei f(x) pentru x∈[a,b], cu pasul p;
• numărul punctelor in care x şi f(x) sunt de acelaşi semn şi media aritmetică a
valorilor calculate.
• a, b şi p se citesc de la tastatură, cu validare, astfel incât a<=b.

2
10. Folosind instrucţiunile for, while, do while să se calculeze sumele:
n
i
• ∑
i =1 (i + 1)
2

n
1
• ∑ (−1) i+1 i 2
i =1
1 1 1
• 1+ + + ... + , pentru n>=2.
2! 3! n!

11. Se citesc de la tastatură valori întregi, până la introducerea lui EOF. Să se calculeze şi să
se afişeze:
• numărul valorilor citite
• media aritmetică a valorilor
• numărul de valori pozitive
• valoarea minimă

12. Se citesc de la tastatură valori reale, până la introducerea lui EOF.


Să se calculeze şi să se afişeze:
• media aritmetică
• media geometrică (radicalul de ordin n dintr-un numar x se calculează prin apelul
funcţiei pow(x,1.0/n) cu prototipul în math.h )
• media armonică ( n/med_arm=1/val1 + 1/val2 + ... + 1/valn)

Indicaţie: Pentru testarea terminării introducerii datelor prin EOF, se va folosi


construcţia:
ind=scanf("%d",&n);
while(ind!=EOF)
{
...
ind=scanf("%d",&n);
}

13. Să se stabilească dacă un număr n este prim sau nu.

14. Să se afişeze numerele prime dintre două valori min şi max, citite cu validare, astfel încât
min<=max. Să se afişeze toate numerele divizibile cu un număr pozitiv dat (citit) aflate
intre două valori min şi max.

15. Pentru un număr întreg N, să se afişeze divizorii şi ordinele lor de multiplicitate.

16. Să se aproximeze cu epsilon=0.0001, următoarele serii



1
• ∑
i =1 ( 2i + 1)
2

1 1 1
• 1 + + + ... + + ...
2! 3! n!
1
Indicaţie: Se calculează termenii x k = până când este îndeplinită condiţia:
(2k + 1) 2
x k +1 − x k < epsilon .
3
17. Să se afişeze numerele prime dintre două valori min şi max, citite cu validare, astfel încât
min<=max. Analog pentru afisarea tuturor numerelor divizibile cu un număr pozitiv dat.

18. Se citeşte de la tastaură un şir de maxim 9 caractere. Să se afişeze numărul format din
cifrele ce se găsesc în şirul dat.

19. Să se afişeze codurile ASCII ale literelor mari şi mici ale alfabetului.

20. Se citesc n tripletele de numere naturale. Să se afişeze tripletele cu proprietatea că al 3-


lea număr este media aritmetică a celorlalte două.

21. Să se calculeze valoarea expresiei (n-a)b-n , unde n ia valori între a şi b inclusiv; a şi b se


citesc şi se validează, a.i. a,b >0 şi b>a. Nu se va utiliza funcţia pow pentru ridicarea la
putere, ci se vor folosi înmulţiri succesive.

22. Să se calculeze valoarea polinomului p(x)=a0 +a1x1+......+ anxn în punctul x = x0.


Coeficienții polinomului, gradul acestuia și x0 se vor citi de la tastatură.

23. Scrieţi un program care citeşte un număr natural n şi determină şi afişează oglinditul lui
n, adică numărul obţinut din scrierea inversă a cifrelor lui n.

24. Scrieţi un program care citeşte un număr natural n şi afişează mesajul „DA” dacă cifrele
lui n sunt în ordine strict crescătoare (de la stânga la dreapta) sau mesajul „NU” în caz
contrar. De exemplu, pentru n = 2467 se va afişa „DA”, iar pentru n = 2396 se va afişa
„NU”.

25. Scrieţi un program care pentru un număr natural dat n şi o cifră k, verifică dacă cifra k
apare sau nu printre cifrele lui n. Algoritmul va afişa mesajele „DA” sau „NU”. De
exemplu, pentru n = 6543254 şi k = 3, se va afişa „DA”.

26. Scrieţi un program care calculează suma:


S = 1 + 1∙2 + 1∙2∙3 + 1∙2∙3∙4 + ... + 1∙2∙3∙...∙n, pentru un număr natural nenul n.

27. Să se scrie un program care citeşte două numere naturale n1 şi n2 şi care afişează mesajul
„da” dacă suma pătratelor cifrelor lui n1 este egală cu suma cifrelor lui n2 sau „nu” în
caz contrar.Să se scrie un program care citeşte un număr natural n şi afişează mesajul
„da” dacă toate cifrele lui n sunt distincte, sau „nu” dacă n nu are toate cifrele distincte.

28. Să se scrie un program care citeşte un număr natural n şi elimină o singură cifră din n
astfel încât numărul rămas să fie maxim.

29. Scrieţi un program care citeşte două numere naturale nenule a şi b şi determină şi
afişează numitorul şi numărătorul fracţiei ireductibile egale cu a/b.

30. Scrieţi un program care determină perimetrul şi aria unui triunghi. Există 4 situaţii
posibile. Un triunghi poate fi: isoscel, echilateral, dreptunghic, oarecare. In funcţie de
cifra introdusă de la tastatură (1, 2, 3 sau 4) se cere să se citească pentru fiecare tip de
triunghi datele necesare, astfel încât să se poată calcula perimetrul şi aria triunghiului.

4
31. Scrieţi un program care citeşte de la tastatura un număr natural n (n<1000) și un șir cu n
numere întregi din intervalul [100, 999]. Programul construieşte un șir de numere rezultat
prin înlocuirea fiecărui număr din şirul citit cu numărul obţinut prin interschimbarea
cifrei unităților cu cifra sutelor. Numerele din noul șir se vor afişa pe ecran separate
printr-un singur spaţiu.
Exemplu : pentru n=3 si şirul 123 , 904 , 500 se afişează 321 , 409 , 5.

32. Scrieţi un program care afişează toate numerele naturale, mai mari decât 10 și mai mici
decât o valoare dată n, n<=2.000.000 , formate doar din cifre identice.
Exemplu: pentru n=195 se afişează : 11 , 22 , 33 , 44 , 55 , 66 , 77 , 88 , 99 , 111.

33. Să se scrie un program care calculează aranjamente de "n" luate câte "k".

34. Să se scrie un program care afișează toate numerele prime gemene mai mici decât un
număr natural n dat. Spunem că două numere a și b sunt prime gemene dacă indeplinesc
următoarele condiții:
1. sunt prime
2. |a-b|=2

35. Se consideră un punct P0 şi n puncte din plan. Să se scrie un program care determină cel
mai apropriat punct de P0 din cele n date şi distanţa corespunzătoare.

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