Доюрый Ночи, хочу поднять эту тему т.к. уверен многим пригодиться , включая меня
Есть задача : прочитать неизвестное кол-во Комлексных чисел из фалйа ( file.txt вида :10.23+i*5.54 *6.66+i*7.77 +33.333+i*3.332 -3.25+i*45.344) , нужно вывести ответ (суммы разности деления умножение комп.чисел)
вот в принципе и все .. конечно внизу я приложу формулировку того что действительно нужно сделать
вот то что я уж написал
( только чтени к.ч из файла , и попытка их в тупуюю сложть ,(на ето можно не смотреть) но ето наверно грубоваот, и так писать не желательно , к тому же работает все очень относительно..
//Main.cpp
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "complex.h"
Double_Complex s;
#include <fstream>
using namespace std;
ifstream f;
void main ()
{
//s.summ(operand_1[0],operand_2[0]);
char zna='+';
char ii='i';
char mu='*';
double im[50];
double re[50];
int h=50;
s.indif(f,&im[1],&re[1]);
int g=1;
do
{
cout<<g<<")"<<im[g]<<zna<<ii<<mu<<re[g]<<endl;
g++;}
while(g!=9);
double otvet1;
double otvet2;
s.summ(&otvet1,&otvet2);
cout<<"\n"<<endl;
cout<<otvet1<<zna<<ii<<mu<<otvet2<<endl;
getch();
return;
}
//Complex.h
#ifndef __Complex_H
#define __Complex_H
#include <iostream>
#include <string>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
using namespace std;
class Double_Complex
{
private:
//double Winkel;
//double Betrag;
double Im;
double Re;
public:
double Double_Complex::indif(ifstream &f,double operand_1[50],double operand_2[50]);
double Double_Complex::summ(double operand_1[1],double operand_2[1]);
/*
/* double sagIm()
{
return Im;
}
double sagRe()
{
return Re;
}
double sagBetrag()
{
return Betrag;
}
double sagRadWinkel()
{
return Winkel;
}
double sagGrad()
{
return toGrad(Winkel);
}
Double_Complex(double re, double im)
{
Re=re;
Im=im;
Betrag=berechneBetrag();
Winkel=atan2(Im,Re);
}*/
};
#endif
//Complex.cpp
#include <math.h>
#include "Complex.h"
#include <conio.h>
#include <string>
#include <vector>
using namespace std;
double Double_Complex::indif(ifstream &f,double operand_1[1],double operand_2[1])
{
f.open("file.txt");
char znak,i, mul;
//double ff=0.0;
//double gg=0.0;
//char *buffer = "+";
int g=0;
do{
f>>operand_1[g]>>znak>>i>>mul>>operand_2[g];
if (znak!='+')
cout<<("prmer kopleksmnogo chesla : a+i*b, ispravte !")<<endl;
//Double_Complex resultat(operand_1,operand_2);
//f>>operator;
if(znak=='-')
znak='+';
g++;
}
while(!f.eof());
return operand_1[g],operand_2[g];
}
double Double_Complex::summ(double operand_1[1],double operand_2[1])
{
char znak,i,mul;
double otv1=0.0;
double otv2=0.0;
int t=1;
//cout<<"ETO ONO---"<<operand_1[0]<<" "<<operand_1[1]<<endl;
cout<<"\n"<<endl;
cout<<"Otvet, summa:"<<endl;
do
{
otv1=otv1+(operand_1[t]+operand_1[t]);
otv2=otv2+(operand_2[t]+operand_2[t]);
t++;}
while(t!=9);
return otv1,otv2;
}
Вот сама формулировка как оещал выше , более точнаяя, и требовательная (к решению которой я должен придти).
:
Постановка задачи
Создайте класс Complex для представления комплексных данных и инкапсулируйте в нём основные операции с комплексными данными.
По крайней мере, предусмотрите следующие методы:
конструктор, с помощью которого можно инициализировать комплексное данное;
метод, позволяющий задать произвольное значение комплексного данного;
методы, обеспечивающие выполнение арифметических действий над комплексными данными (сложение, вычитание, умножение, деление, модуль);
метод print, обеспечивающий печать комплексного данного на консоль или в любой файл;
метод toString, обеспечивающий преобразование комплексного данного в строку символов.
Усовершенствуйте класс Complex, обеспечив реализацию следующей функциональности:
Инициализация комплексного числа значением плавающего типа;
Перегруженные арифметические операции для выполнения основных арифметических действий;
Перегруженные операции >> и << для ввода и вывода комплексных данных (см. приложение II учебного пособия);
Преобразование из типа Complex к типу double (когда возможно).
Продумайте как организовать обработку ошибок при выполнении некорректных операций с объектами класса Complex. Что это за некорректные операции?
Спроектируйте комплект тестирующих программ для проверки разработанного класса.
Используя и развивая определение класса Complex, спроектируйте набор классов для представления следующих абстракций:
Список комплексных данных;
Массив комплексных данных с контролем индексирования;
Матрица комплексных данных . с контролем индексирования.
Напишите тестирующие программы, загружающие соответствующие контейнеры комплексных данных из файла, и обеспечивающие разнообразную обработку комплексных данных в рамках реализованной функциональности.