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

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    280,19 Кб
  • Опубликовано:
    2015-04-25
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

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

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








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

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

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


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

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






2013

 

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

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

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

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

 

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



 

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


№ теста

Ввод элементов массива

Ожидаемый результат

1

Размер 5 : -1 -2 -3 -4 5

5: 5 5 5 5 5

2

Размер 5: 1 2 3 -4 -5

5: 1 2 3 2 2

3

Размер 5: 1 1 1 -2 -3

5: 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++;

                            }

                   }

                   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 5

5: 5 5 5 5 5

Тест пройден

2

Размер 5: 1 2 3 -4 -5

5: 1 2 3 2 2

Тест пройден

3

Размер 5: 1 1 1 -2 -3

5: 1 1 1 1 1

Тест пройден

алгоритм программа файл двоичный

 

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


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

Похожие работы на - Работа с бинарными файлами

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!