Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor
Tombrachevici Dan
Lucrare de laborator nr 3
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);
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++;
}
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;
}
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);
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;
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++;}
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;
s=0;
do {
while(n!= 0){
r = n % 10 ;
n = (n - r) / 10 ;
s += r ;
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);
}
}
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;
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;
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);
}
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 :
}
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;
}
33