Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #define for_(index, nr) for(int index = 0; index < nr; index++)
- void alocareMemorie(int** matrice, int nrLinii, int nrColoane)
- {
- if (matrice == NULL)
- {
- printf("Nu s-a putut aloca memorie matricei. ");
- return 0;
- }
- for_(i, nrLinii)
- {
- matrice[i] = (int*)calloc(nrColoane, sizeof(int));
- if (matrice[i] == NULL)
- {
- printf("Nu s-a putut aloca memorie liniilor. ");
- return 0;
- }
- }
- }
- void citireMatrice(int** matrice, int nrLinii, int nrColoane)
- {
- for_(i, nrLinii)
- {
- for_(j, nrColoane)
- {
- printf("matrice[%d][%d] = ", i, j);
- scanf_s("%d", &matrice[i][j]);
- }
- puts("");
- }
- }
- void afisareMatrice(int** matrice, int nrLinii, int nrColoane)
- {
- for_(i, nrLinii)
- {
- for_(j, nrColoane)
- printf("%d ", matrice[i][j]);
- puts("");
- }
- puts("");
- }
- void eliberareMemorie(int** matrice, int nrLinii)
- {
- for_(i, nrLinii) free(matrice[i]);
- free(matrice);
- }
- void BubbleSort(int* vector, int dimensiune)
- {
- int ok = 0;
- do
- {
- ok = 0;
- for_(i, dimensiune - 1)
- if (vector[i] > vector[i + 1])
- {
- ok = 1;
- vector[i] = vector[i] + vector[i + 1];
- vector[i + 1] = vector[i] - vector[i + 1];
- vector[i] = vector[i] - vector[i + 1];
- }
- } while (ok == 1);
- }
- // Cautare element in vector sortat crescator
- int CautareBinara(int* vector, int dimensiune, int deCautat)
- {
- int st = 0, dr = dimensiune - 1;
- while (st <= dr)
- {
- int mijloc = (st + dr) / 2;
- if (vector[mijloc] == deCautat)
- return mijloc;
- else
- if (vector[mijloc] < deCautat)
- st = mijloc + 1;
- else
- dr = mijloc - 1;
- }
- return -1;
- }
- void SortamSiCautam(int** matrice, int nrLinii, int nrColoane, int deCautat)
- {
- for_(i, nrLinii)
- {
- BubbleSort(matrice[i], nrColoane);
- int gasit = CautareBinara(matrice[i], nrColoane, deCautat);
- if (gasit != -1)
- printf("Am gasit elementul pe care-l cautam: matrice[%d][%d] = %d \n", i + 1, gasit + 1, matrice[i][gasit]);
- else
- printf("Nu am gasit elementul pe linia %d a matricei \n", i + 1);
- }
- puts("");
- }
- int main()
- {
- int** matrice;
- int nrLinii, nrColoane;
- printf("Dati numarul de linii: ");
- scanf_s("%d", &nrLinii);
- printf("Dati numarul de coloane: ");
- scanf_s("%d", &nrColoane);
- matrice = (int**)calloc(nrLinii, sizeof(int*));
- alocareMemorie(matrice, nrLinii, nrColoane);
- citireMatrice(matrice, nrLinii, nrColoane);
- printf("Matricea citita: \n");
- afisareMatrice(matrice, nrLinii, nrColoane);
- int deCautat;
- printf("Introduceti elementul pe care doriti sa-l cautati: ");
- scanf_s("%d", &deCautat);
- SortamSiCautam(matrice, nrLinii, nrColoane, deCautat);
- printf("Matricea sortata: \n");
- afisareMatrice(matrice, nrLinii, nrColoane);
- eliberareMemorie(matrice, nrLinii);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement