C++ Практические задания Группа №1

Материал из SEWiki
Версия от 06:35, 15 ноября 2014; Alexey.kudinkin (обсуждение | вклад) (#10 Arithmetic Operations)

Перейти к: навигация, поиск

Кудинкин Алексей

alexey.kudinkin@gmail.com

+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
  1. loadtxt загружает из текстового файл
  2. loadbin загружает из бинарного файла
  3. savetxt записывает в текстовый файл
  4. savebin записывает в бинарный файл
  5. print “fmt” выводит в stdout ранее прочитанное отформатированные согласно "fmt" (пример fmt: “(%d %d)”, “[%#x %#x]\n”)
  6. 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: проверьте корректно ли освобождается память в вашей реализации.

#11 auto_ptr