Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  


AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


VECTORI - programe cu vectori

c

+ Font mai mare | - Font mai mic



VECTORI (II)

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.

Sursa programului:

#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

Se citeste un numar natural x, de la tastatura. Sa se copieze primele N numere prime (N - cunoscut), care sunt strict mai mari ca x, intr-un vector A. Sa se afiseze acest vector.

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1405
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved