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

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

C++

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


22.11.2014

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

Класс должен иметь метод 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];