CATEGORII DOCUMENTE |
DESFASURAREA LUCRARII
Se vor edita si apoi executa programele descrise in continuare.
Programul nr. 1
Se citesc 20 de numere intregi de la tastatura si se memoreaza intr-un vector A. Sa se construiasca vectorul B ce contine toate numerele prime din vectorul A.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define N 20
void main(void)
j=0;//index in vectorul B
for(i=0;i<N;i++)
if(estePrim)
}
//afisare vector B:
if(j==0)
printf('Vectorul B:n');
for(i=0;i<j;i++)
printf('%dn',B[i]);
getch();
Programul nr. 2
Sa se realizeze un program care realizeaza produsul scalar a doi vectori.
Sursa programului:
#include<conio.h>
#include<stdio.h>
void main(void) //s-a citit vectorul A de la tastatura
printf('n');
for(i=0;i<dim;i++) //s-a citit vectorul B de la tastatura
//calculez produsul scalar:
for(i=0;i<dim;i++)
produsScalar=produsScalar+A[i]*B[i];
//afisez produsul scalar:
printf('Prod. scalar pentru cei doi vectori este %ld',produsScalar);
getch();
}//main
Programul nr. 3
Sa se citeasca de la tastatura N numere intregi distincte, ce se vor memora intr-un vector A. Daca se tasteaza un numar care a fost introdus deja in vectorul A, se repeta tastarea pana se va introduce un numar distinct.
Exemplu:
Introduceti numarul 1: 7
Introduceti numarul 2: 1
Introduceti numarul 3: 7
Introduceti numarul 3: 5
Introduceti numarul 4:
Se observa cum s-a repetat introducerea numarului 3.
Sursa programului:
#include <stdio.h>
#include <conio.h>
#define N 10 //numarul de numere
void main(void)
if(esteDistinct==1)break;
}//for;;
//Afisarea numerelor tastate:
printf('n');
for(i=0;i<N;i++)
printf('nA[%d]=%d',i,A[i]);
getch();
Programul nr. 4
Se da un vector A de numere intregi. Sa se sorteze in ordine crescatoare, folosind metoda sortarii prin interschimbare.
Sursa programului:
#include <stdio.h>
#include <conio.h>
#define N 10
void main(void)
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]>a[j])
//Afisarea vectorului sortat:
for(i=0;i<N;i++)
printf('nA[%d]=%d',i,A[i]);
getch();
Programul nr. 5
Se da un vector A de numere intregi. Sa se sorteze in ordine descrescatoare, folosind metoda bubble sort.
Sursa programului:
#include <stdio.h>
#include <conio.h>
#define N 10
void main(void)
//Se ordoneaza descrescator componentele vectorului A:
//Metoda bubble sort:
do//if
}while(existaInversiuni==1);
//Afisarea vectorului sortat:
printf('n Vectorul A sortat descrescator: ');
for(i=0;i<N;i++)
printf('nA[%d]=%d',i,A[i]);
getch();
Programul nr. 6
Sa se implementeze un program care implementeaza algoritmul de sortare prin insertie a elementelor unui vector.
Sursa programului:
//Sunt doua grupe: cea din stanga este sortata, cea din
//dreapta nu este.
//Initial, grupa din stanga contine primul element din vector:A[0]
#include <stdio.h>
#include <conio.h>
#define N 9
void main()
int iNesortatSt;//indexul din stanga grupei nesortate
int nr;
int i,j;
clrscr();
for(iNesortatSt=1;iNesortatSt<N;iNesortatSt++)
}
//afisare:
for(i=0;i<N;i++)
printf('n%d',A[i]);
getch();
Programul nr. 7
Sursa programului:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define N 10
void main()
if(este==1)
else nrCrt++;
}//end for;;
//afisarea vectorului A:
for(i=0;i<N;i++)
printf('n%d',A[i]);
getch(); }
Programul nr. 8
Fie a si b doi vectori de numere intregi, citite de la tastatura. Sa se construiasca vectorul c, obtinut prin concatenarea ("lipirea") celor doi vectori.
Sursa programului:
#include <stdio.h>
#include <conio.h>
#define na 5 //numarul de elemente ale vectorului a
#define nb 7
void main(void)
for(i=0;i<nb;i++)
//se copiaza vectorul a in c:
for(i=0;i<na;i++)c[i]=a[i];
//In continuarea lui c, se copiaza vectorul b:
for(i=0;i<nb;i++)c[na+i]=b[i];
//Afisarea vectorului c:
for(i=0;i<na+nb;i++)
printf('nc[%d]=%d',i,c[i]);
getch();
Programul nr. 9
Folosind alocarea dinamica a memoriei, sa se memoreze intr-un vector, un numar de valori introduse de la tastatura, in vederea unor prelucrari ulterioare.
Pentru alocarea dinamica a memoriei, in limbajul C se folosesc functiile malloc() si free(). (In limbajul C++, pe langa acestea, se foloseste si operatorul new).
Functia malloc() aloca memorie din zona de memorie dinamica ( heap ) si returneaza adresa de inceput a zonei alocate. Are ca parametru de intrare, numarul de octeti solicitati.
Functia free() elibereaza memoria alocata anterior din heap pentru o eventuala reutilizare. Ea are ca parametru de intrare, adresa zonei din heap anterior alocata printr-un apel al functiei malloc().
Prototipurile acestor functii sunt:
void *malloc(size_t numar_de_octeti);
void free(void * p);
Ambele functii sunt declarate in fisierul header stdlib.h . In prototipul lui malloc(), numar_de_octeti reprezinta numarul de octeti ceruti pentru alocare dinamica. Daca nu mai este suficienta memorie libera in heap, functia malloc() returneaza pointerul NULL ( valoarea 0 ).
Tipul size_t este definit in stdlib.h si reprezinta un tip generic de intreg fara semn, ce este capabil sa tina cea mai mare cantitate de memorie ce poate fi alocata in urma unui apel al functiei malloc() .
Alocarea dinamica a memoriei se foloseste tipic in aplicatiile cu structuri arborescente (liste inlantuite, arbori).
Sursa programului:
#include <stdio.h>
#include <conio.h>
#include <alloc.h> //pentru functiile malloc() si free()
#include <stdlib.h>
void main(void)
for(i=0;i<nrElemente;i++)
//afisare:
printf('nComponentele introduse in memoria dinamica sunt:');
for(i=0;i<nrElemente;i++)printf('n%d',tab[i]);
free(tab);
getch();
}//main
4. PROBLEME PROPUSE
1. Se da un vector de numere intregi. Care este cea mai mare distanta intre doua elemente alaturate. Ex. . R: 14.
2. Sa se realizeze un program care calculeaza c.m.m.d.c. a elementelor unui vector.
3. Sa se realizeze un program care calculeaza suma a doua numere mari reprezentate ca vectori.
4. Sa se scrie un program prin care se calculeaza si afiseaza N! unde N este un numar mare ( Exemplu: 50!)
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1520
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved