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

Материал из SEWiki
Перейти к: навигация, поиск
(#10 Arithmetic Operations)
(#9 Output streams)
 
(не показано 5 промежуточных версий этого же участника)
Строка 22: Строка 22:
  
 
== #5 Intrusive Lists ==
 
== #5 Intrusive Lists ==
 +
https://www.dropbox.com/sh/kp0jdgy97p3sjg9/AAAr5g7a8Ufg7zikE2spCmBJa?dl=0
  
 
== #6 C IO ==
 
== #6 C IO ==
Строка 55: Строка 56:
  
 
== #9 Output streams ==
 
== #9 Output streams ==
 +
 +
Using an interface provided you need to implement `StandardConsoleOutputStream`, `ErrorConsoleOutputStream`, `FileOutputStream`.
 +
 
https://www.dropbox.com/s/klw6db7f18m1tgl/output_stream.h?dl=0
 
https://www.dropbox.com/s/klw6db7f18m1tgl/output_stream.h?dl=0
  
Строка 65: Строка 69:
 
Каждый из узлов должен наследовать базовый класс (интерфейс `i_expr`):
 
Каждый из узлов должен наследовать базовый класс (интерфейс `i_expr`):
  
{
+
struct i_expr  
struct i_expr  
+
{
{
+
  virtual void print(std::stringstream& s) = 0;
  virtual void print(std::stringstream& s) = 0;
+
  virtual int eval() = 0;
  virtual int eval() = 0;
+
};
};
+
}
+
  
 
NB: Реализация, должна подразумевать возможность создания дерева динамически (с использованием оператора new). Hint: проверьте корректно ли освобождается память в вашей реализации.
 
NB: Реализация, должна подразумевать возможность создания дерева динамически (с использованием оператора new). Hint: проверьте корректно ли освобождается память в вашей реализации.
  
 
== #11 auto_ptr ==
 
== #11 auto_ptr ==
 +
 +
== #12 big_int ==
 +
 +
Реализовать класс для работы с длинной арифметикой. Задание делится на две части:
 +
 +
'#1
 +
 +
struct big_int
 +
{
 +
  _?_ operator+(_?_ other);
 +
  _?_ operator-(_?_ other);
 +
  _?_ operator<(_?_ other);
 +
};
 +
 +
'#2
 +
 +
struct big_int
 +
{
 +
  _?_ operator+(_?_ other);
 +
  _?_ operator-(_?_ other);
 +
  _?_ operator*(_?_ other);
 +
  _?_ operator/(_?_ other);
 +
  _?_ operator<(_?_ other);
 +
};

Текущая версия на 11:25, 30 октября 2015

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

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

https://www.dropbox.com/sh/kp0jdgy97p3sjg9/AAAr5g7a8Ufg7zikE2spCmBJa?dl=0

#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

Using an interface provided you need to implement `StandardConsoleOutputStream`, `ErrorConsoleOutputStream`, `FileOutputStream`.

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

#12 big_int

Реализовать класс для работы с длинной арифметикой. Задание делится на две части:

'#1

struct big_int
{
  _?_ operator+(_?_ other);
  _?_ operator-(_?_ other);
  _?_ operator<(_?_ other);
};

'#2

struct big_int
{
  _?_ operator+(_?_ other);
  _?_ operator-(_?_ other);
  _?_ operator*(_?_ other);
  _?_ operator/(_?_ other);
  _?_ operator<(_?_ other);
};