Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- char bubl(int *); // сортировка пузырьком
- int *readf(const char *); // считывает вектор из файла
- int main(void) {
- int *vp = readf("input.txt");
- if (!*vp)
- {
- printf("Error reading\n");
- return 0;
- }
- for(size_t i = 1; i <= *vp; i++)
- {
- printf("Num %i = %i\n", i, *(vp+i));
- }
- if (!bubl(vp))
- {
- printf("Error sort");
- return 0;
- }
- for(size_t i = 1; i <= *vp; i++)
- {
- printf("Num %i = %i\n", i, *(vp+i));
- }
- return 0;
- }
- char bubl(int *vect)
- {
- // сортировка пузырьком
- // сортирует данные внутри указателя на вектор
- // вход - указатель на вектор (нулевой элемент - размер вектора)
- // если вектор нулевой - выход
- if (!*vect)
- {
- return 0;
- }
- // сортировка пузырьком
- int buff = 0;
- char chek = 1;
- while (chek == 1)
- {
- chek = 0;
- for (size_t i = 1; i < *vect; i++)
- {
- if (*(vect + i) > *(vect + i + 1))
- {
- buff = *(vect + i);
- *(vect + i) = *(vect + i + 1);
- *(vect + i + 1) = buff;
- chek = 1;
- }
- }
- }
- }
- int *readf(const char *file_name)
- {
- // чтение вектора из файла
- // вход - имя файла с вектором в txt
- // выход - указатель на считанный вектор
- // нулевой элемент - размер вектора
- // структура считываемого файла - одно число в строке
- FILE *input_fp = fopen(file_name, "r");
- if (input_fp == 0)
- {
- printf("Error 1\n");
- return 0;
- }
- // определение количества строк в файле (одна строка - одно число)
- int vsize = 0;
- while (!feof(input_fp) && !ferror(input_fp))
- {
- fscanf(input_fp, "%*[^\n]%*c");
- vsize++;
- }
- // выделение памяти под считываемый вектор (нулевой элемент является размером вектора)
- int *vector_p = malloc(vsize * sizeof *vector_p);
- if (!vector_p)
- {
- printf("Error 2\n");
- return 0;
- }
- vsize--;
- rewind(input_fp);
- *vector_p = vsize;
- // чтение вектора
- for (size_t i = 1; i <= vsize; i++)
- {
- fscanf(input_fp, "%i", vector_p+i);
- }
- fclose(input_fp);
- return vector_p;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement