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

Поиск:

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


Новичок



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

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



Надо Создать класс Complex для представления комплексных данных и инкапсулируйте в нём основные операции с комплексными данными.
По крайней мере надо предусмотреть ,следующие методы:
• конструктор, с помощью которого можно инициализировать комплексное данное;
• метод, позволяющий задать произвольное значение комплексного данного;
• методы, обеспечивающие выполнение арифметических действий над комплексными данными (сложение, вычитание, умножение, деление, модуль);
• метод print, обеспечивающий печать комплексного данного на консоль или в любой файл;
• метод toString, обеспечивающий преобразование комплексного данного в строку символов.

//на закуску ))
Усовершенствуйте класс Complex, обеспечив реализацию следующей функциональности:
• Инициализация комплексного числа значением плавающего типа;
• Перегруженные арифметические операции для выполнения основных арифметических действий;
• Перегруженные операции >> и << для ввода и вывода комплексных данных (см. приложение II учебного пособия);
• Преобразование из типа Complex к типу double (когда возможно).
Продумайте как организовать обработку ошибок при выполнении некорректных операций с объектами класса Complex. Что это за некорректные операции?
Спроектируйте комплект тестирующих программ для проверки разработанного класса.
Используя и развивая определение класса Complex, спроектируйте набор классов для представления следующих абстракций:
• Список комплексных данных;
• Массив комплексных данных с контролем индексирования;
• Матрица комплексных данных . с контролем индексирования.
Напишите тестирующие программы, загружающие соответствующие контейнеры комплексных данных из файла, и обеспечивающие разнообразную обработку комплексных данных в рамках реализованной функциональности.






у меня Такая просьба , если можна написать пример работуйщей программы ., если это слишком "нагло", то можете пояснить как сделать подгрузку дааных из входно файла ." file.inp"
вида

2,34+i*0,42 + 2,54+i*0,32 * 2,34+i*6,42 / 2,34+i*0,22 - 7,34+i*2,42

что то вроде этого должно содержаться в входящем файле...

программа должна сощитать этот пример ....

я Так понял что для начало надо инициализировать строку , потом перевести ее в Double , ...ну и т.д..

но как это сделать ума не прилажу.. .


Извините за граммотность...Завтра сдавать (Нервы))

С уважением Александр.
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



вообще есть double_complex есть в Math.h;
http://www.mesoscale.anu.edu.au/facilities...N3/0131____.HTM
Там много чего уже предопределено, насчёт оператора >> не знаю...



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


Новичок



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

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



всё будет хорошо
PM MAIL   Вверх
Void
Дата 13.12.2005, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

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



sergej.z
В стандартной библиотеке (<complex>) есть тип std::complex<T>, в котором есть практически все, что требуется и еще чуть-чуть сверху. Но человеку-то нужно написать самому smile И до завтра вряд ли кто напишет, бо писать достаточно много и нудно.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Sasha1
Дата 13.12.2005, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подскажите как Прочитать данные из файла ,, есть вариант через Case(...), но это не оптимальное решение проблеммы. Надо что по оригинальней..





[/quote]

А завтра я врят ли сдав придётся оттянуть)))
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Максимум, что могу дать - это написанное на Java. Просьба указывать авторство моей подруги жизни при использовании:
Код

package micronet.Mathematik;

import java.awt.Container;

import javax.swing.JOptionPane;
/**@Author - Lenka*/

/**Eine Klasse, die Rechnung mit komplexe Zahlen erm&ouml;glicht*/
public class Double_Complex
{
    
    private double Winkel;
    private double Betrag;
    private double Im;
    private double Re;

        /**Liefert das imaginere Teil der komplexe Zahl*/
    public double sagIm()
    {
        return Im;
    }
        /**Liefert das reele Teil der komplexe Zahl*/
    public double sagRe()
    {
        return Re;
    }
        /**Liefert das Betrag der komplexe Zahl*/
    public double sagBetrag()
    {
        return Betrag;
    }
        /**Liefert der Winkel der komplexe Zahl in Radian*/
    public double sagRadWinkel()
    {
        return Winkel;
    }
    
        /**Liefert der Winkel der komplexe Zahl in Grad*/
        public double sagGrad()
        {
            return toGrad(Winkel);
        }
    
        /**Konstruktor Arithmetische Form*/
    public  Double_Complex(double re, double im)
    {
        Re=re;
        Im=im;
        
        Betrag=berechneBetrag();
                Winkel=Math.atan2(Im,Re);
    
    }
    
        /**Konstruktor Exponentialform*/
    public  Double_Complex(double betrag, double winkel, boolean Radian)
    {
            Betrag=betrag;
    
            if(Radian==true)
            {        
                Winkel=winkel;
            }    
            else
            {    
        
                Winkel=toRadians(winkel);    
    
            }       //Re und Im muessen berechnet werden fuer Addition
    
            Re=Betrag*Math.cos(Winkel);    
     Im=Betrag*Math.sin(Winkel);
    
    }
        /**Copy - Konstruktor Arithmetische Form*/
    public  Double_Complex(Double_Complex d)
    {
        Re=d.re;
        Im=d.im;
        
        Betrag=berechneBetrag();
                Winkel=Math.atan2(Im,Re);
    
    }
    
    /**Multiplikation zweier komplexe Zahlen*/
    public Double_Complex mal(Double_Complex Zahl2)
    {
    
                double Real=Re*Zahl2.Re-Im*Zahl2.Im;
        double Imaginer=Re*Zahl2.Im+Zahl2.Re*Im;
        return new Double_Complex(Real,Imaginer);
        }

    /**Subtraktion zweier komplexe Zahlen*/
    public Double_Complex minus(Double_Complex Zahl2)
    {
        
                double Real=Re-Zahl2.Re;
        double Imaginer=Im-Zahl2.Im;
        return new Double_Complex(Real,Imaginer);
    }

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

    }

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

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

    }
    
        /**Konjugiert komplexe Zahl*/
    public Double_Complex konjugiere()
    {
        return new Double_Complex(Re, Im*(-1.));
    }
        /**Berechnet Betrag der komplexe Zahl*/
    private double berechneBetrag()
    {
        return Math.sqrt(Math.pow(Re,2)+Math.pow(Im,2));
    }
        /**Erm&ouml;glicht ausgabe in String-Form*/
    public String toString()
    {
            String s="Re="+Re+" Im="+Im+" Betrag="+Betrag+" Winkel="+toGrad(Winkel);
            return s;
    }
        /**Berechnet Winkel in Radians zum angegebenen Winkel in Grad*/
    private double toRadians(int grad)
    {    
     return toRadians((double) grad);
    }
        /**Berechnet Winkel in Radians zum angegebenen Winkel in Grad*/
        private double toRadians(double grad)
    {    
    
    /*    double winkel=(Math.PI/180.)*(grad);    
            return winkel; */
            return Math.toRadians(grad) ;
        
     }
        /**Berechnet Winkel in Grad zum angegebenen Winkel in Radians*/
     public double toGrad(double radian)
     {
     
     //    return (radian*180)/(Math.PI);
        return Math.toDegrees(radian) ;
     }
    
    /**Gibt ein Fehlermeldung aus*/
    private void macheFehler(String message)
{
    JOptionPane.showMessageDialog(new Container(), message, "Fehler!", JOptionPane.ERROR_MESSAGE);
}

}

Произвольного задавания значения конечно же не предусмотрено (По правилам ООП) smile Там
Код

есть copy - конструктор. метод print типа: 
public void print ()
{
 System.println(this.toString());
}


Ну комменты на немецком smile
Добавлено @ 00:45
какой язык то у тебя вообще?


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


Новичок



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

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



пасибо.... хотелость бы что нибудь на C++))т.к Java это ещё впереди..
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(Sasha1 @ 12.12.2005, 23:34)
Подскажите как Прочитать данные из файла ,, есть вариант через Case(...), но это не оптимальное решение проблеммы. Надо что по оригинальней..

Ничего не понятно. Читать через Case ???????


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


Un salsero
Group Icon


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

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



Цитата(Sasha1 @ 12.12.2005, 23:47)
пасибо.... хотелость бы что нибудь на C++))т.к Java это ещё впереди..

Дык перепиши. Там практически одно и тоже.
на с++ есть ifstream для зачитывания файла и выглядеть это будет примерно так:

Код

#include  "fstream.h"
double operand_1,operand_2;
char znak,operator,i,mul;
ifstream f("file.inp");
f>>operand_1>>znak>>i>>mul>>operand_2;
Double_Complex resultat(operand_1,operand_2);

И до конца файла
while(!f.eof())
{
f>>operator;
f>>operand_1>>znak>>i>>mul>>operand_2;
if(znak=='-')operand_2*=-1;

Double_Complex number_1(operand_1,operand_2);

switch(operator)
{
 case'+': resultat=resultat.plus(number_1);
break;
//итд

}
resultat.print();
}

Код навскидку. Проверки на наличие файла, на его пустоту итд. за тобой.


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


Инженер
****


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

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



Цитата(sergej @ 12.12.2005, 22:24)
вообще есть double_complex есть в Math.h;

Блин... Что же я раньше этого поста не увидел? Сегодня сам все от руки писал.... smile


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

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


Новичок



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

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



Код

vector<int> Complex::strtoint(string str ){
    vector<int> num;

    for(int i=0; i<(str.length()); i++){
            switch(str[i]){
                case '0':
                    num.push_back(0);
                    break;
                case '1':
                    num.push_back(1);
                    break;
                case '2':
                    num.push_back(2);
                    break;
                case '3':
                    num.push_back(3);
                    break;
                case '4':
                    num.push_back(4);
                    break;
                case '5':
                    num.push_back(5);
                    break;
                case '6':
                    num.push_back(6);
                    break;
                case '7':
                    num.push_back(7);
                    break;
                case '8':
                    num.push_back(8);
                    break;
                case '9':
                    num.push_back(9);
                    break;
            }
    }
    return num;
    
    }


что то вроде етого

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


Un salsero
Group Icon


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

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



см. мой код выше с fstream и пользуйся пожалуйста тэгами "Код" в постах!
Добавлено @ 01:07
Цитата(cardinal @ 13.12.2005, 00:01)
Блин... Что же я раньше этого поста не увидел?

Я его только что написал smile


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


Новичок



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

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



а я сегодня токо тему выложил... Огромное ЧЕЛОВЕЧЕСКОЕ СПАСИБО... буду всё ночь работать пока не сделаю!




Вот читал текс .. и вопрос возник ..

Double_Complex resultat(operand_1,operand_2);


Double_comlex?-ето клаас., подгружаемый из complex.h?
PM MAIL   Вверх
sergejzr
Дата 13.12.2005, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Double_comlex - это твой класс замени на то, что у тебя есть.


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


Инженер
****


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

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



Хотя сейчас сунулся, а в моем math.h ничего такого и нет...

Может кто-нибудь этот math.h с cexp и т.д. тут приципить? А хотя если там классы, то не надо...

Кто-нибудь знает что-нибудь подобное на Си? smile


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

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
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&ouml;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   Вверх
Sasha1
Дата 13.12.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Народ, все прошло замечательно , заказчик не пришел (По семейным обстоятельствам, и дали ещё недельку,) Конечно в идеале ,если конечно можно,могли прикрепить ,файл с проектом , (формулировка которого на 1 странице).. но я понимаю что я слишком много хочу,
мне б хотя бы в упрощёенном варианте..чтоб компилировалась .. Заранее огромное спасибо . ..


cardinal , можешь послать то что получилось, всё таки интересноsmile))

Деньги закончились, сейчас отрубят .ааааааа . ..
PM MAIL   Вверх
cardinal
Дата 13.12.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Кажись complex.h есть только в C99
http://de.wikibooks.org/wiki/C-Programmier...eader#complex.h
Цитата(Sasha1 @ 13.12.2005, 16:56)
cardinal , можешь послать то что получилось, всё таки интересно

Пока не готово...


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

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


Un salsero
Group Icon


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

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



Цитата(Sasha1 @ 13.12.2005, 17:56)
Конечно в идеале ,если конечно можно,могли прикрепить ,файл с проектом , (формулировка которого на 1 странице).. но я понимаю что я слишком много хочу,
мне б хотя бы в упрощёенном варианте..чтоб компилировалась .. Заранее огромное спасибо . ..

Ну слушай! В этой теме уже 90% всего есть. Осталось скомпоновать. Компилится вроде и так.


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


Инженер
****


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

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



Вот в принципе тоже самое, что и я сделал, только в некоторых местах похитрее... smile
http://www.phanderson.com/complex/cplx_c.html


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

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


Инженер
****


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

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



Я правда совсем не въехал в эту фишку (в смысле, что сделано ИМХО не очень)…
Код

struct Complex C_inv (struct Complex a)
{
    struct Complex result, num;
    num.r = 1.0;
    num.i = 0.0;
    result = C_div (num, a);
    return(result);
}

я сделал это так
Код

CX inv(CX a)        
{
CX x;

    double i;
    i = a.r * a.r + a.i * a.i;

    x.r =   a.r/i;
    x.i = - a.i/i;

    return x;
}

Проблема с делением на ноль интересно решена… Что думаешь на эту тему sergej.z?




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

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


Новичок



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

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



Цитата
Ну слушай! В этой теме уже 90% всего есть. Осталось скомпоновать. Компилится вроде и так.
Я даже cпорить боюсь, просто я недавно работать начал в .Net/ раньше в (3 под дос ).. не лажу с компилятором , вроде все сделал подключил .h , Brakpoint вообще не машет , Мсн то же..вот и попросил ..
я вчера до 7 сидел . smile . не пашет .. потом на работу.
постараусь вскоре выложить прогу .,если не засну :-).. (правда она врят ли бужет компилироваться ) . Visual ошибки не объеснит..:-(

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


Новичок



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

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



сегодня ночью попробую выложить то что получилось...Ещё раз спасибо за помощь.
PM MAIL   Вверх
Vasapypkin
Дата 21.12.2005, 03:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

#include <fstream>
#include <conio.h>
//#include "com.h"
#include "math.h"
#include <iostream>
using namespace std;



void main ()
{
    int g=0;
double operand_1[2],operand_2[2];
char znak,i,mul;
 double otv1=0.0;
    double otv2=0.0;
    char *buffer = "Any character stream+";
int c;

ifstream f("file.txt");
//if(f==NULL){
        //printf("file File.txt not open");
        //fclose(f);
                //return;
        //}


 do{
f>>operand_1[g]>>znak>>i>>mul>>operand_2[g];
//Double_Complex resultat(operand_1,operand_2);
//f>>operator;
if(znak=='-')
znak='+';
cout<<operand_1[g]<<znak<<i<<mul<<operand_2[g]<<"\n"<<endl;
g++;



}
while(!f.eof());



//Double_Complex number_1(operand_1,operand_2);

//cout<<operand_1[g]<<znak<<i<<mul<<operand_2[g]<<endl;




 

//while(c = *buffer++){  /* Walks buffer until NULL */
  // {
    //  switch ( c)
      //{
        // case '+':
if (g>1)
{
    c=1; 
}

//for (c=0;c<3;c++)
//{
cout<<"ETO ONO---"<<operand_1[0]<<"  "<<operand_1[1]<<"    "<<operand_1[2]<<"    "<<operand_1[3]<<endl;
                 
cout<<"\n"<<endl;
cout<<"\n"<<endl;
//otv1=operand_1[c]+operand_1[c+1];
                //otv2=operand_2[c]+operand_2[c+1];
c=0;
         otv1=operand_1[c]+operand_1[c+1]+operand_1[c+2];
         otv2=operand_2[c]+operand_2[c+1]+operand_2[c+2];;
          //  break;
           //default:
               
        cout<<otv1<<znak<<i<<mul<<otv2<<endl;           
cout<<"\n"<<endl;
//}     
//} 
      
        
  // }
   
 cout<<"\n"<<"Program End!"<<endl;

 getch();

}





глючит на пашет .. у меня вопрос как сделать так что б:
1)было не ограниченоое кол-ао крмпл.чисел.
2)как ето разнести на классы?
3)как найти + - . *
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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