Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 34.docx
Скачиваний:
25
Добавлен:
30.04.2022
Размер:
74.1 Кб
Скачать

Теоретическая справка

В привычной записи знак операции записывается между аргументами, например, сумма чисел 2 и 3 записывается как 2 + 3. Польский математик Ян Лукашевич предложил две другие формы записи: префиксная форма, в которой знак операции записывается перед аргументами, и постфиксная форма, в которой знак операции записывается после аргументов. В префиксной форме сумма чисел 2 и 3 записывается как + 2 3, в постфиксной — как 2 3 +. В честь Яна Лукашевича эти формы записи называют прямой и обратной польской записью.  В польской записи скобки не нужны. Например, выражение

(2+3)*(15-7)

записывается в прямой польской записи как

* + 2 3 - 15 7,

в обратной польской записи — как

2 3 + 15 7 - *.

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

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

Лабораторная работа № 2

Изучение работы с файлами в С++

Цель работы: закрепить знания базовых конструкций языка C++, изучить принципы работы с файлами, используя стандартные средства языка C++.

Задание: написать программу, выполняющую операции с матрицами произвольного размера (сложение и умножение), загружаемыми из файлов. Результат выполнения операций необходимо выводить в отдельный файл.

Инструкции к выполнению:

  • Для осуществления работы с файлами использовать стандартный файловый ввод-вывод C++ (класс fstream).

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

Теоретическая справка

Для того, чтобы в C++ работать с файлами, необходимо подключить заголовочный файл fstream:

#include <fstream>

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

ifstream in; // Поток in будем использовать для чтения

ofstream out; // Поток out будем использовать для записи

Чтобы привязать тот или иной поток к файлу используется метод open, которому необходимо передать параметр – текстовую строку, содержащую имя открываемого файла.

in.open("input.txt");

out.open("output.txt");

После открытия файлов и привязки их к файловым потокам, работать с файлами можно так же, как со стандартными потоками ввода-вывода cin и cout. Например, чтобы вывести значение переменной x в поток out используются следующая операция

out<<x;

А чтобы считать значение переменной из потока in

in>>x;

Для закрытия ранее открытого файла используется метод close() без аргументов:

in.close();

out.close();

Для того, чтобы проверить состояние файла, необходимо вызвать метод eof(). Данный метод возвращает true, если достигнут конец файла или false, если не достигнут.

Организовать считывание файла построчно (считая, что строка заканчивается символом перехода на новую строку) так:

string S;

while ( getline(in,S))

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]