Работа с бинарными файлами

 

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, молоді та спорту УКРАЇНИ

Національний аерокосмічний університет ім. М.Є. Жуковського

Харківський авіаційний інститут

Кафедра компютерних систем та мереж










Домашнє завдання №2

з дисципліни Обчислювальна техніка та програмування

Робота з бінарними файлами




Виконав студент гр. 516Б Момот О.О.

Перевірив ст. викладач каф. 503 Дужа В. В.








2013


1. Порядок выполнения работы


Написать программу для создания исходного двоичного файла чисел (тип чисел указан в варианте) с произвольным количеством элементов. Предусмотреть возможность задания количества элементов и их значения двумя способами: с клавиатуры (до 10 элементов); с помощью датчика случайных чисел (свыше 10 элементов). Исходные данные задать, учитывая специфику конкретного варианта. Реализовать задание в соответствии с вариантом. Результат вычислений и содержимое исходного файла вывести на экран, если количество элементов в исходном файле не более 10, а если больше, то результаты вывести в текстовый файл.

Прочитать из файла действительные восьмибайтные элементы, подсчитать общее количество элементов файла, а также заменить в файле:

. Все отрицательные элементы на среднее арифметическое всех положительных элементов файла.



. Алгоритм программы




. Тестовые наборы


№ тестаВвод элементов массиваОжидаемый результат1Размер 5 : -1 -2 -3 -4 55: 5 5 5 5 52Размер 5: 1 2 3 -4 -55: 1 2 3 2 23Размер 5: 1 1 1 -2 -35: 1 1 1 1 1

4. Код программы


1#include <stdio.h>

#include <stdlib.h>

#include <locale.h>

#include <windows.h>

#include <time.h>

#include <string.h>

#define MAX 100


int main(void)

{

FILE *fd,*ft;

char fname[50];

printf("Input name file: ");

gets(fname);

fd=fopen(fname,"wb+");

if (fd==NULL)

{

printf("Error in the name file - %s\n",fname);

return 0;

}

int mas[MAX];

int size;

int menu, menu2;

printf("Menu 1\n1 - Manual input size of array\n2 - Random input size of array\nEnter: ");

while(scanf("%i", &menu2) != 1 || menu2 >= 3 || menu2 <= 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

switch(menu2)

{

case 1: printf("Input size array: ");

while(scanf("%i", &size) != 1 || size == 0 || size > 10)

{

printf("Error! Input correct data: ");

fflush stdin;

}

break;

case 2: srand(time (NULL));

int a, b;

printf("Input first of range: ");

while(scanf("%i", &a) != 1 || a == 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

printf("Input end of range: ");

while(scanf("%i", &b) != 1 || b == 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

size = rand()%(b - a + 1) + a;

break;

}

printf("Menu 2\n1 - Manual input array\n2 - Random input array\nEnter: ");

while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

switch(menu)

{

case 1:

printf("Input elements of array: ");

for(int i = 0; i < size; i++)

{

scanf("%d", &mas[i]);

}

fwrite (mas, sizeof(double), size, fd);

break;

case 2:

srand(time (NULL));

int a, b;

printf("Input first of range: ");

while(scanf("%i", &a) != 1 || a == 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

printf("Input end of range: ");

while(scanf("%i", &b) != 1 || b == 0)

{

printf("Error! Input correct data: ");

fflush stdin;

}

for (int i = 0; i < size; i++)

{

mas[i] = rand()%(b - a + 1) + a;

}

printf("Elements of array:\n");

for(int i = 0; i < size; i++)

{

printf("%d ", mas[i]);

}

fwrite (mas, sizeof(double), size, fd);

printf("\n");

break;

}

fclose(fd);

fd=fopen(fname,"rb+");

int i = 0, n, mas2[MAX], mas3[MAX];

double sred, sum = 0, k = 0;

n = fread (mas2, sizeof(double), size, fd);

for(int j=0; j<n; j++)

mas3[j]=mas2[j];

while(i < n)

{

if(mas2[i]>0)

{

sum = sum + mas2[i];

k++;

}

i++;

}

sred = sum/k;

i = 0;

if (k != 0)

while(i < n)

{

if(mas2[i]<0)

mas2[i] = sred;

i++;

}

if (n > 10)

{

printf("Answer writing in the 'answer.txt'\n");

ft=fopen("answer.txt","wt");

fprintf(ft,"The contents of the source file:\n");

for(int j=0; j<n; j++)

fprintf(ft, "%d ", mas3[j]);

fprintf(ft,"\n");

fprintf(ft,"Result:\n");

for(int j=0; j<n; j++)

fprintf(ft, "%d ", mas2[j]);

fprintf(ft,"\n");

fprintf(ft,"Number of elements: %i", n);

fclose(ft);

}

else

{

printf("The contents of the source file:\n");

for(int i = 0; i < n; i++)

{

printf("%d ", mas3[i]);

}

printf("\n");

printf("Result:\n");

for(int i = 0; i < n; i++)

{

printf("%d ", mas2[i]);

}

printf("\n");

printf("Number of elements: %i", n);

printf("\n");

}

fclose(fd);

system("pause");

return 0;

}


5. Результат работы программы


№ тестаВвод элементов массиваРезультатВывод1Размер 5 : -1 -2 -3 -4 55: 5 5 5 5 5Тест пройден2Размер 5: 1 2 3 -4 -55: 1 2 3 2 2Тест пройден3Размер 5: 1 1 1 -2 -35: 1 1 1 1 1 Тест пройденалгоритм программа файл двоичный



. Вывод о работоспособности программы


Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа - работоспособна.


МІНІСТЕРСТВО ОСВІТИ І НАУКИ, молоді та спорту УКРАЇНИ Національний аерокосмічний університет ім. М.Є. Жуковського Харківський авіаційний інститут Кафед

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