Sunteți pe pagina 1din 33

MINISTERUL EDUCAȚIEI, CULTURII ȘI CERCETĂRII

AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor

Tombrachevici Dan

Lucrare de laborator nr 3

la cursul de “Programarea calculatoarelor”

Verificat:
Gutu Maria , doctor, conf. univ.
Departamentul Informatică şi IS,
Facultatea FCIM, UTM

Chișinău – 2020
Scopul : Scopul acestei lucrări a fost de a imbunătați și perfecționa abilitățile studentului de a
aplica instrucțiunile for , while , do-while și de a folosi aceste instrucțiuni la rezolvarea
problemelor logice .
Lucru Individual

Problema 1
1. Se dau două numere naturale a și b. Afișați toate numerele pare din intervalul [a;b].
#include <stdio.h>
#include <stdlib.h>

int main()
{
int a , b , i ;
printf("Introduceti a - ");

2
scanf("%d" , &a);
printf("Introduceti b - ");
scanf("%d" , &b);

printf("Numerele pare pe intervalul %d si %d sunt \n" , a , b);

for(i = a ; i <= b ; i++ ){


if(i % 2 == 0)
printf("%d " ,i);
}

return 0;
}

Problema 2
De la tastatură se introduce un număr natural n. Calculați suma numerelor naturale mai
mici sau egale cu n.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , s , i ;
printf("Introduceti n: ");
scanf("%d" , &n);
s=0;
i=1;
while (i<=n){

3
s+= i ;
i++;
}
printf("Suma numerelor naturale mai mici sau egale cu n este: %d" , s );
return 0;
}

Problema 3
De la tastatură se introduce un număr natural n. Calculați suma numerelor pare din
domeniul [1;n].

#include <stdio.h>
#include <stdlib.h>
int main()
{
int n , s , i;
printf("Introduceti n: ");
scanf("%d",&n);
s = 0;
i = 1;
do {
if(i % 2 == 0){
s+= i;
}
i++;
}
while(i<=n);
printf("Suma numerelor este:%d",s);
return 0;
}

4
Problema 4
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+1/2+1/3+...+1/n.
#include <stdio.h>
#include <stdlib.h>

int main()
{
float i , n , s;

s=0;
printf("Introdu n ");
scanf("%f" , &n);
for(i = 1 ; i <=n ; i++)
{
s+= 1 / i;
}
printf("Suma primelor n termeni = %.2f" , s);

return 0;
}

Problema 5
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+1/2+/4+...+1/(2n)

5
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i;
float s ;
printf("Introduceti n: ");
scanf("%d" , &n);
s = 0;
i = 1;
while (i<=n){
if(i % 2 == 0){
s+= (float)1 / i;
}
i++;}
printf("Suma termenilor este: %f",s);
return 0;
}

Problema 6
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+1/3+1/5...+1/(2n-1).
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i ;
float s ;
6
printf("Introduceti n: ");
scanf("%d" , &n);

s = 0;
i = 1;

do {
if(i % 2 != 0){
s+= (float) 1 / i;
}
i++;
}
while(i <= n);
printf("Suma termenilor este : %f" , s);
return 0;
}

Problema 7
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
½+2/3+..+n/(n+1).
#include <stdio.h>
#include <stdlib.h>

int main()
{
float i , n , s , sum ;

s=0;

printf("Introdu n ");

7
scanf("%f" , &n);
for(i = 1; i <=n ; i++)
{
s+= i / (i + 1) ;

}
printf("Suma primelor n termeni = %.2f" , s);

return 0;
}

Problema 8
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
½+2/(3*4)+..+n/((n+1)*(n+2)).
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n ;
float s , i , sum;
printf("Introduceti n : ");
scanf("%d",&n);
s = 0;
i = 2;
while (i <= n){
s+= i / ((i + 1) * (i + 2));
8
i++;
}

printf("Suma primilor termeni este: %0.2f", s + 0.5);


return 0;
}

Problema 9
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+2/(1+2)+3/(1+2+3)+...+n/(1+2+..+n).
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i;
float s , sum;
printf("Introduceti n: ");
scanf("%d" , &n);

