Sunteți pe pagina 1din 80

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 5

la cursul de “Programarea calculatoarelor”

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

Chișinău – 2020
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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void NumPare(int a , int b);

int main()
{
int a , b , i ;
printf("Introduceti a - ");
scanf("%d" , &a);
printf("Introduceti b - ");
scanf("%d" , &b);

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

NumPare(a , b);

return 0;
}

void NumPare(int a , int b)


{
int i ;

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


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

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);
int main()
{
int n ;
printf("Introduceti n - ");
scanf("%d" , &n);

Functie(n);

return 0;
}

void Functie(int n)
{
int i = 1 ;
int s = 0 ;

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

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);

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

Functie(n);

return 0;
}

void Functie(int n)
{
int i = 1 ;
int s = 0 ;

do {
if(i % 2 == 0){
s+= i;
}
i++;
}
while(i<=n);

printf("Suma = %d" , s );
}
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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(float n);

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

Functie(n);

return 0;
}

void Functie(float n)
{
float i ;
float s = 0 ;

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


{
s+= 1 / i;
}
printf("Suma = %f" , s );
}

Problema 5
De la tastatură se introduce un număr natural n. Calculați suma primilor n termeni
1+1/2+/4+...+1/(2n)
#include <stdio.h>
#include <stdlib.h>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);

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

Functie(n);

return 0;
}

void Functie(int n)
{
int i = 1 ;
float s = 0 ;
while (i <= n){
if(i % 2 == 0){
s+= (float)1 / i;
}
i++;}
printf("Suma = %f" , s );
}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);

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

Functie(n);

return 0;
}

void Functie(int n)
{
int i = 1 ;
float s = 0 ;

do {
if(i % 2 != 0){
s+= (float) 1 / i;
}
i++;
}
while(i <= n);

printf("Suma = %f" , s );
}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(float n);

int main()
{
float n ;
printf("Introduceti n - ");
scanf("%f" , &n);
Functie(n);

return 0;
}

void Functie(float n)
{
float i ;
float s = 0 ;

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


{
s+= i / (i + 1) ;

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


}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);
int main()
{
int n ;
printf("Introduceti n - ");
scanf("%d" , &n);

Functie(n);

return 0;
}

void Functie(int n)
{
float i = 2;
float s = 0 ;

while (i <= n){


s+= i / ((i + 1) * (i + 2));
i++;
}

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


}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
void Functie(int n);

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

Functie(n);

return 0;
}

void Functie(int n)
{
int i = 1;
float s = 0 ;
float sum = 0 ;

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

}
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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
float Functie(float n);

int main()
{
float n , rez ;
printf("Introduceti n - ");
scanf("%f" , &n);

rez = Functie(n);

printf("Suma primelor %.0f termeni = %.2f" , n , rez+1);

return 0;
}

float Functie(float n)
{
float i = 1;
float s = 0 ;
float numitor = 0 ;
float numarator = 0 ;
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) ;

}
}
return s;
}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
float Functie(int n);

int main()
{
int n ;
float rez ;
printf("Introduceti n - ");
scanf("%d" , &n);
rez = Functie(n);

printf("Suma = %f" , rez);

return 0;
}

float Functie(int n)
{
int i = 1 ;
float s = 0 ;

while(i <= n){


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

return s;
}

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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
float Functie(int n);
int main()
{
int n ;
float rez ;

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

rez = Functie(n);

printf("Suma = %f" , rez);

return 0;
}

float Functie(int n)
{
float sum = 0;
float prod = 1;
int i = 1;

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

return sum;
}
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>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
float Functie(int n);

int main()
{
int n ;
float rez ;

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

rez = Functie(n);

printf("Suma = %f" , rez);

return 0;
}

float Functie(int n)
{
float s = 0;
float sum = 0;
int i ;
for (i = 1 ; i <= n ; i++){
s+= i;
sum += sqrt(s);
}
return sum;
}

Problema 14
Scrieți un program ce va calcula suma s=0.1+0.2+0.3+...+1.8.
#include <stdio.h>
#include <stdlib.h>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
float Functie(int n);

int main()
{
int n ;
float rez ;

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

rez = Functie(n);

printf("Suma = %f" , rez);

return 0;
}

float Functie(int n)
{
float sum = 0;
int i = 1 ;

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

return sum;
}

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ă.
#include <stdio.h>
#include <stdlib.h>
//20 bidimensionale 20 for ,if ,else 20 raportul 3
int Functie(int n);

int main()
{
int n ;
int rez ;

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

rez = Functie(n);

printf("Suma = %d" , rez);

return 0;
}

int Functie(int n){


int s = 0 ;
int sum = 0;
int r ;

do {

while(n!= 0){
r = n % 10 ;
n = (n - r) / 10 ;
s += r ;

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

return s;
}
Problema 16
Se dă un tablou liniar cu n componente numere întregi. Calculați suma componentelor lui.

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

//20 bidimensionale 20 for ,if ,else 20 raportul 3

int Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(0);
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
rez = Functie(arr , n);

printf("Suma = %d" , rez);

return 0;
}

int Functie(int arr[] , int n ){


int s = 0 ;

for(int i = 0 ; i < n ; i++){


s += arr[i];
}
return s;
}
Problema 17
Se dă un tablou liniar cu n componente numere întregi. Determinați numărul
componentelor pare din tablou.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

int Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
rez = Functie(arr , n);
printf("Numarul elementelor pare = %d" , rez);

return 0;
}

int Functie(int arr[] , int n ){


int s = 0 ;
int count = 0 ;

for(int i = 0; i < n; i++){


if(arr[i] % 2 == 0){
count++; }
}

return count;
}

Problema 18
Se dă un tablou liniar cu n componente numere întregi. Calculați media aritmetică a
componentelor lui.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

float Functie(int arr[] , int n);


int main()
{
int n , arr[100] ;
float rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
rez = Functie(arr , n);

printf("Media Aritmetica = %f" , rez);

return 0;
}

float Functie(int arr[] , int n ){


float s = 0 ;
float media = 0 ;

for(int i = 0; i < n; i++) {


s += arr[i];
media = s / (float)n;
}
return media;
}

Problema 19
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

int Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
rez = Functie(arr , n);

printf("Suma elementelor pare = %d" , rez);

return 0;
}

int Functie(int arr[] , int n ){


int s = 0 ;

for(int i = 0; i < n; i++) {


if (arr[i] % 2 == 0){
s += arr[i];
}
}

return s;
}

Problema 20
Se dă un tablou liniar cu n componente numere întregi. Calculați media aritmetică a
componentelor pare din tabloul dat.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//20 bidimensionale 20 for ,if ,else 20 raportul 3

float Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
float rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
rez = Functie(arr , n);

printf("Media aritmetica a elementelor pare = %.2f" , rez);

return 0;
}

float Functie(int arr[] , int n ){


int s = 0 ;
int count = 0 ;
float media = 0 ;
for(int i = 0; i < n; i++) {
if (arr[i] % 2 == 0){
count ++;
s += arr[i];
media = (float)s / (float)count;

}
}

return media;
}

Problema 21
Se dă un tablou liniar cu n componente numere întregi. Afișați componentele ce au indicii
cu valoare pară.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
int rez ;
printf("Introduceti lungimea sirului - \n");
scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");

Functie(arr , n);

return 0;
}

void Functie(int arr[] , int n ){

printf("Componentele ce au indicii cu valoare para sunt: \n");

for(int i = 0; i < n; i++){


if(i % 2 == 0){
printf("%3d" , arr[i]);
}
}

return ;
}
Problema 22
Se dă un tablou liniar cu n componente numere întregi. Afișați indicii componentelor cu
valoare pozitivă.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int arr[] , int n);

int main()
{
int n , arr[100] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");
Functie(arr , n);

return 0;
}

void Functie(int arr[] , int n ){

printf("Indicii componentelor cu valoare pozitiva sunt: \n");

for(int i = 0; i < n; i++) {


if(arr[i] > 0) {
printf("%3d" , i);
}
}

return ;
}

Problema 23
Se dă un tablou liniar cu n componente numere întregi și un număr întreg m. Determinați
dacă printre valorile componentelor se conține valoarea dată m.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int arr[] , int n , int m);

int main()
{
int n , m , arr[1000] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


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

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");

Functie(arr , n , m);

return 0;
}

void Functie(int arr[] , int n , int m){


printf("In urmatoarele casete se afla un numar egal cu valoarea lui m = %d\n" , m);

for(int i = 0; i < n; i++) {


if(arr[i] == m) {
printf("%3d\n" , i);
}
}

return ;
}

Problema 24
Se dă un tablou liniar cu n component numere întregi. Înscrieți în alte două tablouri,
respectiv, componentele de pe poziții impare – în primul tablou, iar componentele de pe
poziții pare – în al doilea tablou.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int arr[] , int arrp[] , int arri[] , int n );


int main()
{
int n , arri[1000] , arrp[1000] , arr[1000] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
}
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");

Functie(arr , arrp , arri , n );

return 0;
}

void Functie(int arr[] , int arrp[] , int arri[] , int n ){


printf("Sirul cu componentele pare: \n");

for (int i = 0; i < n; i++){


if(arr[i] % 2 == 0){
printf("%3d", arr[i]);
}
}
printf("\n");

printf("Sirul cu componentele impare: \n");

for (int i = 0; i < n; i++){


if(arr[i] % 2 == 0){

} else printf("%3d", arr[i]);


}

return ;
}

Problema 25
Se dau două tablouri liniare cu câte n componente numere întregi. Înscrieți în al treilea
tablou la început componentele primului tablou, apoi componentele celui de-al doilea.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int arr[] , int arrp[] , int arri[] , int n );

int main()
{
int n , arri[1000] , arrp[1000] , arr[1000] ;
int rez ;

printf("Introduceti lungimea sirului - \n");


scanf("%d" , &n);

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
arr[i] = rand()%100;
arri[i] = rand()%100;

}
printf("Primul sir : ");
for(int i = 0 ; i < n ; i++){
printf("%3d" , arr[i]);
}
printf("\n");

printf("Al 2-lea sir sir : ");


for(int i = 0 ; i < n ; i++){
printf("%3d" , arri[i]);
}
printf("\n");

Functie(arr , arrp , arri , n );


return 0;
}

void Functie(int arr[] , int arrp[] , int arri[] , int n ){


int nr = 0 ;
printf("Al 3-lea sir : ");
for(int i = 0; i < n; i++){
arrp[nr] = arr[i];
nr++;
}

for(int i = 0; i < n; i++){


arrp[nr] = arri[i];
nr++;
}

for(int i = 0; i < n+n; i++){


printf("%d ", arrp[i]);
}

return ;
}

Problema 26
Se dă un număr natural n. Înscrieți întru-n tablou liniar primele n numere prime.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n );

int main()
{
int n ;
int rez ;

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

Functie( n );

return 0;
}

void Functie(int n ){
int arr[1000] ;
int p ;

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


p=i*2-1;
arr[i] = p ;
}
for(int i = 1 ; i < n ; i++){
printf("%3d" , arr[i]);
}

return ;
}

Problema 27
. Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
program care determină numărul elementelor mai mari decât media aritmetică a tuturor
elementelor pozitive.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int s = 0 ;
float media = 0 ;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
s+= arr[i][j];
}
}
printf("Suma = %d\n" , s);

media = (float)s / ((float)n * (float) m);


printf("Media aritmetica = %f\n" , media);
printf("Elementele mai mare ca %f sunt : \n", media );

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(arr[i][j] > media ){
printf("%3d" , arr[i][j]);
}
}
}

return ;
}

Problema 28
. Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
program care calculează suma si produsul .
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int s = 0 ;
int p = 1 ;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
s+= arr[i][j];
p *= arr[i][j];
}
}
printf("Suma = %d\n" , s);
printf("Produs = %d" , p);

return ;
}

Problema 29
Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care determină elementul maxim.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );


int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}
void Functie(int n , int m , int arr[n][m] ){
int max = 0 ;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(max < arr[i][j]){
max = arr [i][j];
}
}
}
printf("Cel mai mare element este : %d" , max);

return ;
}

Problema 30
Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care determină elementul maxim și poziția lui.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3


void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int max = 0 ;
int k , l ;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(max < arr[i][j]){
max = arr [i][j];
k = i;
l = j;
}
}
}
printf("Cel mai mare element este : %d si se afla pe pozitia Arr[%d][%d]" , max , k , l);

return ;
}

Problema 31
Se consideră tabloul Y[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care determină elementul minim și elementul maxim, precum și pozițiile acestora.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}
Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int max = 0 , min = INT_MAX;
int k = 0 , l = 0 , o = 0 , p = 0;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(max < arr[i][j]){
max = arr [i][j];
k = i;
l = j;
}
if(min > arr[i][j]){
min = arr[i][j];
o=i;
p = j;
}
}
}
printf("Cel mai mare element este : %d si se afla pe pozitia Arr[%d][%d]\n" , max , k , l);
printf("Cel mai mic element este : %d si se afla pe pozitia Arr[%d][%d]" , min , o , p);

return ;
}
Problema 32
Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care determină elementul maxim de pe diagonala principală și elementul maxim de
pe diagonala secundara.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int max = 0 , maxs = 0;
int k = 0 , l = 0 , o = 0 , p = 0;

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(j == i){
if(max < arr[i][j]){
max = arr [i][j];
k = i;
l = j;
}
}
if(i + j == n - 1){
if(maxs < arr[i][j]){
maxs = arr[i][j];
o=i;
p = j;
}
}
}
}
printf("Cel mai mare element de pe diagonala principala este : %d si se afla pe pozitia
Arr[%d][%d]\n" , max , k , l);
printf("Cel mai mare element de pe diagonala secundara este : %d si se afla pe pozitia
Arr[%d][%d]" , maxs , o , p);

return ;
}

Problema 34
Se consideră tabloul A[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care afișează în linii separate elementele care se află pe diagonala principală și
elementele care se află pe diagonala secundara.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);
return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int max = 0 , maxs = 0;
int k = 0 , l = 0 , o = 0 , p = 0;
printf("Elementele de pe diagonala principala sunt\n");
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
if(j == i){
printf("%3d" , arr[i][j]);
}
}
}
printf("\nElementele de pe diagonala secundara sunt\n");
for(int i = 0 ; i < n ; i ++){
for(int j = 0 ; j < m ; j ++){
if(i + j == n - 1){
printf("%3d" , arr[i][j]);
}
}
}
return ;
}
Problema 35
Se consideră tabloul X[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care afișează în linii separate elementele situate deasupra diagonalei principale și
cele de sub aceasta; elementele situate deasupra diagonalei secundare și dedesubtul ei.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


int max = 0 , maxs = 0;
int k = 0 , l = 0 , o = 0 , p = 0;
printf("Elementele deasupra diagonalei principale: \n");
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
if(i < j){
printf("%3d" , arr[i][j]);
}
}
}
printf("\nElementele dedesubt diagonalei principale: \n");
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
if(i > j){
printf("%3d" , arr[i][j]);
}
}
}
printf("\nElementele deasupra diagonalei secundare: \n");
for(int i = 0 ; i < n ; i ++){
for(int j = 0 ; j < m ; j ++){
if(i + j < n - 1){
printf("%3d" , arr[i][j]);
}
}
}
printf("\nElementele dedesubt diagonalei secundare: \n");
for(int i = 0 ; i < n ; i ++){
for(int j = 0 ; j < m ; j ++){
if(i + j > n - 1){
printf("%3d" , arr[i][j]);
}
}
}
return ;
}
Problema 36
Se consideră tabloul X[1…n,1…m] de numere întregi, unde n, m <= 20. Să se scrie un
proram care zerografiază elementele de pe diagonala secundară și cele mai jos de ea.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];
srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


printf("Zerografia elementele de pe diagonala secundara si cele mai jos de ea\n");
for(int i = 0 ; i < n ; i++){
for(int j = m - 1 ; j >= m - 1 - i ; j--){
arr[i][j]=0;
}
}
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
printf("%3d",arr[i][j]);
}
printf("\n");
}

return ;
}

Problema 37
. Se consideră tabloul A[1..n,1..n] de numere întregi, unde n ≤ 20. Să se scrieu un program
care schimbă în opus semnele elementelor situate deasupra diagonalei principale .
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3

void Functie(int n , int m , int arr[n][m] );

int main()
{
int n , m ;
int rez ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100;
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr);

return 0;
}

void Functie(int n , int m , int arr[n][m] ){


printf("Zerografia elementele de pe diagonala secundara si cele mai jos de ea\n");
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
if(i < j){
arr[i][j]= arr[i][j] * ( -1 );
}
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%3d",arr[i][j]);
}
printf("\n");
}

return ;
}

Problema 38
Se consideră tabloul A[1..n,1..m] de numere întregi, unde n,m≤20. Să se scrie un program
care transcrie în tabloul unidimensional B elementele pozitive din A.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>

//20 bidimensionale 20 for ,if ,else 20 raportul 3


void Functie(int n , int m , int arr[n][m] , int count );

int main()
{
int n , m ;
int count = 0 ;

printf("Introduceti nr de coloane \n");


scanf("%d" , &n);
printf("Introduceti nr de randuri \n");
scanf("%d" , &m);
int arr[n][m];

srand(time(NULL));
for(int i = 0 ; i < n ; i++){
for(int j = 0 ; j < m ; j++){
arr[i][j] = 1+rand()%100-40;
if(arr[i][j] > 0){
count++;
}
}
}

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
printf("%5d" , arr[i][j]);
}
printf("\n");
}

Functie(n , m , arr , count);


return 0;
}

void Functie(int n , int m , int arr[n][m] , int count){


int poz[count] ;
int count2 = 0 ;

printf("Numerele pozitive sunt : \n");

for(int i = 0 ; i < n ; i++){


for(int j = 0 ; j < m ; j++){
if(arr[i][j] > 0){
poz[count2] = arr[i][j];
count2++;
}
}
}

for(int i = 0 ; i < count ; i ++){


printf("%3d" , poz[i]);
}

return ;
}
Problema 39
De la tastatură se introduc patru numere a , b , c , d . Scrieți un program C ce va determina
:
a. Numărul mai mare dintre ele
b. Numărul mai mic dintre ele
c. Cel mai mare divizor comun al lor
d. Cel mai mic multiplu comun al lor
e. Dacă unul dintre numere este divizor pentru toate celelalte
f. Dacă unul dintre ele este multiplu al celorlalte numere .
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int mai_mare(int a , int b , int c , int d ){


int max ;

max = a ;
if(max < b)
max = b;
if(max < c)
max = c;
if(max < d)
max = d;
return max;
}

int mai_mic(int a , int b , int c , int d ){


int min ;

min = a ;
if(min > b)
min = b;
if(min > c)
min = c;
if(min > d)
min = d;
return min;
}
int divizor(int a , int b , int c , int d){

while(a!=b){
if(a > b)
a = a - b;
else
b = b - a;
}
while(c!=d){
if(c > d)
c=c-d;
else
d = d - c;
}
while(a!=c){
if(c > d)
a = a - c;
else
c=c-a;

}
return a;
}

int multiplu(int a , int b , int c , int d , int div){


int x ;
x = ( a * b * c * d ) / div ;
return x ;
}

int main()
{
int a , b , c , d , mare , mic , div , mult ;

printf("Introdu a ");
scanf("%d" , &a);
printf("Introdu b ");
scanf("%d" , &b);
printf("Introdu c ");
scanf("%d" , &c);
printf("Introdu d ");
scanf("%d" , &d);

mare = mai_mare(a , b , c , d) ;
mic = mai_mic(a , b , c , d);
div = divizor(a , b , c , d);
mult = multiplu(a , b , c , d , div);

printf("Numarul cel mai mare este : %d\n" , mare );


printf("Numarul cel mai mic este : %d\n" , mic);
printf("Cel mai mare divizor comun este %d\n" , div);
printf("Cel mai mic multiplu comun este %d" , mult);
return 0;
}

