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

Материал из SEWiki
Перейти к: навигация, поиск
(#9 Output streams)
 
(не показано 16 промежуточных версий 2 участников)
Строка 1: Строка 1:
 +
Кудинкин Алексей
 +
 +
[mailto:alexey.kudinkin@gmail.com alexey.kudinkin@gmail.com]
 +
 +
+7-911-748-38-35
 +
 
== #1: Find all the problems ==  
 
== #1: Find all the problems ==  
  
Строка 15: Строка 21:
 
https://www.dropbox.com/sh/plc204mdal7jb7z/AABlZIUsO1_3_wyH0TX0UdfNa?dl=0
 
https://www.dropbox.com/sh/plc204mdal7jb7z/AABlZIUsO1_3_wyH0TX0UdfNa?dl=0
  
== #5 Intrusive Lists & Co. ==
+
== #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
 
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 ==
 +
 +
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);
 +
};

Текущая версия на 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);
};