s = 0;
sum = 0;
i = 1;

do {
s+= i;
sum+= (float) i / s;
i++;}
while(i <= n);
printf("Suma termenilor este:%.2f" , sum);
9
return 0;
}

Problema 10
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+1/(1+2)+(1+2)/(1+2+3)+(1+2+3)/(1+2+3+4)+...+(1+2+3+...(n-1))/(1+2+..+n).
#include <stdio.h>
#include <stdlib.h>

int main()
{
float i , n , numitor, numarator ,s ;

s=0;
numitor = 0 ;
numarator = 0 ;

printf("Introdu n ");
scanf("%f" , &n);

if(n == 0){
printf("Unde ati vazut sir din 0 elemente ???");
}
else{
for(i = 1; i <=n ; i++)
{
numitor+= i ;
numarator+= i - 1 ;
s+=(numarator / numitor) ;

10
}
printf("Suma primelor %.0f termeni = %.2f" , n , s+1);
}
return 0;
}

Problema 11
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni 1+
√2+√3+...+√n.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i , n;
float s ;
printf("Introduceti n - ");
scanf("%d" , &n);

s=0;
i=1;

while(i <= n){


s+= sqrt(i);
i++;

}
printf("Suma = %.2f" , s);
return 0;
11
}

Problema 12
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+√2+√2*3+...+√(2*3*...*n).
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i;
float sum , prod;

printf("Introduceti n: ");
scanf("%d",&n);

sum = 0;
prod = 1;
i = 1;

do {
prod*= i;
sum+= sqrt(prod);
i++;
}
while(i <= n);

printf("Suma termenilor este:%f",sum);


return 0;
}

12
Problema 13
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+√1+2+√1+2+3=..+√1+2+3+...+n.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i;
float s , sum;

printf("Introduceti n - ");
scanf("%d" , &n);

s = 0;
sum = 0;

for (i = 1 ; i <= n ; i++){


s+= i;
sum += sqrt(s);
}

printf("Suma = : %f",sum);

return 0;
}

13
Problema 14
Scrieți un program ce va calcula suma s=0.1+0.2+0.3+...+1.8.
#include <stdlib.h>
#include <math.h>
#include <stdio.h>

int main()
{
int i,n;
float sum;

sum=0;
i=1;

while (i<=18){
sum+=(float)i/10;
i++;}

printf("Suma este: %.2f",sum);


return 0;
}

Problema 15
Se dă un numar n , introdus de la tastatură . Să se scrie un program ce va calcula suma
cifrelor acestui număr , dacă suma este formată din mai multe cifre , atunci să se calculeze
iarăși suma acestor cifre . Această procedură să se repete până când va fi o singură cifră.
14
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i , r , s;

printf("Introduceti un numar ");


scanf("%d" , &n);

s=0;

do {

while(n!= 0){

r = n % 10 ;
n = (n - r) / 10 ;
s += r ;

}n = s;}while(s > 10);

printf("%d" , s);

return 0;
}

Lucru in grup
15
Problema 1
Se citesc trei numere natural n , k , p și o secvență de n numere naturale . Să se scrie un
program care calculează câte dintre acestea împărțite la p dau restul k.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , k , p , i , N;
int count = 0 ;
printf("Introdu n , p , k numere naturale\n ");
printf("n = ");
scanf("%d" , &n);

printf("p = ");
scanf("%d" , &p);

printf("k = ");
scanf("%d" , &k);

for(i = 1 ; i <=n ;i++ ){


printf("Introdu numarul\n");
scanf("%d" , &N);
if(N % p == k){
count++;

}
}
printf("%d" , count);
return 0;

16
Problema 2
În prima zi a antrenamentului un sportive alearga 10 km . Iar în fiecare zi începând cu a
doua el mărește sarcina zilnică cu 10 % din distanța zilei precedente . Să se scrie un
program care va calcula peste câte zile :
a) Sportivul va alerga 20 km (într-o zi)
b) Va alerga un drum sumar de 100 km (numărul zilelor de antrenament)
#include <stdio.h>
#include <stdlib.h>

