Модераторы: 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   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

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


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

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

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

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


 




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


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

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