DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Розв'язування на С задач, які використовують файли для вводу та виводу даних

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Не вказано

Інформація про роботу

Рік:
2018
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Основи алгоритмізації та програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки Національний університет „Львівська політехніка” Кафедра EОМ Звіт з лабораторної роботи №7 з дисципліни: “Основи алгоритмізації та програмування ” «Розв'язування на С задач, які використовують файли для вводу та виводу даних» 2015 Мета роботи познайомитися iз засобами файлового вводу та виводу в мовi програмування С. Завдання лабораторної роботи Індивідуальні завдання 8 ті ж самі що і індивідуальні завдання 5 чи індивідуальні завдання 6 (уточнити конкретне завдання у викладача), які виконувалися у лабораторній роботі №5. Відмінність полягає у тому, що ввід та вивід виконується через файли. Необхідно написати два варіанти програми: програма у якій ввід здійснюється з текстового файлу і вивід виконується в текстовий файл; програма у якій ввід здійснюється з бінарного файлу і вивід відбувається в бінарний файл. У бінарному файлі дані зберігаються у внутрішньому представлені. Для варіанту, який використовує бінарні файли, необхідно написати дві допоміжні програми: допоміжну програму яка формує бінарний файл із вхідними даними; допоміжну програму яка читає вихідний бінарний файл і виводить на екран монітори вихідні дані. Хід виконання роботи Текст першої програми, яка працює з текстовими файлами. Для читання і запису створені окремі файли, розмір матриці як і раніше вводиться з клавіатури. #include <stdio.h> int FillingZeros(int *a, int array_size); int main(void) { int i, j; int cnt = 0, num = 1; int array_size; scanf("%d", &array_size); // Виділення пам'яті для матриці int **a = (int **)malloc(array_size*sizeof(int *)); for (int i = 0; i < array_size; i++) { a[i] = (int *)malloc(array_size*sizeof(int)); } // Відкриття потоку для вхідного файлу FILE *inp; inp = fopen("input.txt", "rt"); if (inp == NULL) { printf("Input file no found\n"); return 0; } // Відкриття потоку для вхідного файлу FILE *out; out = fopen("output.txt", "wt"); FillingZeros(a, array_size); for (i = 0; i < (array_size / 2); i++) { cnt++; for (j = cnt; j < array_size - cnt; j++) { fscanf(inp, "%d", &num); a[i][j] = num; } } // Вибір початової позиції для заповнення другої половини матриці. if (array_size % 2 == 0) cnt = (array_size / 2); else cnt = (array_size / 2) + 1; for (i = ((array_size / 2) + 1); i < array_size; i++) { cnt--; for (j = cnt; j < array_size - cnt; j++) { fscanf(inp, "%d", &num); a[i][j] = num; } } // Вивід матриці for (i = 0; i < array_size; i++) { for (j = 0; j < array_size; j++) { fprintf(out, "%d", a[j][i]); if (j == (array_size - 1)) fputc('\n', out); } } // Закриття всіх потоків fcloseall; return 0; } // Функція призначена для заповнення масиву нулями int FillingZeros(int **a, int array_size) { int i, j; for (i = 0; i < array_size; i++) { for (j = 0; j < array_size; j++) { a[i][j] = 0; } } return 0; } Результат виконання програми: / / Рис. 1. Файл з вхідними даними Рис.2. Матриця записана у файл Програма успішно прочитала числа з файлу input.txt(рис.1), і записала результат виконання до файлу output.txt(рис.2) . Друга програма складається з декількох файлів, файл «FileConversion.с» призначений для читання текстового файлу і переписування його вмісту до бінарного, файл «FillingZeros.c» заповнює матрицю яку ми обробляємо нулями, і файл «OutputFile.c» зчитує вміст вихідного бінарного файлу і виводить його вміст на екран. Головна програма здійснює зчитування і запис з бінарних файлів та перетворює матрицю. Текст функції FileConversion: #include <stdio.h> #include "Matrix.h" //Переписування вмісту текстового файлу до байтового int FileConversion(void) { int num = 1; //Відкриття потоку для вхідного файлу у текстовому вигляді FILE *inp; inp = fopen("input.txt", "rt"); if (inp == NULL) { printf("Input file no found\n"); } // Відкриття потоку для вихідного файлу у бінарному вигляді FILE *out; out = fopen("input1.txt", "wb"); // Цикл перенесення чисел з текстового файлу до бінарного while (fscanf(inp, "%d", &num) == 1) { putw(num, out); } fcloseall(); return 0; } Текст функції FillingZeros: #include <stdio.h> #include "Matrix.h" // Програма призначена для заповнення масиву нулями int FillingZeros(int **a, int array_size) { int i, j; for (i = 0; i < array_size; i++) { for (j = 0; j < array_size; j++) { a[i][j] = 0; } } return 0; } Текст функції OutputFile: #include <stdio.h> #include "Matrix.h" // Вивід вмісту бінарного файлу на екран int OutputFile(int array_size) { int num, i; //Відкриття потоку для вхідного файлу у бінарному вигляді FILE *inp; inp = fopen("output.txt", "rb"); if (inp == NULL) { printf("Input file no found\n"); } // Цикл для зчитування матриці посимвольно for ( i = 0; i < (array_size * array_size); i++) { if ((i % array_size) == 0) printf("\n"); num = getw(inp); printf("%d ", num); } printf("\n\t\t"); return 0; } Текст головної програми: #include <stdio.h> #include "Matrix.h" int main(void) { int i, j; int cnt = 0, num = 1; int array_size; scanf("%d", &array_size); FileConversion(); // Виділення пам'яті для матриці int **a = (int **)malloc(array_size*sizeof(int *)); for (int i = 0; i < array_size; i++) { a[i] = (int *)malloc(array_size*sizeof(int)); } // Відкриття потоку для вхідного файлу FILE *inp; inp = fopen("input1.txt", "rb"); if (inp == NULL) { printf("Input file no found\n"); return 0; } // Відкриття потоку для вихідного файлу FILE *out; out = fopen("output.txt", "wb"); FillingZeros(a, array_size); for (i = 0; i < (array_size / 2); i++) { cnt++; for (j = cnt; j < array_size - cnt; j++) { num = getw(inp); a[i][j] = num; } } // Вибір початової позиції для заповнення другої половини матриці. if (array_size % 2 == 0) cnt = (array_size / 2); else cnt = (array_size / 2) + 1; for (i = ((array_size / 2) + 1); i < array_size; i++) { cnt--; for (j = cnt; j < array_size - cnt; j++) { num = getw(inp); a[i][j] = num; } } // Вивід матриці for (i = 0; i < array_size; i++) { for (j = 0; j < array_size; j++) { putw(a[j][i], out); } } fcloseall(); OutputFile(array_size); // Закриття всіх потоків fcloseall(); return 0; } Результат виконання програми: / Рис.1. Вміст вхідного файлу у бінарному представленні. / Рис.2. Вміст вихідного файлу у бінарному представленні. / Рис.3. Результат зчитування вихідного файлу Програма успішно переписала вміст вхідного файлу(рис.1), перетворила матрицю(рис.2), використовуючи бінарні файли і вивела вміст вихідного файлу на екран(рис.3). Висновки познайомився iз засобами файлового вводу та виводу в мовi програмування С.
Антиботан аватар за замовчуванням

24.11.2018 19:49

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!