Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 090
от 01.10.2002, 21:30

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 262
Отправлено ответов: 595
Активность: 227.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Dron
Статус: Профессиональный
Общий рейтинг: 118.7
URL: Операционная система с нуля!
[Подробней >>]
Biv
Статус: Доверительный
Общий рейтинг: 122.64
[Подробней >>]
Pablo
Статус: Профессиональный
Общий рейтинг: 132.13
URL: Моя страничка
[Подробней >>]
 
Jadd
Статус: Опытный
Общий рейтинг: 154.41
[Подробней >>]
Илья
Статус: Начальный
Общий рейтинг: 107.14
[Подробней >>]
Kiss
Статус: Опытный
Общий рейтинг: 134.37
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 259. Hello, experts! Сейчас участвую в одном проекте, целью которого является решение задач физики (в час... (ответов: 6)

Вопросов: 1, ответов: 6


 Вопрос № 259

Hello, experts!
Сейчас участвую в одном проекте, целью которого является решение задач физики (в частности по электродинамике). Посему, возникает у меня такой вопрос: как можно реализовать в VC контроль и анализ размерности физ. величин. Например, если int x – это редиски, а int у – это морковки, то выражение x+y не проходило, а 2*x – проходило? А может кто делал что-то подобное?



Вопрос отправлен: 28.09.2002, 15:39
Отправитель: matrixman

[Следующий вопрос >>] [Список вопросов]

Отвечает Dron

Здравствуйте, matrixman!
Ну какие проблемы? реализуй два класса.
class carrot {};
class ... как там редиски то по английски? :))
и все. не создавай для них операцию сложения и их нельзя будет сложить.


Приложение:

Ответ отправлен: 30.09.2002, 10:50
Отправитель: Dron


Отвечает Biv

Приветствую Вас, matrixman!
На первом курсе, я делал нечто подобное (даже очень подобное) и решал сию проблему так. Каждая величина есть класс, что-то типа:
class rediska {
int kolichestvo;
int svoistvo; // Свойство - идентификатор продукта
operator+(...); // Перегружаем операторы, проверяя
operator-(...); // совместимость продуктов
...
};
Что касается умножения и деления, то тут ужу несколько иное и необходимо смотреть непосредственно на проблему, хотя в физике, умножение и деление не очень критично к размерености.
С уважением Biv.

Ответ отправлен: 28.09.2002, 18:55
Отправитель: Biv


Отвечает Pablo

Доброе время суток, matrixman!
Ну попробуй определить для каждой переменной класс, который будет ее определять и для компилятора и для программы, а в каждом из классов определи операторы, которые можно использовать для каждой из величин. И так как тебе не нужно определять операторы сложения двух несовместимых величин, то компилятор и будет ругаться на то, что такое действие неопределено или невозможно, это то как раз тебе и нужно.
class morkovka{
int value;
public:
friend morkovka __fastcall operator +(const int val, const morkovka& rhs)
{
morkovka cls;
cls.value = val + rhs.value;
return cls;
};
morkovka __fastcall operator +(const morkovka& rhs) const
{
morkovka cls;
cls.value = value + rhs.value;
return cls;
};
};
class rediska {
int value;
public:
friend rediska __fastcall operator +(const int val, const rediska& rhs);
rediska __fastcall operator +(const rediska& rhs) const;
}
Ну так вот при суммировании показанном ниже будет вылетать ошибка:
movkovka k;
rediska l,l1;
l1 = l + k;


Ответ отправлен: 30.09.2002, 15:40
Отправитель: Pablo


Отвечает Jadd

Здравствуйте, matrixman!
бррр...ты сформулируй конкретнее задачу. Ты, вроде как, физикой занимаешься, а не плодова-овощной программой.

Ответ отправлен: 29.09.2002, 02:15
Отправитель: Jadd


Отвечает Илья

Здравствуйте, matrixman!
А нельзя создать классы "морковка" , "редиска"... И перегрузить для них операторы + - = .... ???

Ответ отправлен: 29.09.2002, 21:20
Отправитель: Илья


Отвечает Kiss

Добрый день, matrixman!
В смысле ты имееш в виду что бы нельзя было скрестить морковку с редиской? То это очень просто зделать условиями если я правильно понял.


Ответ отправлен: 01.10.2002, 11:06
Отправитель: Kiss



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (30)
Perl (7)
Delphi (17)
Pascal (22)
Basic / VBA (12)
Java / JavaScript (11)
PHP (8)
MySQL / MSSQL (11)
Пользователю
Windows 95/98/Me (38)
Windows NT/2000/XP (30)
"Железо" (35)
Поиск информации (15)
Администратору
Windows NT/2000/XP (15)
Linux / Unix (18)
Юристу
Гражданское право (8)
Семейное право (4)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное