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

Опрацювання файлів з двійковими даними

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

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

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

Рік:
2013
Тип роботи:
Лабораторна робота
Предмет:
Інші

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

Міністерство освіти та науки України НУ “Львівська політехніка” Лабораторна робота №10 “Опрацювання файлів з двійковими даними” Львів 2005 Назва роботи: Опрацювання файлів з двійковими даними. Мета роботи: Закріпити теоретичні знання та оволодіти практичними навиками в створенні програм для опрацювання даних, що міститься в дискових файлах. Засвоїти основні методи читання, запису даних з дискових файлів бінарного типу. Завдання на лабораторну роботу. Розробити програмне забезпечення зі застосуванням техніки роботи з дисковими файлами відповідно до заданого варіанту. Програмне забезпечення повинно складатися з декількох модулів. Основна програма вводить та виводить дані які опрацьовуються функціями, що реалізовані як окремі модулі. Назву текстового файлу, в якому містяться дані для опрацювання, передавати через аргументи функції main(). Розміри та значення елементів матриць (в загальному не квадратних) вводити з текстового файлу. Параметри, що задають кількість рядків та стовпців повинні бути іменованими. Пам’ять під матриці виділяти динамічно. Для трикутних матриць (опираючись на їх структуру) виділяти мінімальні об’єми пам’яті. Обмін даними з функцією, що опрацьовує матрицю, виконувати через двійковий файл (тимчасовий). Назва файлу передається функції як параметр. Після використання тимчасовий файл знищувати. Результати обчислень записувати в текстовий файл. Назви файлів (тимчасового та для запису результатів) формувати на основі назви файлу з вхідними даними шляхом заміни розширення. Звернути особливу увагу на обробку помилок, які користувач може зробити при створені текстового файлу з вхідними даними. При вирішенні задач забезпечити дружній інтерфейс з користувачем. Текст laba10.c: #include <stdio.h> #include <conio.h> #include <alloc.h> #include <string.h> #include <dir.h> #include "laba10fn.h" //підключення власного заготовочного файлу int main(int argc,char* argv[]) { char file_in[20],file_out[20],drive[5],dir[10],name[10],ext[5]; int num,width,j,i; int sum; float ser; FILE *f1,*f2,*tmp; //файлові потоки int **masiv; //вказівка на двохвимірний масив clrscr(); //очистка екрану if(argc!=2) //перевірка кількості параметрів {printf("Error in arguments");return 1;} sscanf(argv[1],"%s",file_in); //зчитування імені файлу fnsplit(file_in,drive,dir,name,ext); //розбивання імені на складові fnmerge(file_out,drive,dir,name,"out"); //зміна розширення імені файлу if(!(f1=fopen(file_in,"r"))) //відкриття файлу для читання {printf("Error: cannot open input file");return 1;} if(!(f2=fopen(file_out,"w"))) //відкриття файлу для запису {printf("Error: cannot create output file");return 1;} tmp=tmpfile(); if(!(tmp=tmpfile())){printf("Error: cannot create output file");return 1;} //перевірка чи файл пустий if(feof(f1)){printf("Error: input file is empty");return 1;} if(!(fscanf(f1,"%d",&width))){printf("Error: not number in input file");return 1;} for(i=1,num=0;i<width+1;num+=i++); masiv=(int **)calloc(width,sizeof(int*));//виділення памяті під масив for(i=0;i<width;i++) masiv[i]=(int*)calloc(i+1,sizeof(int)); //зчитування вхідних даних з файлу for(i=0;i<width;i++) for(j=0;j<i+1;j++) { if(feof(f1)){printf("Error: input file is not complete");return 1;} if(!fscanf(f1,"%d",&masiv[i][j])){printf("Error: not number in input file");return 1;} } for(i=0;i<width;i++) fwrite(&masiv[i][0],sizeof(int),i+1,tmp); //підрахунок суми та середнього арифметичного всіх елементів fseek(tmp,0,0); sum=sum_el(tmp); fseek(tmp,0,0); ser=ser_el(tmp); //вивід результатів fprintf(f2,"Summary of elements: %d\n",sum); fprintf(f2,"Seredne arifmet of elements: %.4f\n",ser); //закриття файлів fclose(tmp); fclose(f1); fclose(f2); free(masiv); return 0; } Текст laba10fn.h //прототипи функцій #include <stdio.h> int sum_el(FILE *tmp); float ser_el(FILE *tmp); Текст laba10fn.c: #include "laba10fn.h" int sum_el(FILE *tmp) { int sum=0; int cur; while(!feof(tmp)) { fread(&cur,sizeof(int),1,tmp); sum+=cur; } sum-=cur; return sum; } float ser_el(FILE *tmp) { int sum=0,num=0; int cur; while(!feof(tmp)) { fread(&cur,sizeof(int),1,tmp); sum+=cur; num++; } sum-=cur; num--; return (float)(sum)/num; } Результат роботи програми: Вхідний файл: 4 1 2 3 4 5 6 7 8 9 10 Вихідний файл: Summa= 551 Seredn= 5.5000 Алгоритм програми Висновок: Ознайомились з масивами та основними прийомами створення та опрацювання динамічних масивів. Організували зчитування вхідної інформації з текстового файлу та обмін через двійковий файл.
Антиботан аватар за замовчуванням

30.04.2013 10:02

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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