FCIM
Departamentul de Informatica si Inginerie Software
RAPORT
la lucrarea de laborator nr. 3
Chişinău – 201-
Scopul lucrării: A aduce la cunostinta cum se lucreaza cu tablourile unidimensionale.
Clasificarea modurilor de sortare si punerea in practica a lor.
Obiectivele temei:
1. Familiarizarea cu principiile prelucrării elementelor tablourilor unidimensionale.
2. Algoritmizarea şi însuşirea procedeelor stereotipe de declarare, introducere, afişare şi
formare prin parcurgere şi calcule ale valorilor elementelor tablourilor unidimensionale.
3. Însuşirea aprofundata a procedeelor avansate de realizare a structurilor ciclice cu
instrucţiunile for, while şi do while, aplicând diverse tehnici de programare.
4. Însuşirea procedeelor de operare în interfaţa TP şi C la nivelul submeniurilor DEBUG
şi BREAK/WATCH (mijloacele de depanare-urmărire a variabilelor şi punctele de
întrerupere).
15. Să se elaboreze algoritmul şi programul pentru următoarele: Este dat un şir de numere x1,
x2,… xi…. xn. Printre aceste numere sunt măcar două numere pozitive. Să se
evidenţieze în această succesiune elementele tabloului unidimensional a 1, a2,...
ak, (k – necunoscut anticipat)- puse între o pereche de numere pozitive. Dacă
k>1, atunci să se calculeze :
a) min(a1, 2a2,... kak); b) max(a1, a2 a3,… ak);
2.1 Schema-bloc
Start
i,v[n],k,q,max
p,minp,min,m
ax,j;
k=rand()%n+2
i:=0
q=rand()%n
v[q]>0
v[q]*=-1 i=1+1
p[i]=q
i=i+1
i<k
afisam elem.
vectorului
maxp=p[0]
minp=p[0]
i=0
maxp<p[i] da
maxp=p[i]
minp>p[i]
da
minp=p[i]
i=i+1
i<k da
j=0
i=minp+1
a
nu v[i]<0 da
j==0
nu da
min=v[i]
max=v[i]
j=j+1
min>v[i] da
min=v[i]
nu
nu max<v[i] da
max=v[i]
i=i+1
i<maxp a
afisam min si
max
Stop
#define n 20
int i,v[n],k,q,maxp,minp,min,max,j;
main(){
srand(time(NULL));
for (i=0;i<n;i++){
v[i]=rand()%n*-1;
if(v[i]==0){
i--;
}
}
k=rand()%n+2;
int p[k];
for(i=0;i<k;i++){
q=rand()%n;
if(v[q]>0){
i--;
}else{
v[q]*=-1;
p[i]=q;
}
}
for (i=0;i<n;i++){
printf("v[%d]=%d\n",i,v[i]);
}
maxp=p[0];
minp=p[0];
for (i=0;i<k;i++){
if(maxp<p[i]){
maxp=p[i];
}
if(minp>p[i]){
minp=p[i];
}
}
printf("\nNumere negative cuprinse intre numere pozitive:\n");
j=0;
for(i=minp+1;i<maxp;i++){
if(v[i]<0){
if(j==0){
min=v[i];
max=v[i];
j++;
}
printf("v[%d]=%d\n",i,v[i]);
if(min>v[i]){
min=v[i];
}
if(max<v[i]){
max=v[i];
}
}
}
printf("\nmin=%d\nmax=%d",min,max);
}