Работа с бинарными файлами
Алгоритм и код программы для создания исходного двоичного файла чисел с произвольным количеством элементов, чтения из файла действительных восьмибайтных элементов и подсчёта общего количества элементов файла. Вывод результата работы программы на экран.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 23.11.2014 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МІНІСТЕРСТВО ОСВІТИ І НАУКИ, молоді та спорту УКРАЇНИ
Національний аерокосмічний університет ім. М.Є. Жуковського
“Харківський авіаційний інститут”
Кафедра комп'ютерних систем та мереж
Домашнє завдання №2
з дисципліни “Обчислювальна техніка та програмування”
Робота з бінарними файлами
Виконав студент гр. 516Б Момот О.О.
Перевірив ст. викладач каф. 503 Дужа В. В.
2013
1. Порядок выполнения работы
Написать программу для создания исходного двоичного файла чисел (тип чисел указан в варианте) с произвольным количеством элементов. Предусмотреть возможность задания количества элементов и их значения двумя способами: с клавиатуры (до 10 элементов); с помощью датчика случайных чисел (свыше 10 элементов). Исходные данные задать, учитывая специфику конкретного варианта. Реализовать задание в соответствии с вариантом. Результат вычислений и содержимое исходного файла вывести на экран, если количество элементов в исходном файле не более 10, а если больше, то результаты вывести в текстовый файл.
Прочитать из файла действительные восьмибайтные элементы, подсчитать общее количество элементов файла, а также заменить в файле:
11. Все отрицательные элементы на среднее арифметическое всех положительных элементов файла.
2. Алгоритм программы
3. Тестовые наборы
№ теста |
Ввод элементов массива |
Ожидаемый результат |
|
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>
2 #include <stdlib.h>
3 #include <locale.h>
4 #include <windows.h>
5 #include <time.h>
6 #include <string.h>
7 #define MAX 100
8
9 int main(void)
10 {
11 FILE *fd,*ft;
12 char fname[50];
13 printf("Input name file: ");
14 gets(fname);
15 fd=fopen(fname,"wb+");
16 if (fd==NULL)
17 {
18 printf("Error in the name file - %s\n",fname);
19 return 0;
20 }
21 int mas[MAX];
22 int size;
23 int menu, menu2;
24 printf("Menu 1\n1 - Manual input size of array\n2 - Random input size of array\nEnter: ");
25 while(scanf("%i", &menu2) != 1 || menu2 >= 3 || menu2 <= 0)
26 {
27 printf("Error! Input correct data: ");
28 fflush stdin;
29 }
30 switch(menu2)
31 {
32 case 1: printf("Input size array: ");
33 while(scanf("%i", &size) != 1 || size == 0 || size > 10)
34 {
35 printf("Error! Input correct data: ");
36 fflush stdin;
37 }
38 break;
39 case 2: srand(time (NULL));
40 int a, b;
41 printf("Input first of range: ");
42 while(scanf("%i", &a) != 1 || a == 0)
43 {
44 printf("Error! Input correct data: ");
45 fflush stdin;
46 }
47 printf("Input end of range: ");
48 while(scanf("%i", &b) != 1 || b == 0)
49 {
50 printf("Error! Input correct data: ");
51 fflush stdin;
52 }
53 size = rand()%(b - a + 1) + a;
54 break;
55 }
56 printf("Menu 2\n1 - Manual input array\n2 - Random input array\nEnter: ");
57 while(scanf("%i", &menu) != 1 || menu >= 3 || menu <= 0)
58 {
59 printf("Error! Input correct data: ");
60 fflush stdin;
61 }
62 switch(menu)
63 {
64 case 1:
65 printf("Input elements of array: ");
66 for(int i = 0; i < size; i++)
67 {
68 scanf("%d", &mas[i]);
69 }
70 fwrite (mas, sizeof(double), size, fd);
71 break;
72 case 2:
73 srand(time (NULL));
74 int a, b;
75 printf("Input first of range: ");
76 while(scanf("%i", &a) != 1 || a == 0)
77 {
78 printf("Error! Input correct data: ");
79 fflush stdin;
80 }
81 printf("Input end of range: ");
82 while(scanf("%i", &b) != 1 || b == 0)
83 {
84 printf("Error! Input correct data: ");
85 fflush stdin;
86 }
87 for (int i = 0; i < size; i++)
88 {
89 mas[i] = rand()%(b - a + 1) + a;
90 }
91 printf("Elements of array:\n");
92 for(int i = 0; i < size; i++)
93 {
94 printf("%d ", mas[i]);
95 }
96 fwrite (mas, sizeof(double), size, fd);
97 printf("\n");
98 break;
99 }
100 fclose(fd);
101 fd=fopen(fname,"rb+");
102 int i = 0, n, mas2[MAX], mas3[MAX];
103 double sred, sum = 0, k = 0;
104 n = fread (mas2, sizeof(double), size, fd);
105 for(int j=0; j<n; j++)
106 mas3[j]=mas2[j];
107 while(i < n)
108 {
109 if(mas2[i]>0)
110 {
111 sum = sum + mas2[i];
112 k++;
113 }
114 i++;
115 }
116 sred = sum/k;
117 i = 0;
118 if (k != 0)
119 while(i < n)
120 {
121 if(mas2[i]<0)
122 mas2[i] = sred;
123 i++;
124 }
125 if (n > 10)
126 {
127 printf("Answer writing in the 'answer.txt'\n");
128 ft=fopen("answer.txt","wt");
129 fprintf(ft,"The contents of the source file:\n");
130 for(int j=0; j<n; j++)
131 fprintf(ft, "%d ", mas3[j]);
132 fprintf(ft,"\n");
133 fprintf(ft,"Result:\n");
134 for(int j=0; j<n; j++)
135 fprintf(ft, "%d ", mas2[j]);
136 fprintf(ft,"\n");
137 fprintf(ft,"Number of elements: %i", n);
138 fclose(ft);
139 }
140 else
141 {
142 printf("The contents of the source file:\n");
143 for(int i = 0; i < n; i++)
144 {
145 printf("%d ", mas3[i]);
146 }
147 printf("\n");
148 printf("Result:\n");
149 for(int i = 0; i < n; i++)
150 {
151 printf("%d ", mas2[i]);
152 }
153 printf("\n");
154 printf("Number of elements: %i", n);
155 printf("\n");
156 }
157 fclose(fd);
158 system("pause");
159 return 0;
160 }
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 |
Тест пройден |
алгоритм программа файл двоичный
6. Вывод о работоспособности программы
Программа прошла тестирование: в результате выполнения тестов программа выдала ожидаемые результаты. Программа - работоспособна.
Размещено на Allbest.ru
Подобные документы
Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.
реферат [14,5 K], добавлен 06.12.2011Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.
контрольная работа [710,6 K], добавлен 20.01.2011Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Разработка программы, представляющей собой простой текстовый редактор, использующий структуру данных для промежуточного хранения редактируемого файла. Функциональное описание разработки. Внутренняя структура двоичного файла нового класса "bin_file".
курсовая работа [254,6 K], добавлен 26.01.2013Проверка существования и статуса файла. Определение его размера. Открытие файла для чтения, записи, добавления. Закрытие файловых дескрипторов. Запись из переменной в файл. Загрузка файла из сети. Создание и удаление каталога. Функции работы с каталогами.
презентация [133,9 K], добавлен 21.06.2014Подсчет количества отрицательных элементов массива. Изменение исходного массива перемещением всех его положительных элементов в начало с исходным порядком их следования. Вывод на дисплей количества перемещенных элементов. Алгоритм и код программы.
лабораторная работа [946,5 K], добавлен 23.11.2014Разработка шаблона для работы с двоичным файлом, в котором хранится структура данных (двоичное дерево объектов). Представление двоичного дерева в файле. Вставка объекта в дерево, его удаление. Алгоритм сжатия файла. Описание пользовательского интерфейса.
курсовая работа [1,1 M], добавлен 26.01.2013Файловый ввод/вывод с использованием разных классов. Вызовы операционной системы. Использование вызовов операционной системы. Основные способы открытия файла. Замена файла, связанного со стандартными устройствами ввода/вывода. Операции чтения файла.
курсовая работа [1,1 M], добавлен 09.12.2016Методика создания программы, которая выбирает лучшей результат и выводит его на экран с сообщением, что это лучшей результат. Анализ процедуры распознавания простых чисел. Алгоритм и текст программы, переписывающей компоненты файла в обратном порядке.
курсовая работа [1022,7 K], добавлен 08.02.2010Разработка программы для работы с последовательностью прописных латинских букв. Алгоритм программы, результаты ее работы и вывод о работоспособности. Поиск количества вхождений элементов одной строки в другую. Тестирование программы, ее результаты.
лабораторная работа [858,0 K], добавлен 23.11.2014