C++ Практические задания Группа №1 — различия между версиями
(→#10 Arithmetic Operations) |
(→#10 Arithmetic Operations) |
||
Строка 65: | Строка 65: | ||
Каждый из узлов должен наследовать базовый класс (интерфейс `i_expr`): | Каждый из узлов должен наследовать базовый класс (интерфейс `i_expr`): | ||
− | + | struct i_expr | |
− | struct i_expr | + | { |
− | { | + | virtual void print(std::stringstream& s) = 0; |
− | + | virtual int eval() = 0; | |
− | + | }; | |
− | }; | + | |
− | + | ||
NB: Реализация, должна подразумевать возможность создания дерева динамически (с использованием оператора new). Hint: проверьте корректно ли освобождается память в вашей реализации. | NB: Реализация, должна подразумевать возможность создания дерева динамически (с использованием оператора new). Hint: проверьте корректно ли освобождается память в вашей реализации. | ||
== #11 auto_ptr == | == #11 auto_ptr == |
Версия 06:35, 15 ноября 2014
Кудинкин Алексей
+7-911-748-38-35
Содержание
#1: Find all the problems
https://www.dropbox.com/s/26j3j6kata8jiqu/challenge.cc?dl=0
#2: Get it compiled!
https://www.dropbox.com/sh/izpca2efj2htdy2/AAB4Uj-vj7oBknJo9QOLF3UJa?dl=0
#3 Pointers
https://www.dropbox.com/sh/k3glgu3wyut3otq/AAAO1MejOgQFuvsVSQ5r0Ktda?dl=0
#4 Vector
https://www.dropbox.com/sh/plc204mdal7jb7z/AABlZIUsO1_3_wyH0TX0UdfNa?dl=0
#5 Intrusive Lists
#6 C IO
Задание предполагает, что файлы на вход программы будут поступать только файлы правильного формата.
Формат текстового файла: Каждый элемент списка на новой строке: числа x и y разделены пробелом
Формат бинарного файла: Каждое число занимает не больше 3 байт (hint: |, &, >>, <<)
Вспомогательные материалы: https://www.dropbox.com/sh/kp0jdgy97p3sjg9/AAAr5g7a8Ufg7zikE2spCmBJa?dl=0
Параметры
./p {loadtxt | loadbin} infile {savetxt | savebin} outfile ./p {loadtxt | loadbin} infile print “fmt” ./p {loadtxt | loadbin} infile count
- loadtxt загружает из текстового файл
- loadbin загружает из бинарного файла
- savetxt записывает в текстовый файл
- savebin записывает в бинарный файл
- print “fmt” выводит в stdout ранее прочитанное отформатированные согласно "fmt" (пример fmt: “(%d %d)”, “[%#x %#x]\n”)
- count выводит размер прочитанного корпуса
https://www.dropbox.com/sh/u5feahsavqykw02/AACW7NafrtgZOvOEGFEuS3Qsa?dl=0
#7 Pseudo XML
#8 Hash table
#9 Output streams
https://www.dropbox.com/s/klw6db7f18m1tgl/output_stream.h?dl=0
#10 Arithmetic Operations
Необходимо реализовать следующие узлы дерева арифметических операций:
Сложение, Вычитание, Умножение, Деление, Деление по модулю, Литерал (константа).
Каждый из узлов должен наследовать базовый класс (интерфейс `i_expr`):
struct i_expr { virtual void print(std::stringstream& s) = 0; virtual int eval() = 0; };
NB: Реализация, должна подразумевать возможность создания дерева динамически (с использованием оператора new). Hint: проверьте корректно ли освобождается память в вашей реализации.