/*1. Implementaţi metoda bulelor (Bubble-Sort) care foloseşte un indicator flagşi optimizează ciclul
interior.
Se cere atât scrierea funcţiei, cât şi partea de program care face citirea şi afişarea şirului iniţial şi a
celui ordonat.*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <cstdio>
#include <time.h>
#include <stdlib.h>
int main()
int n, v[100];
printf("Dati n:");
scanf("%d", &n);
scanf("%d", &v[i]);
bubble_sort(v, n);
int ok;
do {
ok = 1;
v[i + 1] = aux;
ok = 0;
}
/*2. Modificaţi programul care exemplifică metoda de sortare rapidă (Quick-Sort) aşa încât să
ordoneze şirul iniţial
în ordine descrescătoare.*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
int n, v[200];
printf("Dati n:");
scanf("%d", &n);
scanf("%d", &v[i]);
}
quickSort(v, 0, n - 1);//apel functie
printf("\nVectorul sortat:");
i = prim;
j = ultim;
pivot = p[ultim];
// partitionare
do {
i++;
j--;
if (i < j) {
temp = p[i];
p[i] = p[j];
p[j] = temp;
}//end if
if (i <= j) {
j--;
i++;
}//end if
if (prim < j)
if (i < ultim)
quickSort(p, i, ultim);
}//end quickSort
/*3. Folosiţi funcţiile de bibliotecă pentru sortări (qsort( )) pentru a aranja un şir de înregistrări cu
nume, prenume,
cod numeric personal, data angajării după două câmpuri la alegere (un exemplu ar fi: crescător după
nume şi
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <stdlib.h>
#include<string.h>
struct Angajat{
char nume[25];
char prenume[25];
int cnp;
struct data_angajarii
int zi;
int luna;
int an;
}d;
};
int main()
int n;
scanf("%d",&n);
citire(ang, n);
afisare(ang, n);
printf("\nIntroduceti numele:");
scanf("%s", &p[i].nume);
printf("\nIntroduceti prenumele:");
scanf("%s", &p[i].prenume);
printf("\nIntroduceti cnp-ul:");
scanf("%d", &p[i].cnp);
printf("\nIntroduceti ziua:");
scanf("%d", &p[i].d.zi);
printf("\nIntroduceti luna:");
scanf("%d", &p[i].d.luna);
printf("\nIntroduceti anul:");
scanf("%d", &p[i].d.an);
printf("\nNumele:%s", p[i].nume);
printf("\nPrenumele:%s", p[i].nume);
printf("\nData nasterii:");
}
int comparare(const struct Angajat* x, const Angajat* y)
else
else
else
else
else
else
else
return 0;
}
/*4. Scrieţi o aplicaţie C/C++ in care plecând de la două tablouri (unidimensionale) de numere
naturale să se obţină
un al treilea tablou care să conţină toate elementele tablourilor sursă fără a se repeta, aranjate în
ordine
crescătoare.*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
void interclasare(int , int , int , int , int , int );//prototip functie interclasare
int main()
scanf("%d", &n);
scanf("%d", &m);
scanf("%d", &v1[i]);
}
printf("Introduceti elementele celui de-al doilea tablou:");
scanf("%d", &v2[i]);
void interclasare(int v1[], int v2[], int v3[], int n, int m, int k)
int i = 0, j = 0;
k = 0;
v3[k++] = v1[i++];
else
v3[k++] = v2[j++];
if (i < n)
v3[k++] = v1[l];
if (j < m)
v3[k++] = v2[l];
v[i] = v[j];
v[j] = aux;
}
}
if (v[i] == v[j])
n--;
j--;
/*5. Completati codul problemei date ca exemplu (2) cu alte metode de sortare (sortarea prin
selectie, sortarea
shell, etc.). Cititi de la tastatura numarul de elemente al sirurilor de valori si apoi trimiteţi-l ca
parametru la
*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <cstdio>
#include <conio.h>
int main()
printf("Dati n= ");
scanf("%d", &dim);
init(numere, dim);
//afis(numere, dim);
bubble(numere, dim);
//afis(numere, dim);
init(numere, dim);
//afis(numere, dim);
quick(numere, dim);
//afis(numere, dim);
sortSel(numere, dim);
delete[]numere;
double dif;
start = clock();
srand((unsigned)time(NULL));
numere[i] = rand();
end = clock();
cout << "\nGenerarea numerelor a durat (clicks) " << dif << " si (seconds) " << ((float)dif) /
double dif;
start = clock();
end = clock();
cout << "\nAfisarea numerelor a durat (clicks) " << dif << " si (seconds) " << ((float)dif) /
start = clock();
do {
ok = 1;
aux = numere[i];
numere[i + 1] = aux;
ok = 0;
end = clock();
cout << "\nOrdonarea cu \"bubble sort\" a numerelor a durat (clicks) " << dif << " si (seconds)
" <<
double dif;
start = clock();
end = clock();
cout << "\nOrdonarea cu \"quick sort\" a numerelor a durat (clicks) " << dif << " si (seconds) "
<<
double dif;
start = clock();
pozmin = i;
pozmin = j;
}//end for
temp = p[pozmin];
p[pozmin] = p[i];
p[i] = temp;
}//end for
end = clock();
cout << "\nOrdonarea cu \"quick sort\" a numerelor a durat (clicks) " << dif << " si (seconds) "
<<
}//end sortSel
return -1;
if (*(int*)arg1 == *(int*)arg2)
return 0;
return 1;
/*7. Să se scrie un program care permite sortarea unui stoc de calculatoare. Acestea să se reprezinte
în program ca
o structură formată din caracteristicile calculatoarelor (nume (sir caractere), tip de procesor (sir
caractere),
frecventa de tact (long int), dimensiunea memoriei RAM (int), preț (float). Sortarea se va face, la
alegerea
utilizatorului, după: pret, memorie, tact sau tip de procesor. Folosiți, de preferință, funcția de
bibliotecă pentru
sortări qsort( ) sau o altă metodă la alegere. Sortați apoi considerând un câmp sir de caractere si unul
numeric.
Afișați rezultatele*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>
#include <stdlib.h>
#include<string.h>
struct Stoc {
char nume[25];
char procesor[25];
int mem;
float pret;
};
int main()
struct Stoc* s;
int n, nr;
scanf("%d", &n);
citire(s, n);
scanf("%d", &nr);
afisare(s,n);
printf("\nIntroduceti numele:");
scanf("%s", &p[i].nume);
scanf("%s", &p[i].procesor);
printf("\nIntroduceti frecventa:");
scanf("%ld", &p[i].fr_tact);
printf("\nIntroduceti memoria:");
scanf("%d", &p[i].mem);
printf("\nIntroduceti pretul:");
scanf("%f", &p[i].pret);
}
void afisare(struct Stoc* p, int n)
printf("\nNumele:%s", p[i].nume);
return 0;
return 0;
else return 1;
return 0;
}
int p;
p = _stricmp(a->procesor, b->procesor);
else return 1;
return 0;
/*9. Generati in mod aleatoriu un tablou de maxim 200 valori intregi, valori nu mai mari de 100.
Determinati si
afisati valoarea minima, mediana si maxima generata, sortand elementele printr-o metoda la
alegere.
Determinati valoarea medie si comparati aceasta valoare cu cea mediana (afisati diferenta). Verificati
daca
*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <cstdio>
#include <time.h>
#include <stdlib.h>
int main()
{
srand(time(NULL));
int n , v[200],s=0;
printf("Introduceti n");
scanf("%d", &n);
printf("Tabloul este:");
sortare(n, v);
s = s + v[i];
v[i] = v[j];
v[j] = aux;
}
/*10. Generati printr-un mecanism aleatoriu un tablou de maxim 200 de valori reale (prin doua
tablouri de aceiaşi
dimensiune, primul fiind partea intreaga (nu mai mare de 100), al doilea partea fractionara (limitata
la 20 ca
intreg ce devine .20 fractionar), tabloul real fiind obtinut prin combinarea partii intregi şi fractionare.
Afişati
*/
//Zinveliu Ioana,grupa 4
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <time.h>
#include <iostream>
#include <cstdio>
#include <conio.h>
int main()
float v3[100];
srand(time(NULL));
printf("Introduceti n:");
scanf("%d", &n);
printf("%f"), v3[i];
printf("%f"), v3[i];
return -1;
if (*(float*)arg1 == *(float*)arg2)
return 0;
return 1;