Documente Academic
Documente Profesional
Documente Cultură
1. Să se scrie programul pentru determinarea poziţiei tuturor apariţiilor unei valori date într-un vector
neordonat, de dimensiune n.
Atât vectorul iniţial, cât şi vectorul de poziţii vor fi alocaţi dinamic. Vectorul se parcurge secvenţial cu ajutorul
instrucţiunii for, reţinând valoarea curentă a indicelui în cazul identităţii elementului cu valoarea căutată, într-un
vector de poziţii.
#include<stdio.h>
#include<stdlib.h>
void main()
scanf("%d",&n);
x=(float*)malloc(n*sizeof(float));
for(i=0;i<n;i++)
poz=(int*)malloc(n*sizeof(int));
nrpoz = 0;
for (i=0;i<n;i++)
if(x[i] == a) poz[nrpoz++] = i;
else
free(x);
free(poz);
2. Fie un masiv bidimensional de numere reale, reprezentând consumul de carburant înregistrat de m maşini
într-o perioadă de n zile. Să se scrie un program pentru determinarea numărului maşinilor care au
consumuri în ordine strict crescătoare. Masivul este alocat dinamic.
#include <stdio.h>
#include <stdlib.h>
void main()
{ int m,n,i,j,nr;
float **a;
printf("numarul de linii=");scanf("%d",&m);
printf("numarul de coloane=");scanf("%d",&n);
a=(float**)malloc(m*sizeof(float*));
for (i=0;i<m;i++)
a[i]=(float*)malloc(n*sizeof(float));
for (i=0;i<m;i++)
for (j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);}
printf("Matricea este\n");
for (i=0;i<m;i++)
printf("\n");
nr=0;
for (i=0;i<m;i++)
{ j=0;
if (j==n-1) nr=nr+1;
free(a);
}
Subprograme - exemple
1. Fie un vector reprezentând vânzările valorice înregistrate de o societate comercială într-o perioadă de n zile.
Să se scrie subprogramul C (precum şi programul apelator) care calculează valoarea medie a vânzărilor,
eliminând din calculul mediei zilele care nu au înregistrat vânzări.
Transferul datelor se va realiza exclusive prin parametri. Operaţia de citire şi afişare a unui vector se realizează prin
intermediul subprogramelor.
#include<stdio.h>
int i;
for (i=0;i<*n;i++) {
printf("x[%d]=",i);scanf("%f", &x[i]);
int i;
for(i=0;i<n;i++)printf("%5.2f;", x[i]);
int i,k;
k=0; *med=0;
for(i=0;i<n;i++)
if(x[i]!=0){*med+=x[i];k++;}
if(k)*med/=k;
void main(){
citire(v,&n);
medie(v,n,&medv);
2. Fie un masiv bidimensional de numere reale reprezentând valoarea convorbirilor telefonice a m abonaţi
într-o perioadă de n luni. Să se scrie un subprogram pentru a determina numărul abonaţilor care au
înregistrat valori constante pentru cele n luni, precum și programul apelator.
#include <stdio.h>
{ int i,j;
printf("numarul de linii=");scanf("%d",m);
printf("numarul de coloane=");scanf("%d",n);
for (i=0;i<*m;i++)
for (j=0;j<*n;j++)
{ printf("a[%d][%d]=",i,j);
scanf("%f",&a[i][j]);
{ int i,j;
printf("Matricea este\n");
for (i=0;i<m;i++)
printf("\n");
{ int i,j,ok;
*nr=0;
for (i=0;i<m;i++)
{ j=1;
if (j==n) (*nr)++;
}
}
void main()
{ int m,n,i,j,numar1;
float a[30][20];
citire_mat(a,&m,&n);
afisare_mat(a,m,n);
nr_lin_const_var1(a,m,n,&numar1);