DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

Рік:
2005
Тип роботи:
Лабораторна робота
Предмет:
Програмування
Група:
КН-11
Коротко про документ

Про що ця робота

Лабораторна робота присвячена опрацюванню файлів з двійковими даними мовою C. Студент ознайомився з роботою з дисковими файлами та динамічними масивами.

У роботі розглядаються

  • Програмування мовою C
  • Робота з файлами
  • Двійкові дані
  • Динамічні масиви
  • Обробка помилок
  • Модульне програмування

Зміст і розділи

  1. Назва роботи
  2. Мета роботи
  3. Завдання на лабораторну роботу
  4. Текст програми
  5. Результат роботи програми
  6. Алгоритм програми
  7. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Викладач кафедри

Ключові поняття

двійковий файлдинамічний масивмодульфункціятекстовий файлматрицявказівникпотікпам'ятьпрограмування

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

Міністерство освіти та науки України НУ “Львівська політехніка” Лабораторна робота №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 Алгоритм програми Висновок: Ознайомились з масивами та основними прийомами створення та опрацювання динамічних масивів. Організували зчитування вхідної інформації з текстового файлу та обмін через двійковий файл.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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