Sunteți pe pagina 1din 8

Ministеrul Еducаțiеi, Culturii și Cеrcеtării аl Rеpublicii Mоldоvа

Univеrsitаtеа Tеhnică а Mоldоvеi


Fаcultаtеа Cаlculаtоаrе, Infоrmаtică şi Micrоеlеctrоnică
Dеpаrtаmеntul Ingineria Software și Automatică

RAPORT

Lucrarea de laborator Nr.3


la disciplina Programarea Calculatorelor

VARIANTA XI

A efectuat: st.gr.TI-192
Mereuță Ana
A verificat: asist.univ.
Cristina Josan

CHIŞINĂU – 2019
Tema:Solutionarea problemelor prin prelucrarea tablourilor unidimensionale în TP şi C
Obiectivele temei
1. Familiarizarea cu principiile solutionarii problemelor si 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 procedeelor avansate de realizare a structurilor ciclice cu instrucţiunile for, while şi repeat,
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).
Partea Teoretică
1. Tipul tablou (array, masiv).
Numim tablou o colectie (grup, multime ordonata) de date, de acelasi tip, situate intr-o zona de memorie
continua (elementele tabloului se afla la adrese succesive). Tablourile sunt variabile compuse
(structurate), deoarece grupeaza mai multe elemente. Variabilele tablou au nume, iar tipul tabloului este dat
de tipul elementelor sale. Elementele tabloului pot fi referite prin numele tabloului si indicii (numere intregi)
care reprezinta pozitia elementului in cadrul tabloului. Deci este o metodă de organizare a datelor este - t a b
l o u l (tabele) cu şiruri (de o lungime cunoscută) de variabile de acelaşi tip. Structura:
-Ansamblu omogen de variabile numite componentele tabloului
-Toate componentele aparţin aceluiaşi tip
-Componentele sunt identificate cu ajutorul indicilor
Tablouri:
-Unidimensionale (1 – dimensionale)
-Bidimensionale (2 – dimensionale), etc.
Un şir de elemente de acelaşi tip se mai numeşte şi vector sau tablou unidimensional. Deci tabloul este
un tip de date compus dintr-un număr precizat de date de acelaşi tip. Referirea la elementele tabloului se face
prin numele variabilei tablou urmat de indexul elementului pus între paranteze drepte [ ]

PARTEA PRACTICĂ
Sarcina propusă:
Schema logică a programului :

Listing-ul programului:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
int suma = 0;
int prod = 0;
double media = 0;
printf("Introduceti numarul de elemente:");
scanf("%d",&n);
int A[n];
int Y[n];
printf("Introduceti elementele A");
for (int i = 0; i < n; ++i) {
printf("A[%d]",i);
scanf("%d",&A[i]);
}
printf("Elementele A");
for (int m = 0; m < n; ++m){
printf("%d",A[m]);
}
for (int k = 0; k < n; ++k) {
suma+=A[k];
if (prod == 0){
prod = A[k];
} else {
prod*=A[k];
}
}
media = suma / n;
printf("\n s=%d \n p=%d \n m=%lf",suma,prod,media);

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


if (A[j] > 0){
Y[j] = suma;
}

if (A[j] == 0){
Y[j] = prod;
}
if (A[j] < 0){
Y[j] = media;
}
}
printf("\n Tabloul Y :");
for (int l = 0; l < n; ++l) {
printf(" %d ",Y[l]);
}

return 0;
}

Rezultatele obținute:

Întrebări de autocontrol :
3.2*. Elaborați algoritmul și programul pentru cazul dacă suma a trei numerel reale cu valori diferite x,y,z
este mai mică decât unitatea, atunci cel mai mic număr din aceste trei de schimbat cu semisuma a celorlalte
două, în caz contrar(când suma este mai mare) de schimbat valoarea minimală dintre x și y cu semisuma a
celorlalte valori rămase.
#include <stdio.h>
#include<math.h>
int main ()
{
float x,y,z,min=0,sum=0;
printf("Dati valori lui x,y,z\n");
scanf("%f", &x);
scanf("%f", &y);
scanf("%f", &x);
sum=x+y+z;
//scanf("%f", sum);
printf("%f %s", sum, "\n");
if (sum<1) {
if(x<y)
if(z<x)
min=z;
else if(y<z)
min=y;
else min=x;
scanf("%f",&min);
if(min=x) min=(z+y)/2;
else if(min=y) min=(x+z)/2;
else min=(x+y)/2;
} else if(x<y) x=(z+y)/2; else y=(x+z)/2;
printf("%f%s",min,"\n");
printf("%f%s",x,"\n");
printf("%f%s",y,"\n");
getch();
//return 0;
}
3.3. Modificaţi exemplul 3.2* pentru trei tablouri unidimensionale X, Y, Z şi efectuaţi aceleaşi calcule
#include <stdio.h>
#include <math.h>
int main()
{ double X[5],Y[5], Z[5], min = 0, sum = 0, sumx=0, sumy=0, sumz=0;
int i;
/*printf("Dati valori lui x,y,z \n");
scanf("%f",&x);
scanf("%f",&y);
scanf("%f",&z);*/
for(i=0;i<5;i++)
scanf("%ld",&X[i]);
for(i=0;i<5;i++)
scanf("%ld",&Y[i]);
for(i=0;i<5;i++)
scanf("%ld",&Z[i]);
for(i=0;i<5;i++) {
sumx+=X[i];
sumy+=Y[i];
sumz+=Z[i];
}
sum=sumx+sumy+sumz;
printf("Suma elementelor celor 3 vectori este: %ld\n", sum);
printf("%ld%s",sum,"\n");
if (sum<1) {
if(sumx<sumy)
if(sumz<sumx)
min=sumz;
else if(sumy<sumz)
min=sumy;
else min=sumx;
scanf("%ld",&min);
if(min=sumx) min=(sumz+sumy)/2;
else if(min=sumy) min=(sumx+sumz)/2;
else
min=(sumx+sumy)/2; } else if(sumx<sumy) sumx=(sumz+sumy)/2; else
sumy=(sumx+sumz)/2;
printf("%ld\n",min);
printf("%ld\n",sumx);
printf("%ld\n",sumy);
getch();
return 0;
}
3.9. Fie X[1..n] si Y[1..n] vectori de întregi. Care va fi valoarea lui Y[n] după execuţia secvenţei:
Y[1]=x[1];
for (i=2;i<n;i++) y[i]=y[i-1]+x[i];
a) x[n]+x[n-1] b) x[n]
Varianta corecta c) x[1]+x[2]+………..+x[n]
d) nici una din valorile indicate
3.10 Fie X[1..n] si Y[1..n] vectori de numere reale. După execuţia secvenţei de program:
y[1]=-x[1];
for(i=2;i<n;i++) y[i]=y[i-1]*x[i];
elementul Y[n] exprimă :
a) x[1]*x[2]*……*x[n]
Varianta corecta b) –x[1]*x[2]*….*x[n]
c) (-1)n x[1]*…..*x[n]
d) nici una din valorile indicate
CONCLUZIE
Lucrarea de laborator nr.3 a exercitat ca sarcina efectuarea operatiilor cu ajutorul elementelor tabloului
unidimensional. Ceea ce am observat eu este cum putem aborda un algoritm mai corect in efectuarea unor
operatii cu tablourile unidimensionale. Astfel, tabloul A exercita operatii care rezulta rezultatul final al
tabloului Y.

BIBLIOGRAFIE

1. Crearea schemelor logice cu softul https://www.draw.io/


2. Indicațiile metodice de la Profesorul Ștefan Marin.

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