C++ Практические задания Группа №1 — различия между версиями
(→#9 Output streams) |
|||
(не показано 20 промежуточных версий 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 == | ||
Строка 10: | Строка 16: | ||
https://www.dropbox.com/sh/k3glgu3wyut3otq/AAAO1MejOgQFuvsVSQ5r0Ktda?dl=0 | 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 | ||
+ | |||
+ | #'''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
Кудинкин Алексей
+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
- 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); };