Практические занятия по курсу ОиМП/Группа 106 1

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

C++

Сдача домашнего задания №2 заканчивается в полночь с 7 на 8 ноября. При выставлении оценки за задание будет учитываться сдача задач в контестах 736(от 9 задач), 738 (от 7 задач), 765(от 16 задач), 798 (от 4 из первой половины + 4 из второй).

Сдача домашнего задания №3 заканчивается в полночь с на декабря. При выставлении оценки за задание будет учитываться сдача задач в контестах 948 (от 1 задачи), 947(от 5 задач), 952(от 3 задач)....

02.12.2014

Реализуйте интерактивную игру "Быки и коровы". [1] Исходная комбинация генерируется случайно, всего 4 позиции и 6 цветов (параметры могут потом меняться). Программа выводит приглашение для ввода, вводит строку и выводит два числа - "black hits" "white hits". В программе запрещается использовать циклы, рекомендуется пользоваться generate, accumulate, inner_product, copy, ...

22.11.2014

Класс mystring [2]

Класс инициализируется корректным арифметическим выражением, которое состоит из цифр и знаков сложения и вычитания (вычисление при инициализации проводиться не должно)

Класс должен иметь метод int calc(), который возвращает результат вычисления выражения. Результат метода должен кешироваться и при повторном вызове для того же выражения повторное вычисление не происходит

Должен корректно работать следующий фрагмент

   		{
   			Exp e = "1+2+3";
         		cout << e.calc();
   		}

MyString

Реализовать класс строк, таким образом, чтобы поддерживались основные операции (сложение, доступ к символу, присваивание и т.д.) и в случае коротких строк, данные хранились в самом объекте.

15.11.2014

Реализовать пользовательский тип «Рациональные числа» (Rational).

Внутреннее представление типа:

     int a, b;
     

должно отвечать следующим требованиям: Число a/b должно представлять собой несократимую дробь.

Данный тип должен быть описан таким образом, чтобы были корректны следующие инструкции:

// Создание объектов  
Rational q = Rational(1, 3), w(1, 3);  
Rational s = 4;  
Rational z = q;

// Арифметические операции  
s.Add(q);       // значение s увеличивается на значение q  
                // (значение s меняется)  
s.Substract(q); // значение s изменяется путем вычитания q  
s.Multiply(q);  // значение s изменяется путем домножения на q  
s.Divide(q);    // значение s изменяется путем деления на q  

s.Add(q).Multiply(w); // значение s меняется путем инкрементирования q  
                      // с последующим домножением на w  

// Логические операции  
s.EqualTo(w); // возращает булево значение, равно ли значение s значению w  
s.CompareTo(w); // возвращает целое > 0, если s > w,  
                // иначе возвращает целое < 0, если s < w,  
                // иначе возвращает 0  
s.IsInteger()   // возвращает булево значение, является ли s целым числом  

// Строковое представление в формате a:b 
string str = w.ToString();  // вернет 1:3

// Создание массивов  
Rational arr[10];