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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с инициализацией Комлексных чисел.. есть прикреплённый файл , токо чаго то 
:(
    Опции темы
Vasapypkin
  Дата 21.12.2005, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile

Привет, я новичёк , так что ничего сдесь не знаю , но надёсь ,что здесь мне помогут решить
часть моей программы(проблемы))

вот текст,
Код

#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,operators,i,mul;

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>>operators;
if(znak=='-')
znak='+';
cout<<operand_1[g]<<znak<<i<<mul<<operand_2[g]<<endl;
g++;



}
while(!f.eof());



//Double_Complex number_1(operand_1,operand_2);

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

cout<<"\n"<<"Program End!"<<endl;
getch();
}





вопрос можно ли так делать ,? или нет? и если нет то предложите пожалуйста что то более концептульное..
а если да , то почему при нажатии на кнопку он выкидывает на "Break"?

вот так выгледит содержание входного файла :

2.23+i*5.54 +6.66+i*7.77 +8.888+i*8.888

так работает , токо в конце какой-то бред пишет ..

вот а если написать так
2.23+i*5.54 +6.66+i*7.77 +8.888+i*8.888 dddd
он циклиться , и выводе в консоль Рандомные комлексные числа (бесконечно "")

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



Буду ждать , с Уважением Кирилл" smile smile smile

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


Новичок



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

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



ну что все молчат...вот написал пока как суммирование произвести...но мне кажется что ето тупняк (к тому же он не пашет ) . исправте если можно ..
и желательно чтоб все ето было в классе , которой находиться в Комлех.Х вот а в Маине вызвает функцию класса.. Давайте народ ..!! smile
Добавлено @ 02:48

Код

#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;
    double otv2;
    char 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]<<endl;
g++;



}
while(!f.eof());



//Double_Complex number_1(operand_1,operand_2);

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




 

for (c;c!=f.eof();c++){  /* Walks buffer until NULL */
   {
      switch ( c)
      {
         case '+':
                 otv1=operand_1[g]+operand_1[g+1];
                otv2=operand_2[g]+operand_2[g+1];
                cout<<"E ge ge"<<endl;
            break;
           default:
                cout<<otv1<<znak<<i<<mul<<otv2<<endl;    
            cout<<"\n"<<endl;
      }
   }
   
 cout<<"\n"<<"Program End!"<<endl;
}
 getch();
return;
}





PM MAIL   Вверх
Vasapypkin
Дата 21.12.2005, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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   Вверх
Exekutor
Дата 21.12.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 1.11.2005
Где: Казахстан. Костан ай

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



конечно не пашет - у тебя закомментирована закрывающая скобка функции main


--------------------
[color=blue][size=2]En taro addun, ma sol larinas[/size][/color]
PM MAIL   Вверх
Vasapypkin
Дата 23.12.2005, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо конечно , но хотелось что нибудь дельное услышать .. smile
PM MAIL   Вверх
Romikgy
Дата 23.12.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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



Имхо те надо корректно разобрать строку, а далее воспользоватся встроенными средствами работы с комплексными числами
#include <complex>
вроде так если не ошибаюсь


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
cardinal
Дата 23.12.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


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

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



Цитата(Vasapypkin @ 20.12.2005, 23:45)
Ну ..вот .. и ещё не ссылайтесь на топик Кальк.комп.чисел .

http://forum.vingrad.ru/index.php?showtopic=75270


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

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


Опытный
**


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

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



Может ,это попроще будет ?

Код

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


struct complex
{
    double re,im;
    complex(double x=0.,double y=0.):re(x),im(y){};
    friend ifstream& operator>>(ifstream& in,complex &nu)
    {
        char sign,i,star;
        in>>nu.re>>sign>>i>>star>>nu.im;
        nu.im*=sign=='-'?-1.:1.;
        return in;
    }
    friend ostream& operator<<(ostream& out,complex &nu)
    {
        out<<nu.re<<(nu.im<0.?"-i":"+i")<<fabs(nu.im);
        return out;
    }
    complex add(complex x)
    {
        re+=x.re;
        im+=x.im;
        return *this;
    }
};
void main ()
{
    complex item,rezultat;
    char sign;
    ifstream f("file.txt");
    do{
        f>>item>>sign;
        cout<<item<<'\t'
                                       <<( f.rdstate()==ios::failbit)<<'\n'  ;
        if(f.rdstate()!=ios::failbit)
            rezultat.add(item);
    }while(! ( f.eof()||   f.bad()||  f.rdstate()==ios::failbit   ));
    cout<<"resultat="<<rezultat;
    cout<<"\n"<<"Program End!"<<'\n';
    getch();
}




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


Новичок



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

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



м .. интересно ,надо поUse(ать) Писаибо
Добавлено @ 02:37
е-ма е ещё и компилирует ! респект .... ... .. . . .
PM MAIL   Вверх
Vasapypkin
Дата 26.12.2005, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Слухай а как ето расписать по классам т.е.

Main.cpp :
f.opren()...
...

_________________
Complex.cpp

comlex::init (..
){...}
comlex::add (..)
{}
инициализация
суммирование
разность и.т д.


и
__________________________
Complex.h

class Complex:
private :
double re;
double in;
public:
comlex::init(......);
описание класса

прототип функций инициал. слож и т.д.

};
#endif; smile
PM MAIL   Вверх
Vasapypkin
Дата 26.12.2005, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



threef : напиши как сделать то же самое только чтоб ето выгледело так..
на 3 части делиться прога : main.cpp complex.cpp complex.h

//main.cpp

Код

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


void main ()
{
    //complex item,rezultat;
    char sign;
    ifstream f("file.txt");
    do{
        f>>item>>sign;
        cout<<item<<'\t'   <<( f.rdstate()==ios::failbit)<<'\n'  ;
        if(f.rdstate()!=ios::failbit)
            rezultat.add(item);
    }while(! ( f.eof()||   f.bad()||  f.rdstate()==ios::failbit   ));
    cout<<"resultat="<<rezultat;
    cout<<"\n"<<"Program End!"<<'\n';
    getch();
}
 
 




ето конечно бред, ну ето я просто показываю как ето надо преобразовать..


complex.cpp
Код

#include <math.h>
#include "Complex.h"
#include <conio.h>
#include <string>
#include <vector>
using namespace std;


   

  
friend ifstream& operator>>(ifstream& in,complex &nu)
    {
        char sign,i,star;
        in>>nu.re>>sign>>i>>star>>nu.im;
        nu.im*=sign=='-'?-1.:1.;
        return in;
    }

friend ostream& operator<<(ostream& out,complex &nu)
    {
        out<<nu.re<<(nu.im<0.?"-i":"+i")<<fabs(nu.im);
        return out;
    }

int complex::add(complex x)
    {
        re+=x.re;
        im+=x.im;
        return *this;
    }



и Coplex.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 complex
{
private: 
     
      double Ig;
    // double Re;
public:
    friend class istream;
int    complex::add(complex x);
int    complex::init(double re, double im);


double re,im;
    complex(double x=0.,double y=0.):re(x),im(y){};




};
#endif





ну вот далекое притсовление того как ето должно выглядеть , но в етом варианте понятно, компилятор задыхается :-)..

можешь исправить так , что не задыхался ,и выполнял ту же функцию.


Заранее Очень благодрен))!! smile
PM MAIL   Вверх
threef
Дата 26.12.2005, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



"meeign.cpp"

Код

#include <fstream>
#include <conio.h>
#include "math.h"
#include "mycomlex.hpp"
#include <iostream>
using namespace std;


void main ()
{
    complex item,rezultat;
    char sign;
    ifstream f("file.txt");
    do{
        f>>item>>sign;
        cout<<item<<'\t'
               <<( f.rdstate()==ios::failbit)<<'\n'  ;
        if(f.rdstate()!=ios::failbit)
            rezultat.add(item);
    }while(! ( f.eof()||   f.bad()||  f.rdstate()==ios::failbit   ));
    cout<<"resultat="<<rezultat;
    cout<<"\n"<<"Program End!"<<'\n';
    getch();
}


"mycomplex.hpp"

Код

#include <iostream>
#include <fstream>
using namespace std;

struct complex
{
    double re,im;
    complex(double x=0.,double y=0.)
; 
   friend ifstream& operator>>(ifstream& in,complex &nu)
;   friend ostream& operator<<(ostream& out,complex &nu)
;
   complex add(complex x)
;
};



"mycomlex.cpp"

Код

#include "math.h"
#include "mycomlex.hpp"

complex::complex(double x,double y):re(x),im(y){};
istream& operator>>(ifstream& in,complex &nu)
    {
        char sign,i,star;
        in>>nu.re>>sign>>i>>star>>nu.im;
        nu.im*=sign=='-'?-1.:1.;
        return in;
    }
ostream& operator<<(ostream& out,complex &nu)
    {
        out<<nu.re<<(nu.im<0.?"-i":"+i")<<fabs(nu.im);
        return out;
    }
complex::complex add(complex x)
    {
        re+=x.re;
        im+=x.im;
        return *this;
    }
};


Добавлено @ 18:28
Насчет компилепригодности не проверял, ты уж сам..
PM MAIL   Вверх
Vasapypkin
Дата 26.12.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не не компилирует .. ну я думаю что ето неправильно..

например complex item,rezultat;
там наверное . complex t;
t.item t.rezultat

ну и т . д .. но сё рано спасибо...

а ты можешь попробовать написать ,что бы компилировалась?

Код

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

complex t
void main ()
{
    //complex item,rezultat;
    char sign;
    ifstream f("file.txt");
    do{
        f>>t.item>>sign;
        cout<<t.item<<'\t'
               <<( f.rdstate()==ios::failbit)<<'\n'  ;
        if(f.rdstate()!=ios::failbit)
            rezultat.add(item);
    }while(! ( f.eof()||   f.bad()||  f.rdstate()==ios::failbit   ));
    cout<<"resultat="<<t.rezultat;
    cout<<"\n"<<"Program End!"<<'\n';
    getch();
}





Код


#ifndef __complex_H
#define __complex_H


#include <iostream>
#include <fstream>
using namespace std;

class complex
{


private:
    double re,im;
public:
    complex(double x=0.,double y=0.); 
   friend ifstream& operator>>(ifstream& in,complex &nu);
   friend ostream& operator<<(ostream& out,complex &nu);

   complex add(complex x);

};

#endif




Код

#include "math.h"
#include "complex.h"

complex::complex(double x,double y):re(x),im(y){};
istream& operator>>(ifstream& in,complex &nu)
    {
        char sign,i,star;
        in>>nu.re>>sign>>i>>star>>nu.im;
        nu.im*=sign=='-'?-1.:1.;
        return in;
    }
ostream& operator<<(ostream& out,complex &nu)
    {
        out<<nu.re<<(nu.im<0.?"-i":"+i")<<fabs(nu.im);
        return out;
    }
complex::complex add(complex x)
    {
        re+=x.re;
        im+=x.im;
        return *this;
    }




Ну что то вроде этого , токо ето не компилируется :-( ну там и ошибрк навалом
Добавлено @ 20:34
не не компилирует .. ну я думаю что ето неправильно..

например complex item,rezultat;
там наверное . complex t;
t.item t.rezultat

ну и т . д .. но сё рано спасибо...

а ты можешь попробовать написать ,что бы компилировалась?

Код

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

complex t
void main ()
{
    //complex item,rezultat;
    char sign;
    ifstream f("file.txt");
    do{
        f>>t.item>>sign;
        cout<<t.item<<'\t'
               <<( f.rdstate()==ios::failbit)<<'\n'  ;
        if(f.rdstate()!=ios::failbit)
            rezultat.add(item);
    }while(! ( f.eof()||   f.bad()||  f.rdstate()==ios::failbit   ));
    cout<<"resultat="<<t.rezultat;
    cout<<"\n"<<"Program End!"<<'\n';
    getch();
}





Код


#ifndef __complex_H
#define __complex_H


#include <iostream>
#include <fstream>
using namespace std;

class complex
{


private:
    double re,im;
public:
    complex(double x=0.,double y=0.); 
   friend ifstream& operator>>(ifstream& in,complex &nu);
   friend ostream& operator<<(ostream& out,complex &nu);

   complex add(complex x);

};

#endif




Код

#include "math.h"
#include "complex.h"

complex::complex(double x,double y):re(x),im(y){};
istream& operator>>(ifstream& in,complex &nu)
    {
        char sign,i,star;
        in>>nu.re>>sign>>i>>star>>nu.im;
        nu.im*=sign=='-'?-1.:1.;
        return in;
    }
ostream& operator<<(ostream& out,complex &nu)
    {
        out<<nu.re<<(nu.im<0.?"-i":"+i")<<fabs(nu.im);
        return out;
    }
complex::complex add(complex x)
    {
        re+=x.re;
        im+=x.im;
        return *this;
    }




Ну что то вроде этого , токо ето не компилируется :-( ну там и ошибрк навалом
PM MAIL   Вверх
Vasapypkin
Дата 4.1.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну так как ?

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0634 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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