Sunteți pe pagina 1din 2

Şef lucrări Morariu-Gligor Radu PUC – Laborator nr.

7 1/2

LABORATOR NR. 7 - INSTRUCŢIUNEA DE CICLARE FOR – continuare-

Cicluri for suprapuse


Dacă instrucţiunile care compun corpul unui ciclu for Intrare
(numit ciclu for exterior) conţin alt ciclu for (numit ciclu for
interior), cele două cicluri for se numesc suprapuse, expr_1_1
imbricate sau incluse.
Observaţie : Ciclul for interior trebuie să fie
cuprins complet în corpul ciclului for exterior. Fals
expr_1_2
Adevarat

Forma generală a ciclurilor suprapuse este ...


următoarea:
… Iesire
expr_2_1
for(expr_1_1 ; expr_1_2 ; expr_1_3 )
{ …
Adevarat
for(expr_2_1 ; expr_2_2 ; expr_2_3 ) expr_2_2
{ instrucţiune_2 } Fals
Instructiune_2

} ...
… expr_2_3

expr_1_3

Exemplu: Afişarea tuturor posibilităţilor de a obţine 100 de lei utilizând monede de 10, 20 şi 50 de lei.
Considerăm următoarele variabile a – numărul de monede de 10 lei; b – numărul de monede de 20 lei, c – numărul de monede
de 50 lei. Intervalul de valori pentru fiecare variabilă este: a = 0 ÷ 10; b = 0 ÷ 5; c = 0 ÷ 2; În consecinţă, pe baza celor
prezentate mai sus, putem scrie următoarea secvenţă de program:

for(a=0;a<=10;a++)
for(b=0;b<=5;b++)
for(c=0;c<=2;c++)
if( a*10 + b*20 + c*50 == 100)
printf(“\n %2d*10+%2d*20+%2d*50 = 100”,a,b,c);
...
Program exemplu nr. 1: Produsul elem. strict pozitive ale unei matrice dreptunghiulare Amxn.
#include <stdio.h>
#include <conio.h>
main (void)
{int m,n,i,j; double a[10][10], p=1;
printf(“\n Introduceti nr. de linii si de coloane, m si n:”); scanf(“%d %d”,&m,&n);
for(i=0 ; i < m ; i++)
for(j=0 ; j < n ; j++)
{ printf(“\n a[%d][%d]=”,i,j); scanf(“%lf”,&a[i][j]); } // citirea elem. matricei
for(i=0 ; i < m ; i++)
{ for(j=0 ; j < n ; j++)
printf(“ %8.3lf ”,a[i][j]); // afişarea elem. matricei
printf(“\n”);
}
for(i=0 ; i < m ; i++)
for(j=0 ; j < n ; j++)
if(a[i][j]>0) p *= a[i][j]; // calculul produsului elem. strict pozitive
printf(“\n \n Produsul elementelor strict pozitive este: p = %10.3lf”,p);
getch(); }
Şef lucrări Morariu-Gligor Radu PUC – Laborator nr. 7 2/2

Program exemplu nr. 2:

Calculul sumei S = (1) + ( 1 + 2 ) + ( 1 + 2 + 3 ) + ( 1 + 2 + 3 + 4 ) + ... luând în considerare n termeni (maxim 25 de


termeni).
Pentru calculul sumei se va utiliza un ciclu (condus de variabila i), fiecare termen adăugându-se pe rând sumei s.
Pentru calculul fiecărui termen se utilizează un al doilea ciclu (condus de variabila j), fiecare termen fiind la rândul lui o sumă
i
exprimată prin relaţia: Ti  j
j 1

#include<stdio.h>
#include<conio.h>
main(void)
{ int i, j, n, t[25]; long int s = 0;
printf("\n Introduceti numarul de termeni: n ="); scanf("%d",&n);
for( i=1 ; i <= n ; i++)
{ t[i] = 0;
for(j = 1 ; j <= i ; j++)
t[i] += j;
s += t[i];
}
printf("\n Suma totala este: s = %3d",s);
getch();
}
Teme propuse:
1. Să se scrie un program pentru calculul numărului de elemente pare dintr-o matrice dreptunghiulară.
2. Să se scrie un program pentru calculul sumei elementelor situate pe şi sub diagonala secundară dintr-o matrice
pătratică.
3. Să se calculeze suma:
x1 x3 x5
sin( x)     ...
1! 3! 5!
şi să se verifice diferenţa dintre valoarea funcţiei sin(x) şi valoarea obţinută prin calculul sumei pentru 10, 20 sau 30 de termeni
luaţi în considerare.
Varianta I : pentru fiecare termen se calculează (2*i-1) !
Varianta II : fiecare termen se exprimă în funcţie de termenul anterior după relaţia:
x2
Ti  Ti1 
(2  i  1)  (2  i)
4. Să se calculeze suma:
x2 x4
cos( x)  1    ...
2! 4!
şi să se verifice diferenţa dintre valoarea funcţiei cos(x) şi valoarea obţinută prin calculul sumei pentru 10, 20 sau 30 de termeni
luaţi în considerare.
1 1 1 n 1 1
5. Se consideră dezvoltarea: Sn  1    ...  1 . Se cere să se determine şi să se afişeze n, Tn, Sn
2! 3! 4! n!
pentru care un număr de “n” termeni luaţi în considerare.

6. Se consideră un număr de « n » puncte în plan, de coordonate x şi y. Se cere să se determine distanţa maximă dintre
două puncte precum şi punctele respective.
7. Să se calculeze suma S = 1 + 11 + 111 + 1111 + …. luând în considerare primii “n” termeni ai sumei (2 variante).
8. Se consideră două matrice A(mxn) şi B(nxp). Să se scrie un program care realizează înmulţirea celor două matrice,
n
astfel: C(mxp) = A(mxn) x B(nxp), cij  a
k 1
ik  bkj .
Succes!!!

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