Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Матрицы. Бесконечный цикл. Проверка ввода https://www.cyberforum.ru/ cpp-beginners/ thread631324.html
В конструкторе класса матриц пользователю предлагается выбрать ввода с клавиатуры или автоматически. При выборе ручного ввода возникает цикл непонятного характера. Вот фото консоли во вложении. ...
C++ Ссылка на ссылку
Можно ли говорить, что t это ссылка на ссылку? int y=2; int &q=y; int& t = q;
Программы pascal переписать под c++ C++
Всем доброго времени суток помогите переписать программы под c++ Условие Дано натуральное число n, и действительное число x. Вычислить. program laba3_2; uses crt; var x,s:real;...
C++ Строки, в чём ошибка? так не работает int main(){ char *str = "ASDc"; str = tolower(str); cout << str; return 0; } https://www.cyberforum.ru/ cpp-beginners/ thread631294.html
C++ Как свиртуализировать исключения? https://www.cyberforum.ru/ cpp-beginners/ thread631292.html
Мне очень нравится как реализован перехват исключений в Python и Java: там в блоке catch не надо перечислять все виды исключений, а достаточно типы exception предков. Можно ли так же делать в C++?...
C++ Понижение регистра в строке
Всем привет! Не могу понизить регистр в строке. Использовал функции towupper, towlower, не помогло. Мне это нужно для сравнения строк. Пошел другим путем использовал _tcsicmp, _wcsicmp, чтобы...
C++ Программы pascal переписать под c++
Всем доброго времени суток помогите переписать программы под c++ Условие Дано натуральное число n, и действительное число x. Вычислить. program laba3_1; uses crt; var x,s:real;...
C++ Передача по ссылке В учебнике написано, что можно использовать функцию с левой стороны операции присваивания, если она возвращает ссылку. Например, так: #include <iostream> using namespace std; int &swap(int... https://www.cyberforum.ru/ cpp-beginners/ thread631276.html
C++ Перегрузка операторов ввода вывода https://www.cyberforum.ru/ cpp-beginners/ thread631269.html
ребята болит уже голова)) main.cpp #include "myStr.h" int main() { myStr myS("ok"); cout<<myS<<endl;//надо чтоб заработало char x; cin>>x; return 0;
C++ std::map нефикс. размер? Нубо-вопрос, std::map и std::array имеют фиксированный размер, как и обычные массивы? https://www.cyberforum.ru/ cpp-beginners/ thread631265.html
0 / 0 / 0
Регистрация: 31.07.2012
Сообщений: 6
0

Проверка на корректность операции

31.07.2012, 20:50. Просмотров 707. Ответов 7
Метки (Все метки)

Добрый день.

Не знаю как лучше задать вопрос.
Смысл идеи таков:
Есть интерфейс типа данных (IVariable) и наследники от него, например: Number, Complex, Matrix.
Необходимо реализовать функцию сложения Sum(IVariable a, IVariable b), так чтобы можно было определить возможность сложения и вернуть значение IVariable суммы чисел.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include "Math"
 
using namespace std;
 
int main (int argc, char ** args)
{
   Number a (5);
   Complex b (4,2);
   Matrix c (2,2);
   
   cout << a<<"+"<<b<<"="<<sum(a,b)<<endl;
   cout <<b<<"+"<<c<<"="<<sum(b,c)<<endl;
   return 1;
}
Результат:
Bash
1
2
5+4+2i=9+2i
4+2i+{2,2}=нельзя складывать эти типы.
На ум приходит только метод у интерфейса OperationCorrect(int /*Тип операции */, int /* Тип переменной */)
Тогда операцию сложения можно написать так:
C++
1
2
3
4
5
6
7
8
9
const int SUM=1;
IVariable sum(IVariable a, IVariable b)
{
 if(a.OperationCorrect(SUM,b.type)
     return a+b;
 if(b.OperationCorrect(SUM,a.type)
     return b+a;
 return new IErrorSum();
}
Может кто знает более интересней вариант.

P.S. Тип Number ничего не знает про тип Complex и Matrix,
тип Complex и Matrix знают про тип Number.

Вернуться к обсуждению:
Проверка на корректность операции
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.07.2012, 20:50
Готовые ответы и решения:

Проверка на корректность
Программа на консоли, для высчитывания логического выражения, подскажите, пожалуйста, как сделать...

Считывание, проверка на корректность
Как считать uint64_t с клавиатуры, вывести на экран и проверить, что это именно неотрицательное...

Проверка указателя на корректность
Есть у меня указатель class* test = new class(); И он в цикле вечно используется. Так вот как...

Проверка строки на корректность
#include&lt;iostream&gt; #include&lt;cstring&gt; #include &lt;conio.h&gt; using namespace std; int main(){...

7
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.