Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- int* alocareVector(int dimensiune)
- {
- int* vector;
- vector = (int*)calloc(dimensiune + 1, sizeof(int));
- if (!vector)
- {
- perror(0);
- return -1;
- }
- return vector;
- }
- int* citireVector(FILE* fisier, int dimensiune)
- {
- int* vector;
- vector = alocareVector(dimensiune);
- fopen_s(&fisier, "numere.txt", "r");
- if (!fisier)
- return -1;
- fseek(fisier, sizeof(int), SEEK_SET);
- fseek(fisier, -1, SEEK_CUR);
- for (int i = 0; i < dimensiune; i++)
- fscanf_s(fisier, "%d", &vector[i]);
- return vector;
- }
- long lungimeFisier(FILE* fisier)
- {
- if (!fisier)
- return -1;
- long poz = ftell(fisier);
- fseek(fisier, 0L, SEEK_END);
- long l = ftell(fisier);
- fseek(fisier, poz, SEEK_SET);
- return l;
- }
- void QuickSort(int* vector, int stanga, int dreapta)
- {
- int i = stanga, j = dreapta;
- int pivot = vector[(stanga + dreapta) / 2];
- while (i <= j)
- {
- while (vector[i] < pivot)
- i++;
- while (vector[j] > pivot)
- j--;
- if (i <= j)
- {
- int tmp = vector[i];
- vector[i] = vector[j];
- vector[j] = tmp;
- i++;
- j--;
- }
- }
- if (stanga < j)
- QuickSort(vector, stanga, j);
- if (i < dreapta)
- QuickSort(vector, i, dreapta);
- }
- void afisareVector(int* vector, int dimensiune)
- {
- for (int i = 0; i < dimensiune; i++)
- printf("%d ", vector[i]);
- puts("");
- }
- void main()
- {
- int dimensiune;
- int* vector;
- FILE* fisier;
- fopen_s(&fisier, "numere.txt", "r");
- if (!fisier)
- return;
- fscanf_s(fisier, "%d", &dimensiune);
- vector = citireVector(fisier, dimensiune);
- fseek(fisier, 0, SEEK_END);
- printf("Lungimea fisierului: %ld \n", lungimeFisier(fisier));
- printf("Am citit din fisier: ");
- afisareVector(vector, dimensiune);
- printf("Vectorul dupa sortare: ");
- QuickSort(vector, 0, dimensiune - 1);
- afisareVector(vector, dimensiune);
- free(vector);
- fclose(fisier);
- }
Add Comment
Please, Sign In to add comment