Sunteți pe pagina 1din 25

Instrucţiunile limbajului C.

48

CAPITOLUL 4

INSTRUCŢIUNILE LIMBAJULUI C

Instrucţiunea if

Instrucţiunea if este una din instrucţiunile de selecţie, numită uneori instrucţiune


condiţională. Instrucţiunile de selecţie iau decizii bazate pe rezultatul unei condiţii.
Forma generală a instrucţiunii if este următoarea:
if(expresie) instrucţiune;
expresie poate fi orice expresie C validă.
Dacă valoarea expresiei este evaluată ca true (adevărată), instrucţiune va fi executată.
Dacă expresie este evaluată ca false (fals), atunci ea va fi sărită şi se va executa instrucţiunea
care urmează după if. În limbajul C, o expresie este true dacă ea este evaluată ca diferită de
zero şi false dacă ea este evaluată ca fiind zero.
O altă formă de reprezentare a instrucţiunii if este prezentată în continuare:
if(expresie) instrucţiune1;
else instrucţiune2;
Dacă expresie este true, va fi executată instrucţiune1, iar instrucţiune2 va fi sărită.
Dacă expresie este false, atunci instrucţiune1 este sărită şi se va executa instrucţiune2.
Adăugarea lui else conduce la luarea unei decizii dintre cele două căi posibile.
În limbajul C se pot înlănţui două sau mai multe instrucţiuni. Această înlănţuire poartă
numele de secvenţă de instrucţiuni. Pentru a creea o secvenţă de instrucţiuni este suficientă
cuprinderea instrucţiunilor ce vor forma secvenţa între paranteze acolade. Forma generală a
instrucţiunii if folosind secvenţa de instrucţiuni este următoarea:
if(expresie) instrucţiune;
else
if(expresie) instrucţiune;
else
if(expresie) instrucţiune;
...
else instrucţiune;
Expresiile sunt evaluate de sus în jos. Când este găsită o expresie true, instrucţiunea
asociată cu ea este executată şi restul scării este sărit. Dacă nici o expresie nu este true, adică
dacă toate testele condiţionale eşuează, va fi executat ultimul else. Dacă ultimul else nu este
prezent şi toate testele condiţionale au eşuat, nu se produce nici o acţiune.

Aplicaţia 1:
Să se realizeze programul care calculează valoarea funcţiei y
într-un punct x citit de la tastatură.
 9 x 4 + 7 x 3 − 2 x 2 + x − 1; x < 0

y( x) =  2 ;5x = 0
 3
 2 x + 8 x + 4; x > 0
49 Instrucţiunile limbajului C.

Specificarea problemei:
Date de intrare: x - punctul în care se calculează valoarea funcţiei;
Date de ieşire: y - valoarea funcţiei;
Date de test: Valoarea lui x = 3
y (x) = 71,86
Algoritmul problemei:
Început algoritm
Citeşte x
dacă x<0 atunci y ←9 ⋅ x 4 + 7 ⋅ x 3 − 2 ⋅ x 2 + x −1
altfel dacă x = 0 atunci y ← 25
altfel y ←2 ⋅ x 3 + 8 x + 4
sfârşit dacă
sfârşit dacă
scrie y
sfârşit algoritm.
Programul corespunzător algoritmului este:

#include<stdio.h>
#include<math.h>
void main()
{ float x,y;
printf("Introduceti pe x:");
scanf("%f",&x);
if(x<0) y=9*x*x*x*x+7*x*x*x-2*x*x+x-1;
else if(x= =0) y=25;
else y=2*x*x*x+8*sqrt(x)+4;
printf("y(x)=%6.2f",y);
}

Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
x – reprezintă punctul în care se calculează valoarea funcţiei;
y – reprezintă valoarea funcţiei;
Folosind funcţia standard scanf se va citi valoarea punctului în care se calculează
funcţia iar cu ajutorul instrucţii condiţionale if, în funcţie de valoarea citită, se va calcula
valoarea funcţiei y. La sfârşit, se afişează rezultatul folosind funcţia standard printf.
S-a inclus fişierul sursă math.h datorită funcţiei matematice sgrt care returnează
rădăcina pătrată variabilei x.

Aplicaţia 2:
Să se realizeze un meniu cu următoarele opţiuni:
Adunare
Scădere
Multiplicare
Împărţire
iar în funcţie de alegerea făcută de utilizator să se realizeze operaţiile specificate pentru doua
numere citite de la tastatură.
Instrucţiunile limbajului C. 50

Specificarea problemei:
Date de intrare: meniul;
a, b - două numere citite de la tastatură;
Date de ieşire: realizarea operaţiilor corespunzătoare: adunare, scădere, multiplicare,
împărţire
Date de test: Doriti:
Adunare
Scadere
Multiplicare
Impartire
Introduceti prima litera: m
Introduceti primul număr: 4.3
Introduceti al doilea număr: 2.8
a*b=12.04
Algoritmul problemei:
Început algoritm
scrie “Doriţi Adunare Scădere Multiplicare”
citeşte prima literă, a, b
dacă (literă = A sau literă = a) atunci scrie a+b
altfel dacă (literă = S sau literă = s) atunci scrie a-b
altfel dacă (literă = M sau literă = m) atunci scrie a*b
altfel dacă (literă = I şi b ≠ 0) sau (literă = i şi b ≠ 0) scrie
a/b
sfârşit dacă
sfârşit dacă
sfârşit dacă
sfârşit dacă
sfârşit algoritm
Programul corespunzător algoritmului este:
#include <conio.h>
#include <stdio.h>
void main ()
{
float a,b;
char ch;
clrscr();
printf ("Doriti :\n");
printf ("Adunare\nScadere\nMultiplicare\nImpartire\n");
printf ("Introduceti prima litera: ");
ch=getche ();
printf ("\nIntroduceti primul numar: ");
scanf ("%f", &a);
printf ("\nintroduceti al doilea numar: ");
scanf ("%f", &b);
if ((ch=='A')||(ch=='a')) printf ( "a+b=%1.2f", a+b);
else if ((ch=='S')||(ch=='s')) printf ("a-b=%1.2f", a-b);
else if ((ch=='M')||(ch=='m')) printf ("a*b=%1.2f", a*b);
else if ((ch=='I'&&b!=0)||(ch=='i'&&b!=0)) printf ("a/b=%1.2f", a/b);
getch();
}
51 Instrucţiunile limbajului C.

Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
a – reprezintă primul număr;
b – reprezintă al doilea număr;
ch - este variabila în care se va păstra codul tastei apăsate;
Folosind funcţia standard printf se va afişa pe ecran meniul şi se va cere utilizatorului
să introducă prima literă corespunzătoare operaţiei dorite. Citirea celor două numere se face cu
ajutorul funcţiei standard scanf. Funcţia getche se foloseşte pentru a citi tasta apăsată, iar
codul tastei apăsate se va depune în variabila ch. Această funcţie are cele mai comune utilizări
în citirea variabilelor selectate dintr-un meniu Cu ajutorul instrucţiunii condiţionale if, în
funcţie de tasta apăsată, se va realiza operaţia corespunzătoare. În partea de expresie a
instrucţiunii if s-a folosit operatorul SAU (||) pentru a realiza operaţia corespunzătoare
indiferent dacă se apasă tasta a sau A. La realizarea operaţiei de împărţire avem nevoie de
operatorul SI (&&) pentru a determina dacă numitorul este diferit de zero.

Aplicaţia 3:
Să se realizeze programul care calculează media generală a unui student care a avut trei
examene în sesiunea de iarna. Pentru fiecare materie trebuie să se introducă notele obţinute şi
numărul de credite.
Formula după care se calculează media este următoarea:
n1 ⋅ c1 + n 2 ⋅ c 2 + n3 ⋅ c3
media =
c1 + c 2 + c3
În funcţie de medie se va afişa dacă studentul este bursier sau nebursier, condiţia
pentru bursier fiind ca media ≥ 8.
Specificarea problemei:
Date de intrare: n1, n2, n3, c1, c2, c3 - trei note şi trei credite citite de la tastatură;
Date de ieşire: media şi informaţia privind situaţia de bursier sau nebursier a
studentului;
Date de test: Introduceti nota 1 si creditele corespunzatoare notei:
10 2
Introduceti nota 2 si creditele corespunzatoare notei:
7 3
Introduceti nota 3 si creditele corespunzatoare notei:
8 2
Media = 8.14
BURSIER
Algoritmul problemei:
Început algoritm
citeşte n1,n2,n3,c1,c2,c3
n1 ⋅ c1 + n 2 ⋅ c 2 + n3 ⋅ c3
media ←
c1 + c 2 + c3
dacă media ≥ 8 atunci scrie BURSIER
altfel scrie NEBURSIER
sfârşit dacă
sfârşit algoritm.
Instrucţiunile limbajului C. 52

Programul corespunzător algoritmului este:


#include<stdio.h>
#include<conio.h>
void main()
{
int n1,n2,n3,c1,c2,c3;
float media;
clrscr();
printf("Introduceti nota 1 si creditele corespunzatoare notei:\n");
scanf("%d %d",&n1,&c1);
printf("Introduceti nota 2 si creditele corespunzatoare notei:\n");
scanf("%d %d",&n2, &c2);
printf("Introduceti nota 3 si creditele corespunzatoare notei:\n");
scanf("%d %d",&n3, &c3);
media=(float)(n1*c1+n2*c2+n3*c3) /(c1+c2+c3);
printf("Media= %1.2f\n",media);
if(media>=8) printf("BURSIER");
else printf("NEBURSIER");
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
n1, c1 – reprezintă prima notă respectiv creditele corespunzătoare acesteia;
n2, c2 – reprezintă a doua notă respectiv creditele corespunzătoare acesteia;
n3, c3 - reprezintă a treia notă respectiv creditele corespunzătoare acesteia;
media-reprezintă valoarea mediei şi se calculează după formulă;
Folosind funcţia standard scanf se vor citi cele trei credite şi cele trei note iar apoi se
va calcula media folosind formula dată în problemă. Aici se poate observa folosirea
operatorului cast. Utilizarea lui a fost necesară deoarece notele şi creditele sunt de tip întreg şi
astfel vom obţine media de tip întreg, în timp ce noi vrem ca media să fie de tip float. În
continuare, cu ajutorul instrucţiunii condiţionale if se va testa media iar dacă aceasta este ≥ 8
se va afişa BURSIER, în caz contrar se va afişa NEBURSIER.

Instrucţiunea for

Este una din cele trei instrucţiuni de ciclare ale limbajului C. Ea permite ca una sau
mai multe instrucţiuni să fie repetate. Forma generală a instrucţiunii for este următoarea:
for (iniţializare; test_ condiţie; reiniţializare) instrucţiune;
iniţializare – dă o valoare iniţiala variabilei care controlează ciclul.
test_condiţie – testează variabila de control, cu valoarea scop ori de cate ori ciclul se repetă.
reiniţializare – este executat la sfârşitul fiecărui ciclu. Scopul este să incrementeze variabila
de control a ciclului cu o anumită cantitate.

Aplicaţia 1:
Să se realizeze programul care afişează în ordine numerele de la 1 până la un număr n
citit de la tastatură, iar apoi afişează mesajul "am terminat".
Specificarea problemei:
Date de intrare: n - numărul până la care se vor afişa numerele;
Date de ieşire: numerele de la 1 la n şi mesajul "am terminat";
53 Instrucţiunile limbajului C.

Date de test: Introduceti pe n: 12


1 2 3 4 5 6 7 8 9 10 11 12 am terminat
Algoritmul problemei:
Început algoritm
citeşte n
i←1
cât timp i ≤ n execută scrie i
i ← i+1
sfârşit cât timp
scrie “am terminat”
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<stdio.h>
#include<conio.h>
void main ()
{
int n,i;
clrscr();
printf("Introduceti pe n:");
scanf("%d ",&n);
for(i=1; i<=n; i++)
printf ("%d ",i);
printf ("am terminat");
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă variabila de control a ciclului;
n – reprezintă numărul până la care se vor afişa numerele;
Folosind funcţia standard scanf se va citi numărul n. La început variabila de control a
ciclului se va iniţializa cu 1. Apoi este evaluată expresia i ≤ n. Deoarece ea este true, ciclul for
începe execuţia. După ce numărul este afişat, variabila i este incrementată cu 1 şi testul de
condiţie (i ≤ n) este evaluat din nou. Acest proces continuă până când i devine mai mare decât
n. Când aceasta se întâmplă, ciclul for se opreşte şi este afişat am terminat. Testul de condiţie
este executat la începutul fiecărei iteraţii. Dacă testul este false chiar de la prima iteraţie, ciclul
for nu se va executa.

Aplicaţia 2:
Să se realizeze programul care calculează suma şi produsul numerelor până la n, citit de
la tastatură, folosind instrucţiunea for.
S=1+2+3+...+n
P=1*2*3*....*n
Specificarea problemei:
Date de intrare: n - numărul până la care se face suma şi produsul;
Date de ieşire: S şi P;
Date de test: Introduceti pe n: 5
suma este S=15
produsul este P=120
Instrucţiunile limbajului C. 54

Algoritmul problemei:
Început algoritm
citeşte n
S← 0
P← 1
cât timp i ≤ n execută S ← S+i
P ← P*i
i ← i+1
sfârşit cât timp
scrie S, P
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
int n,S,i;
long P;
clrscr();
printf("Introduceti pe n: ");
scanf("%d",&n);
S=0;
P=1;
for(i=1;i<=n;i++)
{
S+=i;
P*=i;
}
printf("suma este S=%d\nprodusul este P=%ld",S,P);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă variabila de control a ciclului;
n – reprezintă numărul până la care se va calcula suma şi produsul;
S - în această variabilă se va calcula suma;
P - în această variabilă se va calcula produsul;
Folosind funcţia standard scanf se va citi numărul n. Se iniţializează S cu zero
deoarece acesta este element neutru la adunare şi P cu unu deoarece acesta este element neutru
la înmulţire. La început variabila de contor a ciclului se va iniţializa cu 1. Apoi este evaluată
expresia i ≤ n. Deoarece ea este true, ciclul for începe execuţia. După ce se calculează S şi P,
variabila i este incrementată cu 1 şi testul de condiţie (i ≤ n) este evaluat din nou. Acest
proces continuă până când i devine mai mare decât n. Când aceasta se întâmplă, ciclul for se
opreşte şi sunt afişate suma S şi produsul P.

Aplicaţia 3:
Exemplul următor calculează suma numerelor pare (s1), şi a celor impare (s2) a unui şir
de numere n citit de la tastatură.
Pentru n=4
2, 3, 4, 7 s1=2+4 , s2=3+7;
55 Instrucţiunile limbajului C.

Specificarea problemei:
Date de intrare: n - numărul de valori din care este compus şirul;
a - valorile efective;
Date de ieşire: s1 şi s2;
Date de test: Introduceti numarul de valori: 4
Introduceti valoarea 1: 1
Introduceti valoarea 2: 2
Introduceti valoarea 3: 3
Introduceti valoarea 4: 4
s1=6 si s2=4
Algoritmul problemei:
Început algoritm
Citeşte n
s1 ← 0
s2 ← 0
i←1
cât timp i ≤ n execută citeşte a
dacă a mod 2 =0 atunci s1 ← s1+a
altfel s2 ← s2+a
sfârşit dacă
i ← i+1
sfârşit cât timp
scrie s1, s2
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
int n,i,s1,s2,a;
printf("Introduceti numarul de valori: ");
scanf("%d",&n);
s1=0;
s2=0;
for(i=1;i<=n;i++)
{
printf("Introduceti valoarea %d: ",i);
scanf("%d",&a);
if(a%2==0) s1+=a;
else s2+=a;
}
printf("s1=%d si s2=%d",s1,s2);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă variabila de control a ciclului;
n – reprezintă numărul de valori din care este compus şirul;
a - valorile efective;
Instrucţiunile limbajului C. 56

s1 - în această variabilă se va calcula suma numerele pare;


s2 - în această variabilă se va calcula suma numerelor impare;
Folosind funcţia standard scanf se va citi numărul n. Se iniţializează s1 cu zero,
deoarece aceste este element neutru la adunare şi s2 tot cu zero deoarece avem tot o adunare.
La început variabila de contor a ciclului se va iniţializa cu 1. Apoi este evaluată expresia i ≤ n.
Deoarece ea este true, ciclul for începe execuţia. După ce se citeşte, cu ajutorul funcţiei
standard scanf, valoarea efectivă a numărului se testează dacă acesta este par sau impar. Dacă
restul împărţirii numărului la 2 este zero înseamnă că numărul este par şi se poate aduna în
suma s1. Dacă nu, este impar şi se adună în suma s2. După ce se calculează s1 sau s2 în
funcţie de cum este numărul, par sau impar, variabila contor este incrementată cu 1 şi testul de
condiţie (i ≤ n) este evaluat din nou. Acest proces continuă până când i devine mai mare decât
n. Când aceasta se întâmplă, ciclul for se opreşte şi sunt afişate cele două sume s1 şi s2.

Instrucţiunea while

Este a doua instrucţiune repetitivă a limbajului C şi are următoarea formă generală:


while (expresie) instrucţiune;
Ciclul while lucrează prin repetarea scopului atâta timp cât expresie este true. Când
expresie este false ciclul încetează. Valoarea expresiei este cercetată la începutul ciclului,
aceasta însemnând că, dacă expresie este false de la început ciclul nu se va executa.

Aplicaţia 1:
Să se realizeze programul care determină dacă un număr n este sau nu un număr prim.
Un număr este prim daca nu se împarte decât la 1 si la el însuşi.
Specificarea problemei:
Date de intrare: n - numărul pe care îl verificăm dacă este sau nu prim;
Date de ieşire: dacă numărul este sau nu prim;
Date de test: Introduceti numarul: 9
Numarul nu este prim
Algoritmul problemei:
Început algoritm
citeşte n
prim ← 0
i← 2
cât timp i ≤ n/2 şi prim=0 execută dacă n mod i =0 atunci prim ← 1
sfârşit dacă
i ← i+1
sfârşit cât timp
dacă prim ← 0 atunci scrie „Numărul este prim”
altfel scrie „Numărul nu este prim”
sfârşit dacă
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
int n,i,prim;
clrscr();
57 Instrucţiunile limbajului C.
printf("Introduceti numarul: ");
scanf("%d",&n);
prim=0;
i=2;
while(i<=n/2&&prim==0)
{
if(n%i==0) prim=1;
i=i+1;
}
if(prim==0) printf("Numarul este prim");
else printf("Numarul nu este prim");
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă variabila de control a ciclului;
n – reprezintă numărul ce se citeşte, respectiv numărul care vrem să vedem dacă
este un număr prim sau nu este un număr prim;
prim - este o variabilă de test;
Folosind funcţia standard scanf se va citi numărul n. La început variabila prim este
iniţializată cu zero. În momentul în care am găsit un divizor al numărului citit de la tastatură,
variabila prim va lua valoarea 1. Dacă am găsit un divizor nu mai are sens să mai continuăm şi
de aceea în testul de condiţie al instrucţiunii while se mai pune o condiţie prim=0. Se
realizează testarea condiţiei până când i devine mai mare sau egal cu n/2 sau prim=1. Când
aceasta se întâmplă, ciclul while se opreşte şi la sfârşit se testează variabila prim. Dacă este
zero numărul este prim iar dacă nu este numărul nu este prim deoarece am găsit cel puţin un
divizor al său.

Aplicaţia 2:
Să se realizeze programul care calculează suma şi numărul cifrelor unui număr n ce se
citeşte de a tastatură.
n=234 , S=9, nr=3
Specificarea problemei:
Date de intrare: n - numărul pentru care calculăm suma şi numărul cifrelor;
Date de ieşire: suma cifrelor S, numărul cifrelor Nr;
Date de test: Introduceti numarul: 23456
Suma cifrelor: S=20
Numarul cifrelor: Nr=5
Algoritmul problemei:
Început algoritm
citeşte n
S← 0
Nr ← 0
cât timp n ≠ 0 execută r ← n mod 10
S ← S+r
n ← [n / 10 ]
Nr ← Nr+1
sfârşit cât timp
scrie S, Nr

sfârşit algoritm
Instrucţiunile limbajului C. 58
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
int Nr,S,n,r;
clrscr();
printf("Introduceti numarul: ");
scanf("%d",&n);
S=0;
Nr=0;
while(n!=0)
{
r=n%10;
S=S+r;
n=n/10;
Nr=Nr++;
}
printf("Suma cifrelor: S=%d\nNumarul cifrelor: Nr=%d",S,Nr);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
n – reprezintă numărul pentru care calculăm suma şi numărul cifrelor;
r - este o variabilă în care vom reţine ultima cifră din număr;
S - în această variabilă se va calcula suma cifrelor numărului n;
Nr - în această variabilă se va calcula numărul cifrelor numărului n;
Folosind funcţia standard scanf se va citi numărul n. Iniţializăm suma S cu zero iar Nr
tot cu zero, acesta fiind elementul neutru la adunare. Până când numărul citit n este diferit de
zero se realizează o serie de operaţii asupra acestuia. Pentru a obţine ultima cifră a numărului
se va reţine în variabila r restul împărţirii lui n la 10. Pentru exemplul nostru la prima iteraţie
în variabila r vom avea cifra 6. Apoi acest rest, respectiv ultima cifră a numărului, se adună în
suma S (S=0+6). Mai trebuie să scăpăm de ultima cifră a numărului pentru a putea relua
algoritmul. Acest lucru se realizează prin împărţire întreagă a lui n la 10 (n=2345). Totodată se
realizează şi o contorizare a numărului de cifre în variabila Nr care se incrementează la fiecare
iteraţie (Nr=1). Se realizează testarea condiţiei până când n va fi egal cu zero. Când aceasta se
întâmplă, ciclul while se opreşte şi se afişează rezultatul obţinut: suma S şi numărul de cifre
Nr.

Aplicaţia 3:
Să se calculeze suma numerelor impare şi produsul numerelor pare până la un n citit de
la tastatură. Se cere ca suma şi produsul să se calculeze folosind două structuri while, una
pentru calcului sumei şi una pentru calculul produsului.
S=1+3+5+.......+2n-1
P=2*4*6*......*2n
Specificarea problemei:
Date de intrare: n - numărul până la care dorim să calculăm suma şi produsul;
Date de ieşire: Suma S, Produsul P;
Date de test: Introduceti pe n: 4

Suma: S=16
59 Instrucţiunile limbajului C.
Produsul: P=384
Algoritmul problemei:
Început algoritm
citeşte n
S← 0
i←1
cât timp i ≤ 2n-1 execută S ← S+i
i ← i+2
sfârşit cât timp
scrie S
P← 1
i←2
cât timp i ≤ 2n execută P ← P*i
i ← i+2
sfârşit cât timp
scrie P
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
int i,n,S;
long P
clrscr();
printf("Introduceti pe n: ");
scanf("%d",&n);
S=0;
i=1;
while(i<=2*n-1)
{
S+=i;
i+=2;
}
printf("Suma S=%d",S);
P=1;
i=2;
while(i<=2*n)
{
P*=i;
i+=2;
}
printf("\nProdusul P=%ld",P);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă variabila de control a ciclului;

n – reprezintă numărul ce se citeşte, respectiv numărul până la care dorim să


calculăm suma şi produsul;
Instrucţiunile limbajului C. 60
S - în această variabilă se va calcula suma;
P - în această variabilă se va calcula produsul;
Folosind funcţia standard scanf se va citi numărul n. La început se iniţializează suma
cu zero şi variabila contor i cu unu. Până când variabila contor i este mai mică sau egală cu 2n-
1 se calculează suma S şi se incrementează variabila contor cu doi pentru a putea realiza suma
numerelor impare. Când condiţia nu mai este îndeplinită, ciclul while se opreşte şi se afişează
valoarea sumei S. În continuare trebuie să se iniţializeze din nou variabila contor, de această
dată cu doi pentru că avem produsul numerelor pare. Până când variabila contor i este mai
mică sau egală cu 2n se calculează produsul P şi se incrementează variabila contor cu doi
pentru a putea realiza produsul numerelor pare. Când condiţia nu mai este îndeplinită, ciclul
while se opreşte şi se afişează valoarea produsului P.

Instrucţiunea do-while

Instrucţiunea do-while are următoarea formă generală:


do
{
instrucţiuni
}
while (expresie);
Dacă se execută o singură instrucţiune parantezele acolade pot să lipsească. Mulţi
programatori preferă să lase totuşi acoladele pentru a vedea că nu este vorba de o instrucţiune
while. Ciclul do repetă instrucţiunea sau instrucţiunile din corpul său cât timp expresie este
true şi se opreşte când expresie devine false. Ciclul do va executa totdeauna instrucţiunile din
corpul său cel puţin o dată, deoarece expresie, care controlează ciclul, este testată la sfârşitul
ciclului. Deosebirea dintre do-while şi while constă în faptul că pentru instrucţiunea while
testul se face la începutul ciclului iar pentru do-while la sfârşit.

Aplicaţia 1:
Să se realizeze programul care va afişa pe ecran următorul meniu:
Adunare
Scădere
Multiplicare
şi va realiza operaţiile corespunzătoare. Dacă utilizatorul va tasta A se va face adunare, dacă
va apăsa S se va realiza scădere, dacă se va apăsa M se va face multiplicare. Utilizând
instrucţiunea do-while se va forţa utilizatorul să introducă un răspuns valid, repetând ciclul
până când se va obţine un astfel de răspuns.
Specificarea problemei:
Date de intrare: meniu;
a, b - două numere citite de la tastatură;
Date de ieşire: realizarea operaţiilor corespunzătoare: adunare, scădere,
multiplicare, împărţire;
Date de test: Doriti:
Adunare
Scadere
Multiplicare
Introduceti prima litera: A
Introduceti primul numar: 3.4

Introduceti al doilea numar: 6.8


a+b=10.20
61 Instrucţiunile limbajului C.
Algoritmul problemei:
Început algoritm
scrie "Doriţi Adunare Scădere Multiplicare”
repetă scrie „Introduceţi prima literă”
citeşte literă
până când (literă = A sau literă = S sau literă = M)
citeşte a
citeşte b
dacă (literă = A) atunci scrie a+b
altfel dacă (literă = S) atunci scrie a-b
altfel scrie a*b
sfârşit dacă
sfârşit dacă
sfârşit algoritm
Programul corespunzător algoritmului este:
#include <conio.h>
#include <stdio.h>
void main ()
{
float a,b;
char ch;
clrscr();
printf ("Doriti: \n");
printf ("Adunare\nScadere\nMultiplicare \n");
do {
printf ("Introduceti prima litera: ");
ch=getche ();
printf ("\n");
}while ( ch!='A' && ch!='S' && ch!='M' );
printf ("Introduceti primul numar:");
scanf ("%f",&a);
printf ("Introduceti al doilea numar: ");
scanf ("%f",&b);
if (ch=='A') printf ("a+b=%1.2f", a+b);
else if (ch=='S') printf ("a-b=%1.2f", a-b);
else if (ch=='M') printf ("a*b=%1.2f", a*b);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
a – reprezintă primul număr;
b – reprezintă al doilea număr;
ch - este variabila în care se va păstra codul ASCII al tastei apăsate;
Folosind funcţia standard printf se va afişa pe ecran meniul. Utilizând instrucţiunea
do-while se va forţa utilizatorul să introducă un răspuns valid, repetând citirea tastei până
când aceasta coincide cu una validă. Citirea celor două numere se face cu ajutorul funcţiei
standard scanf. Cu ajutorul instrucţiunii condiţionale if, în funcţie de tasta apăsată, se va

realiza operaţia corespunzătoare: adunare, scădere, multiplicare. În acest caz utilizatorul


trebuie să introducă litere mari, respectiv A, S, M.
Instrucţiunile limbajului C. 62

Aplicaţia 2:
Să se determine dacă un număr este sau nu este palindrom. Un număr este palindrom
dacă coincide cu numărul format din cifrele sale în ordine inversă.
Numărul 23432 este palindrom pentru că inversul său 23432 coincide cu numărul iniţial.
Numărul 234 nu este palindrom pentru că inversul său 432 nu coincide cu numărul iniţial.
Specificarea problemei:
Date de intrare: n - numărul care dorim să verificăm dacă este palindrom;
Date de ieşire: este palindrom sau nu este palindrom;
Date de test: Introduceti numărul: 23432
Numărul este palindrom
Algoritmul problemei:
Început algoritm
citeşte n
m← n
inv ← 0
repetă r ← n mod 10
inv ← inv*10+r
n ← [n / 10 ]
până când n=0
dacă inv = m atunci scrie „Numărul este palindrom”
altfel scrie „Numărul nu este palindrom”
sfârşit dacă
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<conio.h>
#include<stdio.h>
void main()
{
int n,m,inv,r;
clrscr();
printf("Introduceti numarul: ");
scanf("%d",&n);
m=n;
inv=0;
do{
r=n%10;
inv=inv*10+r;
n=n/10;
}while(n!=0);
if(inv==m)printf("Numarul este palindrom");
else printf("Numarul nu este palindrom");
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
n – reprezintă numărul pe care îl verificăm dacă este sau nu palindrom;

inv – reprezintă variabila în care vom construi numărul invers;


m - reprezintă variabila în care se va păstra valoarea lui n;
r - este o variabilă în care vom reţine ultima cifră din număr;
63 Instrucţiunile limbajului C.
Folosind funcţia standard printf se va cere utilizatorului să introducă numărul n şi
apoi se citeşte acest număr cu ajutorul funcţiei standard scanf. Se iniţializează variabila inv cu
zero şi se reţine în variabila m valoarea numărului citit, deoarece asupra acestuia se fac o serie
de operaţii. În variabila r se reţine ultima cifră a numărului, obţinută din restul împărţirii lui n
la 10. Apoi se construieşte numărul invers şi se scapă de ultima cifră din număr pentru a putea
relua ciclul. Aceste operaţii se repetă până când numărul devine zero, respectiv cât timp n este
diferit de zero. Când numărul este zero se iese din ciclul do-while şi se compară variabila inv
cu variabila m, în care, în prealabil am reţinut valoarea iniţială a numărului citit. Dacă cele
două numere coincid înseamnă că numărul este palindrom, dacă nu coincid înseamnă că
numărul nu este palindrom.
În continuare, se prezintă paşii prin care se obţine numărul invers, pentru numărul
23432:
Pasul n inv r
1 2343 0 -
2
2 2343 0*10+2=2 2
3 234 2*10+3=23 3
4 23 23*10+4=234 4
5 2 234*10+3=2343 3
6 0 2343*10+2=23432 2
7 stop

Aplicaţia 3:
La o staţie meteorologică se înregistrează zilnic temperaturi până când se înregistrează
temperatura de zero grade. Să se scrie programul care determină care a fost cea mai mare
temperatură şi numărul de temperaturi înregistrate.
Specificarea problemei:
Date de intrare: t - temperaturile citite;
Date de ieşire: cea mai mare temperatură şi numărul de temperaturi înregistrate;
Date de test: Dati prima temperatura: 5
Dati o nouă temperatura: 5.8
Dati o nouă temperatura: 6
Dati o nouă temperatura: 9.5
Dati o nouă temperatura: 0
Cea mai mare temperatura este : 9.50
Numarul de temperaturi inregistrate este: 4
Algoritmul problemei:
Început algoritm
scrie „Daţi prima temperatură t”
citeşte t
dacă t=0 atunci scrie „Nu s-a înregistrat nici o temperatură”
altfel nr ← 0, max ← t
repetă scrie “Daţi o nouă temperatură”
citeşte t
nr ← nr+1
dacă t>max atunci max ← t
sfârşit dacă

până când t=0


scrie „cea mai mare temperatură”
scrie „numărul de temperaturi”
Instrucţiunile limbajului C. 64
sfârşit dacă
sfârşit algoritm
Programul corespunzător algoritmului este:
#include<stdio.h>
#include<conio.h>
void main()
{
double max,t;
int nr;
clrscr();
printf("\nDati prima temperatura: ");
scanf("%lf",&t);
if(t==0)
printf("\nNu s-a inregistrat nici o temperatura");
else
{
nr=0;
max=t;
do{
printf("\nDati o noua temperatura:");
scanf("%lf",&t);
nr++;
if(t>max)
max=t;
}while(t!=0);
printf("\nCea mai mare temperatura este:%1.2lf",max);
printf("\nNumarul de temperaturi inregistrate este:%d",nr);
}
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
nr – reprezintă variabila în care se contorizează numărul de valori înregistrate;
max – reprezintă variabila în care vom păstra temperatura maximă;
t - reprezintă variabila în care se vor păstra temperaturile;
Folosind funcţia standard printf se va cere utilizatorului să introducă prima
temperatură, iar apoi se citeşte această temperatură cu ajutorul funcţiei standard scanf. Cu
ajutorul instrucţiunii condiţionale if se va testa dacă aceasta este sau nu zero. În cazul în care
prima temperatură este zero se afişează că nu s-a înregistrat nici o temperatură, iar în cazul
când aceasta nu este zero, se iniţializează variabila max cu prima temperatură citită şi variabila
nr cu zero, acesta fiind elementul neutru la adunare. Apoi cu ajutorul instrucţiunii do-while se
vor citi următoarele temperaturi şi se va determina valoarea maximă şi numărul de temperaturi
citite până când temperatura este zero, respectiv cât timp t este diferit de zero. Când s-a citit o
temperatură a cărei valoare este zero se iese şi se afişează valorile calculate.

Instrucţiunea switch
65 Instrucţiunile limbajului C.
Atunci când este necesară alegerea dintre mai multe alternative se foloseşte
instrucţiunea switch. Ea lucrează astfel: o variabilă este testată succesiv cu o listă de întregi
sau constante de tip char. Când apare egalitatea, sunt executate instrucţiunile asociate acelei
valori din listă. Forma generală a instrucţiunii switch este următoarea:

switch (variabilă)
{ case constant1: instrucţiuni
break;
case constant2: instrucţiuni
break;
…….
default: instrucţiuni
}
Două constante case nu pot avea valori identice în acelaşi switch.
Dacă a fost parcursă toată lista şi variabilă nu a fost egală cu nici una dintre consant1,
constant2….,atunci se execută instrucţiunea asociată cu default. Cazul default este opţional.
Dacă variabilă nu egalează nici un caz, iar default este absent nu se va produce nici o acţiune.
Switch lucrează numai cu tipul int şi tipul char.

Aplicaţia 1:
Să se realizeze programul care cere utilizatorului să introducă un număr întreg între unu
şi patru iar apoi, utilizând instrucţiunea switch, să afişeze numărul în cifre. În cazul în care
utilizatorul a introdus altă cifră decât cea specificată, să se afişeze mesajul "număr
necunoscut".
Specificarea problemei:
Date de intrare: numărul în cifre;
Date de ieşire: numărul în litere;
Date de test: Introduceti un numar intreg intre 1 şi 4: 1
Unu
Programul corespunzător este:
#include <stdio.h>
#include<conio.h>
void main ()
{
int i;
clrscr();
printf ("Introduceti un numar intreg intre 1 si 4: ");

scanf ("%d", &i);


switch (i) {
case 1:
printf ("Unu");
break;
case 2:
printf ("Doi");
break;
case 3:

printf ("Trei");
break;
case 4:
Instrucţiunile limbajului C. 66
printf ("Patru");
break;
default:
printf ("Numar necunoscut");
}
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
i – reprezintă numărul pe care îl citim;
Folosind funcţia standard printf se va cere utilizatorului să introducă un număr întreg
între unu şi patru. Se citeşte acest număr cu ajutorul funcţiei standard scanf, iar apoi folosind
instrucţiunea switch se compară numărul citit cu constantele case. Dacă se găseşte o egalitate
atunci se execută instrucţiunea asociată iar dacă nu se execută instrucţiunea de pe ramura
default.

Aplicaţia 2:
Să se realizeze programul care determină dacă o literă citită de la tastatură este consoană
sau vocală. Se va utiliza instrucţiunea switch.
Specificarea problemei:
Date de intrare: ch - o literă citită;
Date de ieşire: este vocală sau consoană;
Date de test: Introduceti o litera: a
Este o vocala
Programul corespunzător este:
#include<conio.h>
#include<stdio.h>
void main()
{
char ch;
clrscr();
printf("Introduceti o litera: ");
scanf("%c",&ch);
switch(ch)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
printf("Este o vocala");
break;
default:
printf("Este o consoana");
}
getch();
}

Analiza problemei:
În corpul funcţiei principale se declară variabila cu următoarea semnificaţie:
ch – reprezintă codul ASCII al tastei apăsate;
67 Instrucţiunile limbajului C.
Folosind funcţia standard printf se va cere utilizatorului să introducă o literă. Această
literă se citeşte cu ajutorul funcţiei standard scanf, iar apoi folosind instrucţiunea switch se
compară litera citită cu constantele case. Datorită faptului că instrucţiunile asociate unui case
pot să lipsească, toate cele 5 case vor executa aceeaşi instrucţiune fără a fi nevoie de
duplicarea ei. Literele a, e, i, o, u sunt toate vocale iar la apăsarea uneia dintre aceste taste se
va afişa mesajul „Este o vocală”. În cazul în care se apasă altă tastă se execută instrucţiunea de
pe ramura default scriind la consolă mesajul „Este o consoană„

Aplicaţia 3:
Să se realizeze programul care afişează meniul următor:
1.Yarzi in metri
2.Metri in yarzi
3.Pounds in kilograme
4.Kilograme in pounds
5.Quit.
şi în funcţie de alegerea utilizatorului să se efectueze transformarea respectivă pentru un
număr citit.
Se specifică următoarele: 1yard=0,9144m, 1 pound=0,453 Kg
Specificarea problemei:
Date de intrare: meniu;
i - numărul ce trebuie transformat;
Date de ieşire: rezultatul transformării;
Date de test: Yarzi in metri
Metri in yarzi
Pounds in kilograme
Kilograme in pounds
Quit
2
Introduceti valoarea in metrii: 3.5
Valoarea in yarzi este: 3.828
Programul corespunzător este:
#include<conio.h>
#include<stdio.h>
void main()
{
int i;
float y,m,k,p;
clrscr();
printf("1.Yarzi in metri\n2.Metri in yarzi\n3.Pounds in kilograme\n");
printf("4.Kilograme in pounds\n5.Quit\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("Introduceti valoarea in yarzi: ");
scanf("%f",&y);
printf("Valoarea in metri este: %1.2f",y*0.9144);

break;
case 2:
printf("Introduceti valoarea in metri: ");
Instrucţiunile limbajului C. 68
scanf("%f",&m);
printf("Valoarea in yarzi este: %1.3f",m/0.9144);
break;
case 3:
printf("Introduceti valoarea in pounds: ");
scanf("%f",p);
printf("Valoarea in pounds este: %1.3f",p*0.453);
break;
case 4:
printf("Introduceti valoareain kilograme: ");
scanf("%f",&k);
printf("Valoarea in pounds este: %1.3f",k/0.453);
case 5:goto end;
}
end:getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabilele cu următoarea semnificaţie:
y – reprezintă variabila în care citim valoarea în yarzi;
m - reprezintă variabil în care citim valoarea în metri;
k - reprezintă variabila în care citim valoarea în kilograme;
p - reprezintă variabila în care citim valoarea în pounds;
i - reprezintă variabila în care citim indicele corespunzător meniului;
Folosind funcţia standard printf se va afişa meniul. Indicele corespunzător meniului
se citeşte cu ajutorul funcţiei standard scanf, iar apoi folosind instrucţiunea switch se compară
acesta cu constantele case. În cazul în care s-a apăsat tasta 1 se va realiza o transformare din
yarzi în metrii şi se citeşte valoarea în yarzi, iar apoi se afişează valoarea în metrii. În cazul în
care s-a apăsat tasta 2 se va realiza o transformare din metrii în yarzi şi se citeşte valoarea în
metrii, iar apoi se afişează valoarea în yarzi. În cazul în care se-a apăsat tasta 3 se va realiza o
transformare din pounds în kilograme şi se citeşte valoarea în pounds, iar apoi se afişează
valoarea în kilograme. La apăsarea tastei 3 se face o transformare din pounds în kilograme
citindu-se valoarea în pounds şi afişând valoarea în kilograme. Tasta de ieşire este tasta 5,
când cu ajutorul instrucţiunii goto se face un salt la sfârşitul programului.

Instrucţiunile goto şi break

Limbajul C conţine o instrucţiune de salt necondiţionat numita goto. Limbajul C a fost


un înlocuitor al limbajului de asamblare, deci includerea instrucţiunii goto a fost necesară
deoarece ea poate fi folosită pentru a crea rutine foarte rapide. Această instrucţiune
efectuează un salt în interiorul unei funcţii. Ea nu poate face saltul dincolo de funcţie. Este
considerată opusă programării structurate, sfatul general valabil este evitarea folosirii acestei
instrucţiuni.
Forma generală a instrucţiunii goto este următoarea:
goto eticheta;
………..
etichetă:

Instrucţiunea break permite ieşirea dintr-un ciclu, din oricare punct din interiorul său.
Când instrucţiunea break este întâlnită în interiorul unui ciclu, aceasta se termină imediat, iar
controlul va trece la instrucţiunea ce urmează după ciclu. Instrucţiunea break poate fi folosită
69 Instrucţiunile limbajului C.
cu oricare din cele trei cicluri ale limbajului, această instrucţiune producând ieşirea din ciclul
cel mai interior. În general se recomandă ca instrucţiunea break să fie utilizată pentru scopuri
speciale şi nu ca ieşire normală din ciclu.
Forma generală a instrucţiunii break este următoarea:
break;
Această instrucţiune are cea mai comună utilizare în cadrul instrucţiunii switch.

Aplicaţie:
Să se realizeze programul care afişează următorul meniu:
1....FOR
2.....WHILE
3.....DO-WHILE
iar în funcţie de tasta apăsată de utilizator va realiza următoarele operaţii:
-în cazul în care este apăsată tasta 1 cu ajutorul instrucţiunii for se va realiza citirea unui
număr şi afişarea descrescătoare până la zero.
-în cazul în care este apăsată tasta doi, cu ajutorul instrucţiunii while se va realiza citirea unui
număr şi realizarea sumei S = 1 + 1 * 2 + 1 * 2 * 3 + ... + 1 * 2 * 3 * ... * n
-în cazul în care este apăsată tasta trei, cu ajutorul instrucţiunii do-while se va realiza citirea
1 1 1
unui număr şi realizarea sumei H = 1 + + + .. +
2 3 n
La sfârşitul fiecărei opţiuni utilizatorul va fi întrebat dacă doreşte să continue, iar în
cazul unui răspuns afirmativ, cu ajutorul instrucţiunii goto se va face saltul la începutul
opţiunii.
Specificarea problemei:
Date de intrare: meniu;
n - numărul până la care calculăm cele două sume şi până la
care afişăm în ordine descrescătoare numerele;
Date de ieşire: S, H şi numerele afişate în ordine descrescătoare;
Date de test: 1……FOR
2…….WHILE
3……..DO-WHILE
1
Introduceti pe n: 7
76543210
Doriti sa continuati?y/n
y
1……FOR
2…….WHILE
3……..DO-WHILE
2
Introduceti pe n: 3
S=9
Doriti sa continuati?y/n
y
1……FOR
2…….WHILE

3……..DO-WHILE
3
Introduceti pe n: 4
H=2.083333
Instrucţiunile limbajului C. 70
Doriti sa continuati?y/n n
Programul corespunzător este următorul:
#include<conio.h>
#include<stdio.h>
void main()
{
int i,n,S,P;
float H;
char ch;
clrscr();
unu: printf("\n1.....FOR");
printf("\n2.....WHILE");
printf("\n3.....DO-WHILE\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("\nIntroduceti pe n: ");
scanf("%d",&n);
for(i=n;i>=0;i--)
printf("%d ",i);
printf("\nDoriti sa continuati? y/n\n");
ch=getche();
if (ch=='n') break;
else goto unu;
break;
case 2:
printf("Introduceti pe n: ");
scanf("%d",&n);
i=1;
S=0;
P=1;
while(i<=n)
{
P*=i;
S+=P;
i++;
}
printf("S=%d\n",S);
printf("Doriti sa continuati? y/n\n");
ch=getche();
if (ch=='n') break;
else goto unu;
break;
case 3:
printf("Introduceti pe n: ");

scanf("%d",&n);
float i=1;
H=0;
do{
71 Instrucţiunile limbajului C.
H+=1/i;
i++;
}while(i<=n);
printf("H=%f\n",H);
printf("Doriti sa continuati? y/n\n");
ch=getche();
if(ch=='n') break;
else goto unu;
break;
}
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabilele cu următoarea semnificaţie:
n – reprezintă numărul până la care se realizează operaţiile corespunzătoare;
i – reprezintă variabila de control a ciclului for;
ch - reprezintă variabila în care se va citi codul ASCII al tastei apăsate;
S - în această variabilă se va calcula suma:
S = 1 +1* 2 +1* 2 * 3 + ... +1* 2 * 3 * ... * n
P - în această variabilă se va calcula produsul 1*2, 1*2*3, ….1*2…*n;
H - în această variabilă se va calcula suma:
1 1 1
H =1 + + + .. +
2 3 n
Folosind funcţia standard printf se va afişa meniul iar cu ajutorul funcţiei standard
scanf se va citi tasta apăsată. Apoi, cu ajutorul instrucţiunii switch , în funcţie de tasta apăsată
de utilizator, se vor face operaţiile corespunzătoare folosind instrucţiunile specificate: for,
while, do-while. După afişarea rezultatului obţinut se va întreba utilizatorul dacă doreşte să
continue. În cazul în care răspunsul este diferit de n (nu) se va afişa din nou meniul cu cele trei
opţiuni, aşteptând introducerea unei valori 1, 2 sau 3 şi efectuând operaţiile corespunzătoare
selecţiei făcute, procesul repetându-se până când la întrebarea “Doriţi să continuaţi? y/n” se va
da răspunsul n. Atunci cu ajutorul instrucţiunii break se va ieşi.

Instrucţiunea continue

Instrucţiunea continue este opusă instrucţiunii break. Ea forţează următoarea


iteraţie a ciclului să aibă loc trecând peste instrucţiunile dintre ea şi testul de condiţie.
În ciclurile while şi do-while, la întâlnirea instrucţiunii continue, controlul trece direct la
testul de condiţie şi apoi procesul de ciclare continuă. În cazul instrucţiunii for este executată
instrucţiunea increment, apoi testul de condiţie şi ciclul for continuă.
Forma generală a instrucţiunii continue este următoarea:
continue;
Instrucţiunea continue este folosită rareori, nu pentru că folosirea ei este incorectă,
ci pentru că aplicaţiile în care ar putea fi utilizată sunt mai rare.

Aplicaţie:
Sa dau cele n note ale unui student. Se cere să se realizeze programul care calculează
numărul de note peste 8 ale studentului utilizând instrucţiunea continue.
Specificarea problemei:
Date de intrare: n - numărul de note;
Instrucţiunile limbajului C. 72
Nota - valoarea efectivă a notelor;
Date de ieşire: nr - numărul notelor peste 8;
Date de test: Introduceti numarul de note: 4
Introduceti nota 1: 7
Introduceti nota 2: 8.5
Introduceti nota 3: 9
Introduceti nota 4: 10
Numarul de note peste 8 sunt: 3

Programul corespunzător este următorul:


#include<conio.h>
#include<stdio.h>
void main()
{
int n,i,nr=0;
float nota;
clrscr();
printf("Introduceti numarul de note: ");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("Introduceti nota %d: ",i);
scanf("%f",&nota);
if(nota<=8)continue;
nr++;
}
printf("Numarul de note peste 8 sunt: %d",nr);
getch();
}
Analiza problemei:
În corpul funcţiei principale se declară variabile cu următoarea semnificaţie:
n – reprezintă numărul de note;
i – reprezintă variabila de control a ciclului for;
nr - reprezintă variabila în care se va contoriza numărul de note peste 8;
nota - reprezintă valoarea efectivă a notelor;
Folosind funcţia standard printf se va cere utilizatorului să introducă numărul de note
şi apoi se citeşte acest număr cu ajutorul funcţiei standard scanf. Folosind instrucţiunea for se
vor citi valorile efective ale notelor. De fiecare dată când instrucţiunea continue este atins ea
face ca ciclul să se repete, ne mai numărând acele note care nu sunt peste 8. La sfârşit se
afişează rezultatul, respectiv numărul de note .

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