int main()
{
float a, d ;
int count , count2;
a = 10 ;
count = 1 ;
count2 = 1;

while(a <= 20){


a += a * 0.1;
count++;
}
printf("20 km pe zi %d\n" , count );

17
a = 10 ;
while(d < 100){
a*=1.1;
d+=a;
count2++;
}
printf("100 km total %d " , count2);

return 0;
}

Problema 3
Se consider un număr natural m , n mai mic egal cu 100 și o secvență de n caractere
arbitrare . Să se scrie un program care determină numărul total de litere latine (mari și
mici) , care intră în componența secvenței.
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i ,s ;
int count = 0, count2 = 0 ;
char ch;
printf("Introduceti n ");
scanf("%d" , &n);
i = 1;
while(i <= n ) {
scanf(" %c" , &ch);
if((ch>='a') && (ch<='z')){
count++;
}

18
if((ch>='A') && (ch<='Z') ){
count2++;
}

i++;
}
s = count + count2 ;
printf("Numarul total de litere mari si mici sunt %d " , s);
return 0;
}

Problema 4
Se consideră o secvență de N litere mici . Memorând numai câte o literă să se determine
numărul de apariții pentru fiecare dintre vocalele : a , e, i , o , u
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n , i ,s ;
int count1 = 0, count2 = 0 , count3 = 0 , count4 = 0 , count5 = 0;
char ch;
printf("Introduceti n ");
scanf("%d" , &n);
i = 1;

19
while(i <= n ) {
scanf(" %c" , &ch);
if(ch == 'a'){
count1++;
}
if(ch == 'e'){
count2++;
}
if(ch == 'i'){
count3++;
}
if(ch == 'o'){
count4++;
}
if(ch == 'u'){
count5++;
}

i++;
}

printf("a = %d\ne = %d\ni = %d\no = %d\nu = %d " , count1 , count2 , count3 , count4 ,
count5);
return 0;
}

20
Problema 5
De la tastatură se citește o secvență de numere întregi care se termină cu zero . Să se scrie
un program care afișeaza numărul de valori positive și numărul de valori negative din șirul
de intrare
#include <stdio.h>

int main(void) {

int nr, n, i;

printf("Cate numere intregi introduceti ");


scanf("%d", &nr);
printf("Introduceti o secventa de numere intregi care se termina cu 0: ");

for(i=1; i<=nr; i++){


scanf("%d", &n);

if(n>= 0){
printf("Numarul %d este pozitiv\n", n);
}

21
else printf("Numarul%d este negativ\n", n);
}
return 0;
}

Problema 6
De la tastatură se introduce o secvență de cel puțin 2 numere pozitive , ce se termină cu
zero să se scrie un program care determină numărul mai mare
#include <stdio.h>

int main()
{
int max, n, p;
n = 1;
scanf("%d", &max);
while(n != 0)
{
scanf("%d", &n);
if (max < n){max = n;}
printf("Numarul cel mai mare este : %d\n", max);
}
printf("%d", max);
return 0;
}

22
Problema 7
Să se scrie un program care citește o succesiune de cel puțin două numere întregi nenule
care se termină cu zero și calculează media aritmetică a numerelor pozitive și media
aritmetică a numerelor negative
#include <stdio.h>
int main()
{
int n , i , nr , p1 , n1;
float sump , sumn , medp , medn;

n1 = 0;
p1 = 0;
sump = 0 ;
sumn = 0 ;
medp = 0 ;
medn = 0 ;

printf("Introdu n - ");
scanf("%d" , &n);

for(i = 1 ; i <= n ; i++){


scanf("%d" , &nr);

if(nr > 0){


p1++;
sump = sump + nr ;
medp = sump / p1;

}
if(nr < 0 ){
23
n1++;
sumn = sumn + nr;
medn = sumn / n1;

}
}
printf("Media aritmetica a numerelor pozitive este - %f\n" , medp);
printf("Media aritmetica a numerelor negative este - %f" , medn);

return 0;
}

Problema 8
Să se scrie un program care afișează primele zece numere naturale , care fiind împărțite la
5 și împărțite la 7 dau restul 2
#include <stdio.h>

int main()
{
int nr;
int i;
nr = 1;
i = 0;
while(i != 10)

24
{
if ((nr % 5 == 2) && (nr % 7 == 2) )
{
i++;
printf("%d ", nr);
}
nr++;
}
return 0;
}

Problema 9
Calculați :

√ 2+√ 4+ √6 +√ 8+…+√ 98+ √100


#include <stdio.h>
#include <math.h>
int main()
{
int n = 50;
float exp = 0;
while(2*n != 0)
{
exp = sqrt(2*n + exp);
n--;

}
printf("%f", exp);
return 0;
}

25
Problema 10
Să se afle toate numerele de trei cifre , fiecare avănd suma cifrelor egală cu numărul
natural dat n .
#include <stdio.h>
int main()
{
int n, nr = 100;
scanf("%d", &n);
while(nr < 1000)
{
if (n == nr % 10 + nr % 100 / 10 + nr / 100)
{printf("%d ", nr);}
nr++;
}
return 0;
}

Problema 11
Să se scriu un rogram C ce va calcula suma primelor n numere 1^2 + 2^2 + 3^2 + …+n^2
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i , n , s;
printf("Introduceti n - ");
26
scanf("%d" , &n);
s=0;
for(i = 1 ; i <=n ; i++){
s+=pow(i , 2);
}
printf("%d" , s);
return 0;
}

Problema 12
Să se scrie un program care să afișeze următoarele triunghiuri
a)
#include <stdio.h>
int main() {
int i, j;
char input, alphabet = 'a';
printf("Introduceti caracterul care va fi afisat in ultimul rand: ");
scanf("%c", &input);
for (i = 1; i <= (input - 'a' + 1); ++i) {
for (j = 1; j <= i; ++j) {
printf("%c ", alphabet);
}
++alphabet;
printf("\n");
}
return 0;
}

27
b)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
for(i=5; i>=1; i--){
for(j=5; j>=i; j--){
printf("%d ",i);
}
printf("\n");
}
return 0;
}

c)
#include <stdio.h>
int main() {
int i, j, rows;
printf("Introduceti nr de linii: ");
scanf("%d", &rows);
for (i = rows; i >= 1; --i) {
28
for (j = 1; j <= i; ++j) {
printf("%d ", j);
}
printf("\n");
}
return 0;
}

d)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
for(i=5; i>=1; i--){
for(j=1; j<=i; j++){
printf("%d ",i);
}
printf("\n");
}
return 0;
}

29
e)
f)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
for(i=1; i<=5; i++){
for(j=1; j<=i; j++){
printf("%d ",i);
}
printf("\n");
}
return 0;
}

g)
#include <stdio.h>
#include <stdlib.h>
int main()

30
{
int i, j;
for(i=1; i<=5; i++){
for(j=5; j>=i; j--){
printf("%d ",j);
}
printf("\n");
}
return 0;
}

h)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j;
for(i=1; i<=5; i++){
for(j=5; j>=i; j--){
printf("%d ",i);
}
printf("\n");
}
return 0;
}

31
Problema 13
Calculați 1+√ 1+2+ √ 1+2+3+ …+ √ 1+2+3+…+ n unde n este introdus de la tastatură.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{

int i, n ;
float s , m;

printf("Introduceti n - ");
scanf("%d" , &n);

s=0;
for(i=0; i <= n ; i++){
s+=i;
m+= sqrt(s);

}
printf("%.2f" , m);

return 0;
}

32
Problema 14
Să se afișeze în console următorul șir :
Abbcccddddeeeeeffffff…zzzzzz…zzzzz
Litera se va afișa repetat de un număr n ori , echivalent cu numărul de ordine al literei in
alfabetul englez .

#include <stdio.h>
#include <math.h>
int main()
{
char c;
int n = 1, i;
for(c = 'a'; c <= 'z'; c++)
{
for(i = 1; i <= n; i++)
printf("%c", c);
n++;
}
return 0;
}

Concluzia : În urma lucrării de laborator numărul 3 , am fost capabil să rezolv un șir de


probleme cu instrucțiunele for , while , do-while și mi-am dezvoltat abilitațile logice privind
rezolvarea problemelor folosind gândirea efecientă, avantajoasă , multilaterală și logică .

33

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