Лабораторна робота №7 Програмування

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

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

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

Рік:
2016
Тип роботи:
Лабораторна робота
Предмет:
Програмування алгоритмів цифрової обробки сигналів та зображень

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

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра ЕОМ / Звіт до лабораторної роботи № 7 з дисципліни «Основи алгоритмізації та програмування, частина 1» на тему: «Розв'язування на С задач, які використовують файли для вводу та виводу даних» Варіант № 23 2016 Мета: познайомитися iз засобами файлового вводу та виводу в мовi програмування С. Завдання: 1) / 2) / 3) /. Небхідно написати два варіанти програми: • програма у якій ввід здійснюється з текстового файлу і вивід виконується в текстовий файл; • програма у якій ввід здійснюється з бінарного файлу і вивід відбувається в бінарний файл. У бінарному файлі дані зберігаються у внутрішньому представлені. Для варіанту, який використовує бінарні файли, необхідно написати дві допоміжні програми: • допоміжну програму яка формує бінарний файл із вхідними даними; • допоміжну програму яка читає вихідний бінарний файл і виводить на екран монітори вихідні дані. Хід виконання роботи Познайомитися зі засобами вводу з файлів та виводу у файл в мові програмування С. Підготувати тексти програм, у яких використовуються функції роботи з файлами, відлагодити їх та отримати результати роботи програм. Виконати індивідуальне завдання: 1) а) Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <math.h> #include <conio.h> int sign(int a) { if (a < 0) { return -1; } else if (a == 0) { return 0; } else { return 1; } } int main() { int x, y; float z = 0; FILE *input; FILE *output; input = fopen("input.txt", "rt"); if (input == NULL) { printf ("Error"); } fscanf_s(input, "%d %d", &x, &y); fclose(input); output = fopen("output.txt", "wt"); z = z+ (sign(x) + sign(y) * sqrt(x*sign(x)) + sqrt(y*sign(y) ) ); fprintf(output, "z=%5.2f\n", z); fclose(output); return 0; } / Рис.1. - Результат виконання програми. б) Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <math.h> #include <conio.h> int sign(int a) { if (a < 0) { return -1; } else if (a == 0) { return 0; } else { return 1; } } int main() { int x, y, z; FILE *input; FILE *output; input = fopen("input.bin", "rt"); if (input == NULL) { printf("Error\n"); return 0; } fscanf_s(input, "%d %d", &x, &y); int v = 0, q = 0; do { v = (int)v + (((int)x % (int)10)*((int)pow(2, (int)q))); x = (x / 10); q++; } while (x != 0); x = v; int p = 0, g = 0; do { p = (int)p + (((int)y % (int)10)*((int)pow(2, (int)g))); y = (y / 10); g++; } while (y != 0); y = p; fclose(input); output = fopen("output.bin", "wt"); z = (sign(x) + sign(y) * sqrt(x*sign(x)) + sqrt(y*sign(y))); int u, s[64]; for (u = 0; u < 64; u++) { s[u] = 0; } u = 0; while (z != 0) { if (z % 2 == 0) { s[u] = 0; z = z / 2; } else { s[u] = 1; z = z / 2; } u++; } u = u - 1; fprintf(output, "z="); for (; u >= 0; u--) fprintf(output, "%d", s[u]); fclose(output); return 0; } / Рис.2. - Результат виконання програми. 2) а) Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <math.h> #include <conio.h> #include <stdlib.h> int main() { int left, right, newLeft, newRight; int i; FILE *input; FILE *output; input = fopen("input.txt", "rb"); if (input == NULL) { printf("Error\n"); return 0; } fscanf_s(input, "%d\n %d\n", &left, &right); fscanf_s(input, "%d\n %d\n", &newLeft, &newRight); fclose(input); output = fopen("output.txt", "wb"); for (int i = 0; i < 1; i++) {left = max(left, newLeft); right = min(right, newRight); } if (left >= right) { printf(" No intersection"); } else printf("left%d right %d", left, right); return 0; } / Рис.3. - Результат виконання програми. б) Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <math.h> #include <conio.h> #include <stdlib.h> int main() { int left, right, newLeft, newRight; int i; FILE *input; FILE *output; input = fopen("input.bin", "rb"); if (input == NULL) { printf("Error\n"); return 0; } fscanf_s(input, "%d\n %d\n", &left, &right); fscanf_s(input, "%d\n %d\n", &newLeft, &newRight); int v = 0, q = 0; do { v = (int)v + (((int)left % (int)10)*((int)pow(2, (int)q))); left = (left / 10); q++; } while (left != 0); left = v; int p = 0, g = 0; do { p = (int)p + (((int)right % (int)10)*((int)pow(2, (int)g))); right = (right / 10); g++; } while (right != 0); right = p; int v1 = 0, q1 = 0; do { v1 = (int)v1 + (((int)newLeft % (int)10)*((int)pow(2, (int)q1))); newLeft = (newLeft / 10); q1++; } while (newLeft != 0); newLeft = v1; int p1 = 0, g1 = 0; do { p1 = (int)p1 + (((int)newRight % (int)10)*((int)pow(2, (int)g1))); newRight = (newRight / 10); g1++; } while (newRight != 0); newRight = p1; for (i = 0; i < 1; i++); fclose(input); output = fopen("output.bin", "wb"); left = max(left, newLeft); right = min(right, newRight); if (left > right) { fprintf(output, " No intersection"); } else { int u, y[10]; for (u = 0; u < 10; u++) { y[u] = 0; } u = 0; while (left != 0) { if (left % 2 == 0) { y[u] = 0; left = left / 2; } else { y[u] = 1; left = left / 2; } u++; } u = u - 1; fprintf(output, "left="); for (; u >= 0; u--) fprintf(output, "%d", y[u]); int u2, y2[10]; for (u2 = 0; u2 < 10; u2++) { y2[u2] = 0; } u2 = 0; while (right != 0) { if (right % 2 == 0) { y2[u2] = 0; right = right / 2; } else { y2[u2] = 1; right = right / 2; } u2++; } u2 = u2 - 1; fprintf(output, "right="); for (; u2 >= 0; u2--) fprintf(output, "%d", y2[u2]); } fclose(output); return 0; } / Рис.4. - Результат виконання програми. 3) а) Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <malloc.h> #include <stdlib.h> int main() { int i, j; //для циклів int size; //розмір масива int **a; //резервування пам"яті для масива FILE *input; FILE *output; input = fopen("input.txt", "rt"); fscanf_s(input, "%d", &size); //виділення пам"яті під динамічний масив a = (int **)malloc(size * sizeof(int *)); for (i = 0; i<size; i++) a[i] = (int *)malloc(size * sizeof(int)); //заповнення матриці нулями for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { a[i][j] = 0; } } for (i = 0; i < size; i++) //для усіх рядків { //верхня частина for (j = i + 1; j < size - i - 1; j++) {//заповнення випадковими числами усіх стовпців між головною і побічною діагоналями до перетину, тобто галочкою (V) a[i][j] = 0 + rand() % 15; } //нижня частина for (j = size - i; j < i; j++) {//заповнення випадковими числами усіх стовпців між головною і побічною діагоналями до перетину, тобто перевернутою галочкою (^) a[i][j] = 0 + rand() % 15; } } fclose(input); output = fopen("output.txt", "wt"); //виведення масива fprintf(output, "Matrix:\n"); for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { fprintf(output, "%d\t", a[i][j]); } fprintf(output, "\n"); } fclose(output); return 0; } / Рис.5. Результат виконання програми. б)Код програми #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <locale.h> #include <malloc.h> #include<conio.h> #include <stdlib.h> #include <math.h> int main() { int i, j, v = 0, h = 0; int size; //розмір масива int **a; //резервування пам"яті для масива FILE *input; FILE *output; input = fopen("input.bin", "rt"); fscanf_s(input, "%d", &size); do { v = (int)v + (((int)size % (int)10)*((int)pow(2, (int)h))); size = (size / 10); h++; } while (size != 0); size = v; input = fopen("input.bin", "rb"); if (size == NULL) { printf("Error\n"); return 0; } //виділення пам"яті під динамічний масив a = (int **)malloc(size * sizeof(int *)); for (i = 0; i < size; i++) a[i] = (int *)malloc(size * sizeof(int)); //заповнення матриці нулями for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { a[i][j] = 0; } } for (i = 0; i < size; i++) //для усіх рядків { //верхня частина for (j = i + 1; j < size - i - 1; j++) {//заповнення випадковими числами усіх стовпців між головною і побічною діагоналями до перетину, тобто галочкою (V) a[i][j] = 1 + rand() % 15; } //нижня частина for (j = size - i; j < i; j++) {//заповнення випадковими числами усіх стовпців між головною і побічною діагоналями до перетину, тобто перевернутою галочкою (^) a[i][j] = 1 + rand() % 15; } } fclose(input); output = fopen("output.bin", "wt"); //виведення масива for (i = 0; i < size; i++) { for (j = 0; j < size; j++) { if (a[i][j] == 0) { fprintf(output, "%d", 0); } int u, y[10]; for (u = 0; u < 10; u++) { y[u] = 0; } u = 0; while (a[i][j] != 0) { if (a[i][j] % 2 == 0) { y[u] = 0; a[i][j] = a[i][j] / 2; } else { y[u] = 1; a[i][j] = a[i][j] / 2; } u++; } u = u - 1; for (; u >= 0; u--) fprintf(output, "%d", y[u]); fprintf(output, "\t"); } fprintf(output, "\n"); } return 0; } / Рис.6. - Результат виконання програми. Висновок: на даній лабораторній роботі я познайомився із засобами файлового вводу та виводу в мовi програмування С.
Антиботан аватар за замовчуванням

28.05.2019 17:05-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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