Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс комплексное число, Помогите PLZ 
:(
    Опции темы
Любаша
Дата 9.12.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Определить класс  “комплексное число”,  предусмотрев в нем функции “получения мнимой части”,  “получение действительной   части”,  “вывод всего комплексного числа”. Определить дружественную операцию-функцию,  перегружающую операцию “-” (вычитание) для объектов класса “комплекс-ное      число”.  Предусмотреть возможность вычитания действительное и комплексное,  комплексное и комплексное, комплексное и действительное числа.


PM MAIL   Вверх
bilbobagginz
Дата 9.12.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 3
Всего: 317



а вопрос собственно в чём?  в изучении C++ ?  
да, для решения задачи C++ изучать надо.
совсем немного, но надо.


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Любаша
Дата 9.12.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
Любаша
Дата 9.12.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Помогите пожалуйста описать опирации вычитания действительное и комплексное,   комплексное и действительное числа
PM MAIL   Вверх
SaDFromSpb
Дата 9.12.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Держи, Любаша:
Код

complex operator-(const double& rational, const complex& comp) {
   complex result(comp);
   result.real = rational-comp.real;
   return complex;
};

complex operator-(const complex& comp, const double& rational) {
   complex result(comp);
   result.real = comp.real-rational;
   return complex;
};

Если хочешь, чтобы к твоему коду полностью подходило, то выкладывай его. Я ж не вижу, как у тебя класс complex определен.


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
Любаша
Дата 9.12.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Вот код программы:

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <stdio.h>
class komplex
{
public:
float komp[4];
komplex operator-(komplex);
komplex operator=(komplex);
void otvet(int);
int menu(void);
void vvod(void);
void isx(int);
};
void komplex::vvod()
{
clrscr();
cout <<"Vvedite A i B dly vyrageniy A+Bi\n";
cin >> komp[1]>>komp[2];
}

komplex komplex::operator=(komplex t)
{
komp[1]=t.komp[1];
komp[2]=t.komp[2];
return *this;
}
void komplex::otvet(int i)
{
char *str;
switch(i)
{
case 1: str="Resultat vychitaniy"; break;
case 2: str="Resultat vychitaniy"; break;
case 3: str="Resultat vychitaniy"; break;

Default: break;
}
if (komp[2]>=0)
printf("%s: (%3.2f+%3.2fi)\n",str,komp[1],komp[2]);
else printf("%s: (%3.2f%3.2fi)\n",str,komp[1],komp[2]);
cout<<"\n\n\nPress any key...";
getch();
clrscr();
}
komplex komplex::operator-(komplex t)
{
komplex temp;
temp.komp[1]=komp[1]-t.komp[1];
temp.komp[2]=komp[2]-t.komp[2];
return temp;
}
int komplex::menu(void)
{
int vy;
clrscr();
cout<<"Glavnoe menu\n";
cout<<"=====================\n";
cout<<"1 - Ra3noct dectvit-compl\n";
cout<<"2 - Vychitanie cobpl 4icel\n";
cout<<"3 - Ra3noct compl-dectvit\n";

cout<<"4 - Vvod dannyx\n";
cout<<"0 - Exit\n";
cout<<"\nVash vybor: ";cin>>vy;
return vy;
}
void komplex::isx(int i)
{
if (i==1) clrscr();
if (komp[2]>=0)
printf("%d chislo: (%3.2f+%3.2fi)\n",i,komp[1],komp[2]);
else printf("%d chislo: (%3.2f%3.2fi)\n",i,komp[1],komp[2]);
}
main()
{
komplex a,b,c;
int vyb;
clrscr();
a.vvod();
b.vvod();
do
{
vyb=a.menu();
switch(vyb)
{

case 2: c=a-b;a.isx(1);b.isx(2);c.otvet(2);break;
case 4: a.vvod();b.vvod();break;
Default: break;
}
}
while (vyb!=0);
}

PM MAIL   Вверх
Любаша
Дата 10.12.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 2.12.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста как теперь в мой код добавить две операции.
PM MAIL   Вверх
SaDFromSpb
Дата 10.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Любаша, 
Очень уж у тебя код неправильный. Каждый класс должен отражать одно конкретное понятие и решать одну конкретную задачу. Ничего лишнего в нем быть не должно. Если описываешь класс комплексного числа, то в нем должны быть: конструкторы, два внутренних поля для действительной и мнимой части, описания операций с комплексными числами. И все. Обработка ввода пользователя явно не относится к комплексному числу. Она относится к конкретной программе.
Вот как примерно должен выглядеть класс для комплексного числа:
Код

class complex {
public:
   complex() : real(0), imag(0) {};
   complex(float _real) : real(_real), imag(0) {};
   complex(float _real, float _imag) : real(real_), imag(_imag) {};   
   // конструктор копирования и оператор присваивания
   // описывать необязательно, так как они и так сгенерируются адекватными
   const float& get_real() { return real; };
   const float& get_imag() { return imag; };

   complex operator+(complex) { /* реализация */ };
   complex operator-(complex) { /* реализация */ };
   complex operator*(complex) { /* реализация */ };
   // остальные операции с complex'ом.

   // Дальше дружественные методы:
   friend complex operator-(const float&, const complex&);
   friend complex operator-(const complex&, const float&);
   // и аналогичные
private:
   float real;    // действительная часть
   float imag;  // мнимая часть.
};

// Ниже реализация моих дружественных методов:
complex operator-(const float& rational, const complex& comp) {
   complex result(comp);
   result.real = rational-comp.real;
   return complex;
};
complex operator-(const complex& comp, const float& rational) {
   complex result(comp);
   result.real = comp.real-rational;
   return complex;
};
// ... реализация остальных дружественных методов

int main {
   // Использование:
   complex c1(3.0, 4.5);
   complex c2(1, 5.6);
   complex c3 = c1;
   // массив:
   complex arrc[6];

   return 0;
}


Делай так. Твой вариант преподу вряд ли понравится. Найди книжку какую-нибудь. Во многих из них как раз с комплексного числа начинают.

Это сообщение отредактировал(а) SaDFromSpb - 10.12.2006, 11:54


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
zabivator
Дата 10.12.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 7.6.2006
Где: нск

Репутация: 1
Всего: 2



Любаша, ты извини, но меня чуть кондрашка не хватила, когда я твой код увидел. Не вздумай такое преподу показывать - прибьет на месте. 
SaDFromSpb, правильно написал, ога. Чуть-чуть поправлю:
Код

   complex operator+(complex) { /* реализация */ };
   complex operator-(complex) { /* реализация */ };
   complex operator*(complex) { /* реализация */ };

лучше так:
Код

   complex operator+(const complex&) { /* реализация */ };
   complex operator-(const complex&) { /* реализация */ };
   complex operator*(const complex&) { /* реализация */ };

--------------------
#include <zabivator>int main( int, char * [] ){   while( Zabivator::жив() ) Zabivator::моск()++;   return 0;}
PM MAIL WWW ICQ   Вверх
SaDFromSpb
Дата 10.12.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 5.4.2006
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Цитата(zabivator @  10.12.2006,  21:23 Найти цитируемый пост)
лучше так

Точняк, подтверждаю.


--------------------
"За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001)
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0648 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.