Практические занятия по курсу ОиМП/Группа 106 1 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(C++)
Строка 3: Строка 3:
  
  
 +
=== 22.11.2014 ===
 +
 +
Класс инициализируется корректным арифметическим выражением, которое состоит из цифр и знаков сложения и вычитания (вычисление при инициализации проводиться не должно)
 +
 +
Класс должен иметь метод int calc(), который возвращает результат вычисления выражения. Результат метода должен кешироваться и при повторном вызове для того же выражения повторное вычисление не происходит
 +
 +
Должен корректно работать следующий фрагмент
 +
 +
    {
 +
    Exp e = "1+2+3";
 +
          cout << e.calc();
 +
    }
 +
 +
=== MyString ===
 +
 +
Реализовать класс строк, таким образом, чтобы поддерживались основные операции (сложение, доступ к символу, присваивание и т.д.) и в случае коротких строк, данные хранились в самом объекте.
 
=== 15.11.2014 ===
 
=== 15.11.2014 ===
  

Версия 12:13, 22 ноября 2014

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];