0% au considerat acest document util (0 voturi)
3 vizualizări4 pagini

Lab 4

Documentul descrie un laborator de programare în care se lucrează cu tablouri unidimensionale (vectori) în C. Se prezintă diverse probleme, cum ar fi ordonarea unui șir de numere, calcularea mediei elementelor pozitive și determinarea numărului de apariții ale unui element specific. De asemenea, se propun teme suplimentare pentru aprofundarea cunoștințelor, inclusiv calculul produsului scalar al vectorilor și determinarea intersecției a două mulțimi de numere întregi.

Încărcat de

Radu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
3 vizualizări4 pagini

Lab 4

Documentul descrie un laborator de programare în care se lucrează cu tablouri unidimensionale (vectori) în C. Se prezintă diverse probleme, cum ar fi ordonarea unui șir de numere, calcularea mediei elementelor pozitive și determinarea numărului de apariții ale unui element specific. De asemenea, se propun teme suplimentare pentru aprofundarea cunoștințelor, inclusiv calculul produsului scalar al vectorilor și determinarea intersecției a două mulțimi de numere întregi.

Încărcat de

Radu
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOC, PDF, TXT sau citiți online pe Scribd

Laborator 4

Obiectiv – Tipul tablou unidim –vector

Teorie: tip structurat de date care cuprinde un numar de componente de acelasi fel (tip).
Tipul componentelor da tipul vectorului. Accesarea unei comp se realiz prin intermediul
unui indice.
Declaratia unei variabile de tip vector: tip nume[n];
Referirea la elementul unui vector: a[0]- primul elem al vectorului a, a[5] – al saselea
elem al vectorului a...
Obs: numele unui tablou are ca valoare adresa primului sau element. Comp unui vector
sunt pastrate in memorie una dupa alta, in zone continue, in ordinea crescatoare a val.
indicelui.
Initializarea unui vector se poate face la declaratie sub forma: tip nume[n]={t1,t2,...,tn};
nr. expr. de initializat poate fi mai mic decat nr. elem. Vectorului. Daca toate elem
vectorului se initializeaza atunci n nu mai e nec: tip nume[]={t1,t2,...,tn};

Probleme:

1. Se citeste un sir de numere intregi de dimensiune n si un numar intreg b.


a) Sa se ordoneze crescator numerele sirului
a) Sa se calculeze media elementelor strict pozitive.
b) Sa se determine nr. elementelor negative.
c) Sa se caute daca exista elementul 0 in vector.
d) Sa se determine numarul de aparitii a lui b in sirul dat.

#include<stdio.h>
#include<conio.h>
void main(){
int v[50],n,i,cod,aux,b, poz=0,neg=0, gasit=0, nr=0;
float med=0;
printf("\nIntroduceti nr de elemente ");
scanf("%d",&n);
printf("\nIntroduceti elementele\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&v[i]);}
do{cod=1;
for(i=0;i<n-1;i++)
if(v[i]>v[i+1])
{aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
cod=0;}
}
while(cod==0);
printf(„\nSirul ordonat este:”);
for(i=0;i<n;i++)
printf(„%d ”,v[i]);
printf("\nIntroduceti b ");
scanf("%d",&b);
for(i=0;i<n;i++)
{if(v[i]>0) {poz++;med=med+v[i];}
if(v[i]<0) neg++;
if(v[i]==b)nr++;
if(v[i]==0)gasit=1;
}
med=med/poz;
printf("\nMedia elem strict pozitive este %.2f",med);
printf("\nNumarul elem negative este %d", neg);
if(gasit==1)printf("\nElem 0 este in sir");
else printf("\nNumarul 0 nu este in sir");
if(nr==0) printf("\nNumarul %d nu este in sir",b);
else printf("\nNumarul de aparitii al valorii %d in sir este %d",b,nr);
getch();
}

2. Se consideră un şir de dimensiune n.


a) Sa se inverseze elem sirului.
b) Sa se adauge in sirul cu elem inversate, pe pozitia k<n elementul a carui valoare
este data de suma elem sirului
c) Sa se ordoneze crescator elem noului sir.

#include<stdio.h>
#include<conio.h>
void main(){
int v[50],n,i,s,aux,k,cod;
printf("\nIntroduceti nr de elemente ");
scanf("%d",&n);
printf("\nIntroducerea elementelor si calculul sumei\n");
s=0;
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&v[i]);
s+=v[i];}
for(i=0;i<n/2;i++)
{aux=v[i];
v[i]=v[n-1-i];
v[n-1-i]=aux;}
printf("\nSirul inversat este\n");
for(i=0;i<n;i++)
printf("%2d",v[i]);
printf("\nIntroduceti k: ");
scanf("%d",&k);
for(i=n-1;i>=k-1;i--) v[i+1]=v[i];
v[k-1]=s;
n++;
printf("\nNoul sir este\n");
for(i=0;i<n;i++)
printf("%4d",v[i]);
do
{ cod=1;
for(i=0;i<n-1;i++)
if(v[i]>v[i+1])
{aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
cod=0;}
}while(cod==0);
printf("\nSirul ordonat este\n");
for(i=0;i<n;i++)
printf("%4d",v[i]);
getch();
}

3. Să se scrie un program care să afişeze rezultatul reuniunii a două mulţimi de numere


întregi citite de la tastatură.

#include<stdio.h>
#include<conio.h>
void main()
{
int a[20],b[20],r[40],n,m,k, i,j, gasit;
printf("\n Introduceti n:");
scanf("%d",&n);
for(i=0;i<n;i++)
{printf("a[%d]=",i+1);
scanf("%d",&a[i]); }
printf("\n Introduceti m:");
scanf("%d",&m);
for(i=0;i<m;i++)
{printf("b[%d]=",i+1);
scanf("%d",&b[i]); }
for(i=0;i<n;i++)r[i]=a[i];
k=n;
for(i=0;i<m;i++)
{gasit=0;
for(j=0;j<n;j++)if(b[i]==a[j])gasit=1;
if(gasit!=1){r[k]=b[i];k++;}
}
for(i=0;i<k;i++)
printf("%d\t",r[i]);
getch();
}

Tema:
1. Sa se realizeze un program pentru calculul produsului scalar a 2 vectori , pentru
determinarea sumei elem vectorilor, pentru cautarea elem min si max din fiecare
vector.
2. Să se scrie un program care să afişeze rezultatul intersecţiei a două mulţimi de
numere întregi citite de la tastatură.
3. De-a lungul unei perioade de n zile se înregistrează temperaturile zilnice. Să se
determine care a fost cea mai mare şi cea mai mică temperatură înregistrată. De
asemenea, să se determine numărul de temperaturi negative înregistrate şi câte
temperaturi s-au încadrat în limitele obişnuite ale perioadei respective (limitele
sunt introduse de la tastatură).
4. După desfăşurarea unui concurs, cei n candidaţi au obţinut fiecare un punctaj. Să
se determine al câtelea candidat a obţinut postul.
5. Se consideră notele unui student obţinute la cele n examene din timpul unui an
universitar. Să se determine media generală a studentului, numărul de examene
nepromovate, care a fost cea mai mare şi cea mai mică notă obţinută şi dacă
acesta a obţinut note de zece.

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