Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Теоретическая часть. 8.1.1. Работа с внешними файлами в языке программирования С++




8.1.1. Работа с внешними файлами в языке программирования С++.

 

Файлы данных могут содержать различную информацию.

При работе с файлами обычно выполняют следующие операции: описание указателя на файл, открытие файла, чтение или запись данных, закрытие файла, вспомогательные действия: проверка конца файла, проверка наличия ошибки и др.

Описание указателя на файл производится обязательно до открытия файла. Форма описания следующая:

FILE *f1, *f2...;

где FILE – это описанный в заголовочном файле STDIO.H тип данных, представляющий собой буфер для обмена данными с файлом.

Открытие файла:

f1 = fopen (“имя файла”,”режим”),

где f1 –описанный ранее указатель на файл;

fopen – функция открытия файла;

“имя файла” – указывается полное имя файла;

“режим” – этот параметр определяет тип операции, которые будут выполняться с файлом или режим его работы:

“r” – открытие файла для чтения;

“w” – для записи;

“a” – для дозаписи;

“+” – добавка к основному режиму, указывает на возможность выполнения операций в совмещенном режиме чтение/запись.

“r+” – чтение с последующей записью;

“b” – добавка к основному режиму, указывает, что файл содержит информацию в двоичном коде.

Для записи данных в файл используется оператор fprintf:

fprintf(f1,“управляющая строка”,” список вывода”);

Для чтения данных из файла используется оператор fscanf:

fscanf(f1,“управляющая строка”, список адресов);

Чтение числовых данных из файла необходимо производить с учетом формата, в котором данные были занесены в файл.

Для записи и чтения строк можно использовать функции fprintf()и fscanf() с форматом %s или специальные функции fputs(имя строки, f1), fgets(имя строки, max длина, f1);

При закрытии производится выгрузка данных из буфера файла и отключение его от программы.

fclose(указатель файла);

Проверка конца файла:

feof(указатель файла)

 

8.1.2 Пример составления алгоритма и программы на языке С++ для обработки одномерных массивов с использованием внешних файлов.

 

Задание: Для массива вещественных чисел A(20) выполнить ввод элементов из текстового файла. Вывести на экран все элементы массива. Разделить в массиве все элементы на среднее арифметическое значение, вывести результат в текстовый файл и на экран.

Решение.

Опишем массив A в разделе описаний. Для обозначения количества элементов массива A введем переменную n. Для связи с внешними файлами будем использовать одну переменную FILE *f. До начала работы программы создадим файл Data.txt, в который внесем 20 вещественных значений.

Процедуру ввода элементов массива из файла выполним с помощью функции fscanf. В переменную A_Sum запомним сумму элементов массива А, а в переменную A_Sr – среднее арифметическое элементов масива А.

Преобразованный массив А запишем в файл Result.txt с использованием функции fscanf.

Блок-схема алгоритма решения данной задачи выглядит следующим образом:

 

Текст программы на языке С++ выглядит следующим образом:

 

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

#include<conio.h>

int main()

{float A[20],A_Sr,A_Sum;

int n=20,i,j;

FILE *f;

clrscr();

f=fopen("Data.txt","r");

printf("Исходный массив A:\n");

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

{ fscanf(f,"%f",&A[i]);

printf("%8.2f",A[i]);

}

fclose(f);

f=fopen("Result.txt","w");

A_Sum=0;

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

A_Sum+=A[i];

A_Sr=A_Sum/n;

printf("\nСреднее арифметическое матрицы А = %.2f\n",A_Sr);

printf("Преобразованный массив A:\n");

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

{ A[i]=A[i]/A_Sr;

printf("%8.2f",A[i]);

fprintf(f,"%8.2f",A[i]);

}

fclose(f);

getch();

return 0;

}

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

 

Результаты с экрана

Исходный массив A:

9.00 4.01 -6.08 0.74 -5.66 -2.89 -9.33 -3.30 -9.92 -9.79

5.29 3.71 6.31 -6.70 -9.17 1.29 3.96 -7.82 -1.11 -4.50

 

Среднее арифметическое матрицы А = -2.10

Преобразованный массив A:

-4.29 -1.91 2.90 -0.35 2.70 1.38 4.45 1.57 4.73 4.67

-2.52 -1.77 -3.01 3.19 4.37 -0.61 -1.89 3.73 0.53 2.14

Файл Data.txt

9.00 4.01 -6.08 0.74 -5.66 -2.89 -9.33 -3.30 -9.92 -9.79

5.29 3.71 6.31 -6.70 -9.17 1.29 3.96 -7.82 -1.11 -4.50

Файл Result.txt

-4.29 -1.91 2.90 -0.35 2.70 1.38 4.45 1.57 4.73 4.67

-2.52 -1.77 -3.01 3.19 4.37 -0.61 -1.89 3.73 0.53 2.14

 

 




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 358; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.