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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Калькулятор Комплексных Чисел, Помогите решить простенькую задачу для н 
:(
    Опции темы
sergejzr
Дата 13.12.2005, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



cardinal complex.h ?
Добавлено @ 01:25
запусти у себя man double_complex


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sasha1
Дата 13.12.2005, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



)) smile проблема в том что у меня нету класса

. просто его создать типа

Код

class Double_complex

{
public:

    resultat(operand_1,operand_2););
    




Добавлено @ 01:31
а как это сделать? я ещё с этим не сталкивался.
PM MAIL   Вверх
Sasha1
Дата 13.12.2005, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как его запустить?
Добавлено @ 01:46
как его запустить?
Добавлено @ 01:54
ага Пасибо большое

PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Вот, "перевёл" класс smile

Код

#include "math.h"
#include "iostream.h"
class Double_Complex
{
private: 
      double Winkel;
      double Betrag;
      double Im;
      double Re;
public:
        /**Liefert das imaginere Teil der komplexe Zahl*/
      double sagIm()
    {
        return Im;
    }
        /**Liefert das reele Teil der komplexe Zahl*/
      double sagRe()
    {
        return Re;
    }
        /**Liefert das Betrag der komplexe Zahl*/
      double sagBetrag()
    {
        return Betrag;
    }
        /**Liefert der Winkel der komplexe Zahl in Radian*/
      double sagRadWinkel()
    {
        return Winkel;
    }

        /**Liefert der Winkel der komplexe Zahl in Grad*/
          double sagGrad()
        {
            return toGrad(Winkel);
        }

        /**Konstruktor Arithmetische Form*/
       Double_Complex(double re, double im)
    {
        Re=re;
        Im=im;

        Betrag=berechneBetrag();
                Winkel=atan2(Im,Re);

    }

        /**Konstruktor Exponentialform*/
       Double_Complex(double betrag, double winkel, bool Radian)
    {
            Betrag=betrag;

            if(Radian==true)
            {
                Winkel=winkel;
            }
            else
            {

                Winkel=toRadians(winkel);

            }       //Re und Im muessen berechnet werden fuer Addition

            Re=Betrag*cos(Winkel);
     Im=Betrag*sin(Winkel);

    }


    /**Multiplikation zweier komplexe Zahlen*/
      Double_Complex mal(Double_Complex &Zahl2)
    {

                double Real=Re*Zahl2.Re-Im*Zahl2.Im;
        double Imaginer=Re*Zahl2.Im+Zahl2.Re*Im;
        return  Double_Complex(Real,Imaginer);
        }

    /**Subtraktion zweier komplexe Zahlen*/
      Double_Complex minus(Double_Complex &Zahl2)
    {

                double Real=Re-Zahl2.Re;
        double Imaginer=Im-Zahl2.Im;
        return  Double_Complex(Real,Imaginer);
    }

    /**Addition zweier komplexe Zahlen*/
      Double_Complex plus( Double_Complex &Zahl2)
    {
    //Nur in arithmetischer Form moeglich
        double Real=Re+Zahl2.Re;
        double Imaginer=Im+Zahl2.Im;

        return  Double_Complex(Real,Imaginer);

    }

        /**Division zweier komplexe Zahlen*/
      Double_Complex durch( Double_Complex &Zahl2)
    {


            if (Zahl2.Betrag!=0)
            {

        double NeuesBetrag=Betrag/Zahl2.Betrag;
        double NeuesWinkel=sagGrad()-Zahl2.sagGrad();
        return  Double_Complex(NeuesBetrag, NeuesWinkel,false);
            }
            else
            { 
                macheFehler("Division durch null!");
                throw -1;
            }

    }

        /**Konjugiert komplexe Zahl*/
      Double_Complex konjugiere()
    {
        return  Double_Complex(Re, Im*(-1.));
    }
        /**Berechnet Betrag der komplexe Zahl*/
      double berechneBetrag()
    {
        return sqrt(pow(Re,2)+pow(Im,2));
    }
        /**Ermöglicht ausgabe in String-Form*/
      char* toString()
    {
            char * s;//="Re="+Re+" Im="+Im+" Betrag="+Betrag+" Winkel="+toGrad(Winkel);
            return s;
    }
        /**Berechnet Winkel in Radians zum angegebenen Winkel in Grad*/
      double toRadians(int grad)
    {
     return toRadians((double) grad);
    }
        /**Berechnet Winkel in Radians zum angegebenen Winkel in Grad*/
          double toRadians(double grad)
    {

     double winkel=(3.14/180.)*(grad);
            return winkel; 
            //return toRadians(grad) ;

     }
        /**Berechnet Winkel in Grad zum angegebenen Winkel in Radians*/
       double toGrad(double radian)
     {

        return (radian*180)/(3.14);
        //return Math.toDegrees(radian) ;
     }

    /**Gibt ein Fehlermeldung aus*/
      void macheFehler(char* message)
{
    cout<<message;
}

};



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
sergejzr
Дата 13.12.2005, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



toString сам напиши.
Добавлено @ 02:07
Да и имена функций и переменных по русее сделай.
durch - деление
mal - умножение
Winkel - угол
Betrag - ХЗ.. длинна ветора короче. Определения по -русски не знаю
macheFehler - сообщи ошибку
Berechne - вырешай


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sasha1
Дата 13.12.2005, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Велике Дякую smile
Добавлено @ 02:09
сорри за туппость .. но как toString написать не очень рублю... ))для меня одна из основных загвоздок smile
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Например так:
Код

#include "string.h"
#include "stdio.h"
char * newstr=new char[256];
char znak=Im>0?'+':'-';
if(Im<0) Im*=-1; //убираем минус перед имагинарной частью
sprintf(newstr,"(%d%ci*%d)",Re, znak, Im );
return newstr;




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sasha1
Дата 13.12.2005, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Thenks
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Только как поползуешься, надо память освобождать с delete [] newstr;
Добавлено @ 02:31
Перечитал ещё раз ТЗ...
В конце
Цитата(Sasha1 @ 12.12.2005, 23:13)
Завтра сдавать

Ну ты даёшь! Там работы на пару дней....



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sasha1
Дата 13.12.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Эх...знаю... ну что делать .. буду сидеть до победного
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 02:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Эээх, блин! smile Лана, вот тебе в подспорье

• Инициализация комплексного числа значением плавающего типа;

Код

Double_Complex(double num):Double_Complex(num,0)
{

}


• Перегруженные арифметические операции для выполнения основных арифметических действий;
Код

Double_Complex operator+(Double_Complex& d)
{
return this.plus(d);
}
//итд.  для всех операций



• Перегруженные операции >> и << для ввода и вывода комплексных данных (см. приложение II учебного пособия);
В классе:
Код

friend class istream;

Вне класса:
Код

ostream& operator<<(Double_Complex& d, ostream &os)
{
 char str* = d.toString();
 os<<str;
 delete str;
 return os;
}


istream& operator>>(Double_Complex& d, istream &is)
{

 double operand_1,operand_2;
char znak,operator,i,mul;

is>>operand_1>>znak>>i>>mul>>operand_2;
d.Re=operand_1;
if(znak=='-')operand_2*=-1;
d.Im=operand_2;
d.Betrag=berechneBetrag();
d.Winkel=atan2(Im,Re);
 return is;
}



• Преобразование из типа Complex к типу double (когда возможно).

Код

bool isDoublePossible()
{
return Im==0;
}
double make_double(Double_Complex d)
{
 if(d.isDoublePossible()) return this.Re;
throw -1; // нельзя double сделать 

}

здесь ещё можно оператор преобразования написать, только я С++ давно не прогил, точно не знаю, как.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Sasha1
Дата 13.12.2005, 04:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пасибки Всем кто помогал...особенно тебе!
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Давай, удачи завтра smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
cardinal
Дата 13.12.2005, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Цитата(sergej @ 12.12.2005, 23:24)
cardinal complex.h ?

Сейчас пойду изучу... Спасибо!

Цитата(sergej @ 12.12.2005, 23:57)
вырешай

Реши или вычисляй, но не вырешай же... smile
Цитата(Sasha1 @ 13.12.2005, 00:26)
Thenks

Thanks smile



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
sergejzr
Дата 13.12.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(cardinal @ 13.12.2005, 17:05)
Реши или вычисляй, но не вырешай же...

Вычисли

Кстати слова "вырешай" вообще в природе по гуглю нет. хороший ник был бы smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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