Problema 40
De la tastatură se introduc patru numere a , b , c , d . Scrieți un program C ce va determina
:
a. Suma cifrelor fiecărui număr
b. Cifra cea mai mare din componența fiecărui număr
c. Numărul divizorilor fiecărui număr dat
d. Suma divizorilor fiecărui număr cu valoarea mai mică decât a numărului dat
e. Dacă printre numerele date sunt numere perfecte
f. Dacă numărul respectiv este prim sau nu

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

int Prim(int a , int b , int c , int d){


if(a % 2 == 0){
printf("Numarul %d este par\n" , a);
}
else{
printf("Numarul %d este impar\n" , a);
}
if(b % 2 == 0){
printf("Numarul %d este par\n" , b);
}
else{
printf("Numarul %d este impar\n" , b);
}
if(c % 2 == 0){
printf("Numarul %d este par\n" , c);
}
else{
printf("Numarul %d este impar\n" , c);
}
if(d % 2 == 0){
printf("Numarul %d este par\n" , d);
}
else{
printf("Numarul %d este impar\n" , d);
}

int sumacifre(int a , int b , int c , int d){;


int sa = 0 , sb = 0 , sc = 0 , sd = 0 ;
int rest ;

while(a != 0){
rest = a % 10 ;
sa += rest ;
a = a / 10 ;
}

while(b != 0){
rest = b % 10 ;
sb += rest ;
b = b / 10 ;
}

while(c != 0){
rest = c % 10 ;
sc += rest ;
c = c / 10 ;
}
while(d != 0){
rest = d % 10 ;
sd += rest ;
d = d / 10 ;
}

printf("\nSuma cifrelor numarului a este %d\n", sa);


printf("Suma cifrelor numarului b este %d\n" , sb);
printf("Suma cifrelor numarului c este %d\n" , sc);
printf("Suma cifrelor numarului d este %d\n" , sd);

return ;
}
int Maxnum(int a , int b , int c , int d ){
int amax = 0 , bmax = 0 , cmax = 0 , dmax = 0 ;

while(a != 0 ){
if(a % 10 > amax)
amax = a % 10 ;
a = a / 10 ;
}
while(b != 0 ){
if(b % 10 > bmax)
bmax = b % 10 ;
b = b / 10 ;
}
while(c != 0 ){
if(c % 10 > cmax)
cmax = c % 10 ;
c = c / 10 ;
}
while(d != 0 ){
if(d % 10 > dmax)
dmax = d % 10 ;
d = d / 10 ;
}

printf("\nCea mai mare cifra din numarul a este %d\n" , amax);


printf("Cea mai mare cifra din numarul b este %d\n" , bmax);
printf("Cea mai mare cifra din numarul c este %d\n" , cmax);
printf("Cea mai mare cifra din numarul d este %d\n" , dmax);

return ;
}

int AfisareDivizori(int a , int b , int c , int d){


int sa = 0 , sb = 0 , sc = 0 , sd = 0 ;
printf("\nDivizorii numarului %d sunt : \n" , a);

for(int ia = 2; ia <= a / 2; ia++)


{
if(a % ia == 0){
printf("%3d" , ia);
sa+=ia;
}

}
printf("\nSuma divizorilor numarului %d este %d\n" , a , sa);
printf("\nDivizorii numarului %d sunt : \n" , b);
for(int ib = 2; ib <= b / 2; ib++)
{
if(b % ib == 0){
printf("%3d" , ib);
sb += ib;
}

}
printf("\nSuma divizorilor numarului %d este %d\n" , b , sb);
printf("\nDivizorii numarului %d sunt : \n" , c);
for(int ic = 2; ic <= c / 2; ic++)
{
if(c % ic == 0){
printf("%3d" , ic);
sc += ic ;
}

}
printf("\nSuma divizorilor numarului %d este %d\n" , c , sc);
printf("\nDivizorii numarului %d sunt : \n" , d);
for(int id = 2; id <= d / 2; id++)
{
if(d % id == 0){
printf("%3d" , id);
sd += id;
}

}
printf("\nSuma divizorilor numarului %d este %d\n" , d , sd);
return ;
}
int Perfect(int a , int b , int c , int d){
int sa = 0 , sb = 0 , sc = 0 , sd = 0 ;
int ia = 2 , ib = 2 , ic = 2 , id = 2 ;

while(ia <=a / 2){


if(a % ia == 0){
sa += ia ;
}
ia += 1 ;
}
if(sa = a ){
printf("Numarul % d este perfect\n" , a);
}
else{
printf("Numarul %d nu este perfect\n" , a);
}

while(ib <= b / 2){


if(b % ib == 0){
sb += ib ;
}
ib += 1 ;
}
if(sb = b ){
printf("Numarul % d este perfect\n" , b);
}
else{
printf("Numarul %d nu este perfect\n" , b);
}

while(ic <=c / 2){


if(c % ic == 0){
sc += ic ;
}
ic += 1 ;
}
if(sc = c ){
printf("Numarul % d este perfect\n" , c);
}
else{
printf("Numarul %d nu este perfect\n" , c);
}

while(id <= d / 2){


if(d % id == 0){
sd += id ;
}
id += 1 ;
}
if(sd = d ){
printf("Numarul % d este perfect\n" , d);
}
else{
printf("Numarul %d nu este perfect\n" , d);
}

int main()
{
int a , b , c , d ;
printf("Introduceti a , b , c , d \n");
scanf("%d%d%d%d" , &a , &b , &c , &d);
Prim(a , b , c , d);
sumacifre(a , b ,c , d);
Maxnum(a , b , c , d);
AfisareDivizori(a , b , c , d);
Perfect(a , b , c , d);

return 0;
}
Problema 41
De la tastatură se introduc patru numere a , b , c , d . Scrieți un program C ce va determina
:
a. Numărul cel mai mare dintre oglinditul numerelor
b. Numărul cel mai mic dintre oglinditul numerelor
c. Numărul cel mai mare format dintre cifrele fiecărui numer repectiv
d. Numărul cel mai mic format dintre cifrele fiecărui numer repectiv
#include <stdio.h>
#include <stdlib.h>
int Oglindire(int a , int b , int c , int d){
int ogl_a = 0 , ogl_b = 0 , ogl_c = 0 , ogl_d = 0 ;
int max = 0 , min ;

while (a != 0)
{
ogl_a = ogl_a * 10 + a % 10;
a = a / 10;
}
printf("Numarul oglindit a este %d\n" , ogl_a);

while (b != 0)
{
ogl_b = ogl_b * 10 + b % 10;
b = b / 10;
}
printf("Numarul oglindit b este %d\n" , ogl_b);

while (c != 0)
{
ogl_c = ogl_c * 10 + c % 10;
c = c / 10;
}
printf("Numarul oglindit c este %d\n" , ogl_c);

while (d != 0)
{
ogl_d = ogl_d * 10 + d % 10;
d = d / 10;
}
printf("Numarul oglindit d este %d\n" , ogl_d);
if(max < ogl_a)
max = ogl_a ;
if(max < ogl_b)
max = ogl_b;
if(max < ogl_c)
max = ogl_c;
if(max < ogl_d)
max = ogl_d ;

min = ogl_a;
if(min > ogl_b)
min = ogl_b;
if(min > ogl_c)
min = ogl_c;
if(min > ogl_d)
min = ogl_d;
printf("Cel mai mare numar oglindit este = %d\n" , max);
printf("Cel mai mic numar oglindit este = %d\n" , min);
}
int main()
{
int a , b , c , d;
printf("Introduceti a , b , c , d\n");
scanf("%d%d%d%d" , &a , &b , &c , &d);

Oglindire(a , b , c , d);

return 0;
}

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