Sunteți pe pagina 1din 6

Universitatea Tehnică a Moldovei

FCIM
Departamentul de Informatica si Inginerie Software

RAPORT
la lucrarea de laborator nr. 3

Tema: Prelucrarea tablourilor unidimensionale în TP şi C

A efectuat: Movileanu Dorin

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).

2. Sarcina: Condiţia problemei

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

afisam el. cupr.


intre nr pozitive

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

2.2 Listing-ul programului:


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

#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);
}

2.3 După execuţia programului am obţinut următorul rezultat pe ecran:


2.4. Analiza rezultatului:
Dupa executia programului s-a afisat toate numerele negative cuprinse intre numerele pozitive, apoi
din numerele negative obtinute s-a afisat minim si maxim.

Concluzii: In procesul de elaborarea programului am intilnit anumite dificultati, cum ar fi separarea


numerelor negative dintre 2 numere pozitive, dar am trecut peste aceste dificultati datorita
indicatiilor metodice.

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