Составление линейных программ на С++ 10


НазваниеСоставление линейных программ на С++ 10
страница4/26
ТипПрактическая работа
1   2   3   4   5   6   7   8   9   ...   26
Тема: Работа с файлами С++

Цель: получить практические навыки программирования задач ввода-вывода с использованием файлов.

Теоретические сведения

Организация ввода и вывода. Файловая система

Операции ввода/вывода в языке Си осуществляются через потоки. Поток - это логическое устройство, выдающее и принимающее информацию.

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

В языке Си (С++) формат стандартных файлов ввода/вывода описан в заголовочном файле stdio.h. Имена стандартных файлов ввода/вывода для языка Си (С++) представлены в табл. 7.1. В момент начала выполнения программы на языке Си (С++) автоматически открываются три потока:

stdin, stdout, stderr.

Таблица .1

Потоки, определяемые в языке Си и С++

Имя стандартного файла

Описание

stdaux

Последовательный ввод/вывод

stderr

Выходной поток ошибок

stdin

Стандартный ввод

stdout

Стандартный вывод

stdprn

Вывод на принтер


С++ поддерживает всю систему ввода/вывода Си и добавляет к ней дополнительные возможности, связанные в основном с вводом/выводом объектов. Описание средств для создания потоков в С++ представлено в заголовочном файле iostream.h. Когда начинает работать программа на С++, открываются потоки, приведенные в табл. 7.2.

Таблица.2

Потоки, определяемые в языке С++

Имя стандартного файла

Описание

cin

Стандартный ввод - клавиатура

cout

Стандартный вывод - экран

cerr

Стандартная ошибка - экран

clog

Буферизованная версия cerr - экран


Файловая система языков Си и С++ состоит как бы из двух уровней:

логических файлов ;

физических файлов, с которыми логические файлы всегда связаны.

Логический файл описывается как указатель на открываемый поток FILE * и служит средством взаимодействия с физическим файлом.

Имя физического файла появляется в программе всего один раз, в тот момент, когда происходит открытие файла, осуществляемое функцией fopen() и одновременно его связывание с логическим файлом.

Основными действиями, производимыми над файлами, являются :

открытие файла ,

обработка файла

закрытие файла.

Обработка файлов может заключаться в следующем :

считывание блока данных из потока в оперативную память,

запись блока данных из оперативной памяти в поток,

считывание определенной записи данных из потока,

занесение определенной записи данных в поток.

При этом необходимо помнить, что понятие файла в памяти ЭВМ не определено, и приобретает смысл только после его связи с внешним физическим файлом.

Текстовые файлы

Тип FILE определяется в заголовочном файле stdio.h и обычно представляет собой структуру, содержащую параметры реализации потока, такие как адреса буферов, указатели позиций потока, маркеры ошибок потока и т.д.

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

к текстовому или

двоичному,

а также способ доступа:

чтение или

запись.

Все это выполняется функцией fopen(), имеющей синтаксис:

fopen("имя_файла", "режим_доступа")

Режимы доступа к файлам для функции fopen() приведены в табл. 7.3.

Таблица.3

Режимы доступа к файлам

Режим

Описание

r

Открыть файл только для чтения, модификации файла

запрещены.

w

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

a

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

r+

Открыть существующий файл для чтения и записи.

w+

Создать новый файл для чтения и записи.

а+

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


Пример : Открыть текстовый файл для чтения

FILE *ft; // объявили указатель на файловый поток

ft = fopen("inp_f.txt","r"); // открыли файл inp_f.txt

При попытке открыть существующий файл можно допустить ошибку в его имени или в указании пути к нужному файлу. Это вызывает ошибку исполнения программы. Следует предвидеть подобные ситуации и проводить проверку возможности открытия файла. Такую проверку осуществить довольно легко, так как функция fopen() возвращает значение указателя в случае успешного его открытия и значение NULL, если доступ к файлу невозможен. Поэтому для проверки достаточно написать:

if (ft = fopen("inp_f.txt","r") != NULL)

{ // обработка файла

}

Текстовой файл состоит из последовательности символов, разбитой на строки путем использования управляющего символа \n. На диске текстовые файлы хранятся в виде сплошной последовательности символов, и их деление на строки становится заметным лишь в момент вывода на экран или печать, так как именно при выводе управляющие символы начинают выполнять свои функции. Текстовые файлы легко переносятся с одного типа компьютера на другой лишь в случаях, когда они содержат только символы, принадлежащие стандартному набору символов.

При работе с текстовыми файлами возможна их посимвольная или построчная обработка.

Основные методы обработки текстовых файлов

Файловые функции ввода/вывода fprintf() и fscanf() работают аналогично функциям printf() и scanf(), но имеют дополнительный аргумент, являющийся указателем на файловый поток.

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

#include

#include

#include

void main()

{ FILE *f;

int dig;

if (f = (fopen("inp_f","r")) == NULL) // открыть файл для чтения

{ printf("Невозможно открыть файл!\n");

exit(0);

}

fscanf(f, "%d", &dig); // считать значение dig из файла

fclose(f); // закрыть файл

f = fopen("out_f","w"); // открыть файл для записи

fprintf(f, "Мы прочитали число %d", dig);

fclose(f); // закрыть файл

}

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

В приведенном примере имя файла было записано непосредственно в операторе открытия файла. Но можно сообщить имя открываемого файла, введя его с клавиатуры или пользуясь аргументами командной строки.

Задание 2. Написать программу, которая сжимает содержимое файла, записывая в выходной файл лишь каждый третий символ из входного файла.

#include

#include

#include

#include

void main(int argc, char *argv[])

{ FILE *f_in, *f_out;

int ch;

char *name; // имя входного файла

int count = 0; // счетчик элементов

if (argc<2) // в командной строке нет имени

{ printf("Введите имя входного файла");

gets(name);

}

else name = argv[1]; // взять имя из командной строки

if ((f_in = fopen(name, "r")) != NULL)

{ strcat(name, ".out"); // добавляет расширение .out

// к имени файла

f_out = fopen(name, "w"); // открывает файл для записи

while((ch = fgetc(f_in)) != EOF)

if (count++ % 3 == 0)

fputc(ch, f_out); // выводит каждый третий символ

fclose(f_in);

fclose(f_out);

}

else printf("Невозможно открыть файл\n "); }

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

Задание 3. Построчное чтение информации из входного файла и вывод ее на экран как на стандартное устройство вывода.

#include

#include

#include

#include

void main(int argc, char *argv[])

{ FILE *f_in;

char buffer[256]; // максимальная длина строки - 255 символов

char *name; // имя входного файла

if (argc<2) // в командной строке нет имени

{ printf("Введите имя входного файла");

gets(name);

}

else name = argv[1]; // взять имя из командной строки

if ((f_in = fopen(name, "r")) != NULL)

{ while (fgets(buffer,255,f_in)) != NULL)

{ fputs(buffer, stdout);

fputc('\n', stdout);

}

fclose(f_in);

}

else printf("Невозможно открыть файл\n "); }

Задания для самостоятельной работы:

1. Случайным образом создать таблицу пар целочисленных значений и записать её в текстовый файл в виде:

X Y

5 1

2 8

12 3 и т.д.

Считать из файла пары значений и в тех из них, где X>Y , поменять значения X и Y местами. Результат записать в другой текстовый файл такого же формата.
2. Ввести с клавиатуры попарно значения вещественного типа и записать их в текстовый файл в виде таблицы следующего формата:

X : Y

2.1 : 3.7

6.2 : 5.4 и т.д.

Считать из файла полученные пары значений и создать из них другой файл вида:

sin(x) : cos(y)

значение sin(2.1) : значение cos(3.7) и т.д.
3. Ввести с клавиатуры попарно значения вещественного типа и записать их в текстовый файл в виде таблицы следующего формата:

X : Y

2.1 : 3.7

6.2 : 5.4 и т.д.

Считать из файла полученные пары значений и создать из них другой файл вида:

tg(x) : ctg(y)

значение tg(2.1) : значение ctg(3.7) и т.д.
4. Случайным образом создать таблицу пар значений и записать её в текстовый файл в виде:

n * c

5 * m

7 * a

3 * q и т.д.

Считать из файла пары значений и создать из них другой текстовый файл вида

mmmmm

aaaaaaa

qqq
5. Случайным образом создать таблицу пар значений и записать её в текстовый файл в виде:

n * c

5 * 3.1

7 * 4.2

3 * 8.3 и т.д.

Считать из файла пары значений и создать из них другой текстовый файл вида произведений:

15.5

29.4

24.9
6. Случайным образом создать таблицу пар целочисленных значений и записать её в текстовый файл в виде:

X Y

5 1

2 8

12 3 и т.д.

Считать из файла пары значений и в тех из них, где X кратен Y , пометить строку таблицы:

X Y

5 1 ***

2 8

12 3 ***

в том же файле.
7. Случайным образом создать таблицу пар целочисленных значений и записать её в текстовый файл в виде:

X Y

5 8

2 1

1 3 и т.д.

Считать из файла пары значений и в тех из них, где X меньше Y , пометить строку таблицы:

X Y

5 8 ###

2 1

1 3 ###

в том же файле.
8. Случайным образом создать таблицу пар значений и записать её в текстовый файл в виде:

a b c

5.2 4.6 2.5

1.2 8.9 2.3 и т.д.

Считать из файла записанные данные и определить, можно ли построить треугольник с такими сторонами. Пометить соответствующие строки таблицы (в том же файле).

a b c

5.2 4.6 2.5 можно

1.2 8.9 2.3
9. Создать текстовый файл, содержащий вещественные значения. Считать из файла записанные данные и определить максимальное значение. Если оно находится в первой половине файла, заменить его суммой последующих элементов, если во второй – суммой предыдущих элементов.
10. Случайным образом создать таблицу пар целочисленных значений и записать её в текстовый файл в виде:

X Y

5 25

1 3

49 7 и т.д.

Считать из файла пары значений и в тех из них, где X является точным квадратом Y или наоборот, найти сумму значений X и Y. Результат записать в другой текстовый файл в виде

X Y sum

5 25 30

1 3

49 7 56
11. Создать текстовый файл, содержащий целые числовые значения, например : 5 3 21 4 37 52 9 2. Считать из файла записанные данные и определить минимальное значение. Если оно кратно трем, заменить каждое третье значение файла нулем, если кратно пяти – заменить его суммой первого и последнего элементов.
12. Создать текстовый файл, содержащий целые числовые значения, например: 15 13 21 42 37 50 9 2. Считать из файла записанные данные и заменить нулем каждое значение файла, кратное минимальному числу.
13. Ввести с клавиатуры значения вещественного типа и записать их в текстовый файл в виде таблицы следующего формата:

X : Y : Z

2.1 : 3.7 : 0.9

6.2 : 5.4 : 4.2 и т.д.

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

sin(max{X,Y,Z}) : cos(min{X,Y,Z})

значение sin(3.7) : значение cos(0.9)

Литература

Дж. Рихтер. Windowsдля профессионалов. – 3-е изд.: М: Русская редакция. 1993; 4-е изд: СПб: Русская редакция, 2001. – 752 с. [шифр библиотеки 681.3 Р-558]

Д. Круглински, С. Уинглоу, Дж. Шеферд. Программирование на MicrosoftVisualC++ 6.0 для профессионалов. – СПб: Питер, М: Русская редакция, 2001. – 864 с. [шифр библиотеки 681.3 К-844]

Архангельский А.Я. Программирование в C++Builder5. – М: БИНОМ, 2000. – 1152 с.

Вильямс А. Системное программирование в Windows2000 для профессионалов. – СПб.: Питер, 2001 – 624 с. [шифр библиотеки 681.3 В-467]


Оценка

Критерии

5

Студент написал правильно программу

4

Правильно написана программа, но есть не большие отклонения

3

Код программы написан, верно, но есть отклонения в работе программы

2

не справился с заданием (программа не написана)

Практическая работа №7

1   2   3   4   5   6   7   8   9   ...   26

Похожие:

Составление линейных программ на С++ 10 iconПорядок учетно-кадастровых процедур в отношении сооружений (линейных объектов недвижимости)
В соответствии с Федеральным законом от 24. 07. 2007 №221-фз «О государственном кадастре недвижимости» (далее Закон) в отношении...

Составление линейных программ на С++ 10 icon«Составление индивидуальных корреционно развивающих программ развития...

Составление линейных программ на С++ 10 iconО подготовке к государственной аккредитации образовательных программ в 2018 г
Количество образовательных программ бакалавриата, специалитета и магистратуры (без учета программ, реализация которых завершается...

Составление линейных программ на С++ 10 iconОао мгтс
...

Составление линейных программ на С++ 10 iconЛекция: Организация похода выходного дня
Составление плана подготовки и проведения путешествия. Разработка маршрута, подбор картографического материала, составление схемы...

Составление линейных программ на С++ 10 iconАдминистративный регламент №36
«Выдача разрешений на ввод линейных объектов, расположенных на территории двух и более поселений Добрянского муниципального района,...

Составление линейных программ на С++ 10 iconУльяновский институт повышения квалификации и переподготовки работников...
Портфолио учащегося: составление и использование: методические рекомендации./ Автор-составитель: Т. Б. Табарданова – Ульяновск: уипк...

Составление линейных программ на С++ 10 iconАннотация к рабочей программе профессионального модуля «Составление...
Рабочая программа профессионального модуля «Составление и использование бухгалтерской отчётности» является частью основной профессиональной...

Составление линейных программ на С++ 10 iconРабочая программа производственной практики пп. 03 Пм. 04 «Составление...
Программа практики является составной частью профессионального модуля 04 Составление и использование бухгалтерской отчетности основной...

Составление линейных программ на С++ 10 iconИ составление «рабочего» плана курсовой работы 7
Предварительная проработка литературы по теме и составление «рабочего» плана курсовой работы 7

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск