Форум программистов, компьютерный форум CyberForum.ru

Считывание комплексных чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
18.10.2012, 19:58     Считывание комплексных чисел #1
скажем если в с я считываю комплексные числа так:
C
1
scanf("%d+%di",&a1,&b1);
как это сделать в с++?
покажите на примерчике
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2012, 19:58     Считывание комплексных чисел
Посмотрите здесь:

C++ Класс комплексных чисел
C++ Структур комплексных чисел
C++ Деление комплексных чисел
Класс комплексных чисел C++
Калькулятор комплексных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
18.10.2012, 20:01     Считывание комплексных чисел #2
C++
1
std::cin >> a1 >> b1;
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
18.10.2012, 20:17  [ТС]     Считывание комплексных чисел #3
что-то не то все равно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
 
typedef struct COMPLEX{
       int a;
       int b;
       }
       Complex;
       Complex multiply(Complex,Complex);
       int main()
{
   int a1,b1,a2,b2;
   Complex x,y,z;
   cout<<"enter first complex number:"<<endl;
   cin>>a1>>b1;
   cout<<"enter second complex number:";
   cin>>a2>>b2;
   x.a=a1;
   x.b=b1;
   y.a=a2;
   y.b=b2;
   z=multiply(x,y);
   cout<<"Complex number's multiplication:"<<z.a<<z.b;
   system("pause");
   return 0;
}
//umnowenie kompleksnih 4isel
Complex multiply (Complex x,Complex y){
Complex z;
z.a = x.a*y.a - x.b*y.b;
    z.b = x.a*y.b + x.b*y.a;
return z;
}
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
18.10.2012, 20:34     Считывание комплексных чисел #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
#include <complex>
 
using namespace std;
 
typedef struct COMPLEX
{
       int a;
       int b;
} Complex;
 
Complex multiply(const Complex&, const Complex&);
 
int main()
{
   int a1, b1, a2, b2;
   Complex x, y, z;
   cout << "enter first complex number: ";
   cin >> a1 >> b1;
   cout << "enter second complex number: ";
   cin >> a2 >> b2;
   x.a = a1;
   x.b = b1;
   y.a = a2;
   y.b = b2;
   z = multiply(x, y);
   cout << "Complex number's multiplication: " << z.a << ", " << z.b << std::endl;
   std::complex<int> cmp;
   cmp = std::complex<int>(x.a, x.b) * std::complex<int>(y.a, y.b);
   std::cout << cmp << std::endl;
   system("pause");
   return 0;
}
 
Complex multiply (const Complex& x, const Complex& y)
{
    Complex z;
    z.a = x.a * y.a - x.b * y.b;
    z.b = x.a * y.b + x.b * y.a;
    return z;
}
Считывание комплексных чисел
Все то
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
18.10.2012, 20:54  [ТС]     Считывание комплексных чисел #5
ok, cпасибо, я вводила как комплексные)))

Добавлено через 42 секунды
а вообще реально сделать так, чтобы можно было вводить, как комплексные, например 2+3i?

Добавлено через 13 минут
мне бы в таком варианте
Enter a + bi: 1 + 2i
Enter c + di: 3 + 4i
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
18.10.2012, 21:02     Считывание комплексных чисел #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
struct complex
{
    int real, image;  
};
 
std::istream& operator >> (std::istream& in, complex& comp)
{
    in >> comp.real;
    in.ignore(1, '+');
    in >> comp.image;
    in.ignore(1, 'i');
    return in;
}
 
std::ostream& operator << (std::ostream& out, const complex& comp)
{
    out << "( " <<  comp.real << ", " << comp.image << ")";
    return out;
}
 
int main()
{
    complex comp;
    std::cin >> comp;
    std::cout << comp << std::endl;
}
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
19.10.2012, 21:21  [ТС]     Считывание комплексных чисел #7
теперь у меня проблема с объединением этих двух программ, то что касается функции перемножения не работает, вразумите кто-нибудь) как надо?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
 
 
struct complex
{
    int a,b;  
    int real1,real2,image1,image2;
}
       complex;
       complex multiply(complex x,complex y);
 
//umnowenie kompleksnih 4isel
 
std::istream& operator >> (std::istream& in, complex& comp)
{
    in >> comp.real1;
    in.ignore(1, '+');
    in >> comp.image1;
    in.ignore(1, 'i');
    
    in>>comp.real2;
    in.ignore(1, '+');
    in >> comp.image2;
    in.ignore(1, 'i');
    return in;
    
}
 
std::ostream& operator << (std::ostream& out, const complex& comp )
{
              
    out <<  comp.real1 << "+ " << comp.image1 <<"i"<<"\n";
    
     out <<  comp.real2<< "+ " << comp.image2<<"i" ;
    return out;
}
/////////////////////////////////////////////////////////////////
//umnowenie kompleksnih 4isel
complex multiply (complex x,complex y){
complex z;
 
z.a = x.a*y.a - x.b*y.b;
z.b = x.a*y.b + x.b*y.a;
return z;
}
int main()
{
   system("cls");
  
   int a,b;
   complex x,y,z;
   //kompleksnie
  
   complex comp;
   
    
    std::cin >> comp;
    std::cout << comp << std::endl;
    x.a=comp.real1;
    x.b=comp.image1;
    y.a=comp.real2;
    y.b=comp.image2;
   
    z=multiply(x,y);
    cout<<"Complex number's multiplication:"<<" "<<z.a<<" "<<z.b<<endl;
  
    
 
system("pause");
   
return 0;
}
Добавлено через 18 часов 40 минут
почему при умножении комплексных чисел у меня выводит ответ совсем некомплексный?
и если я хочу умножение записать отдельной функцией, как правильно все это декларировать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
 
 
struct complex
{
 
    int real1,real2,image1,image2;
};
   
 
//umnowenie kompleksnih 4isel
 
std::istream& operator >> (std::istream& in, complex& comp)
{
    in >> comp.real1;
    in.ignore(1, '+');
    in >> comp.image1;
    in.ignore(1, 'i');
    
    in>>comp.real2;
    in.ignore(1, '+');
    in >> comp.image2;
    in.ignore(1, 'i');
    return in;
    
}
 
std::ostream& operator << (std::ostream& out, const complex& comp )
{
              
    out <<  comp.real1 << "+ " << comp.image1 <<"i"<<"\n";
    out <<  comp.real2<< "+ " << comp.image2<<"i" ;
     
     
     
    return out;
}
int main()
{
   system("cls");
  
   //kompleksnie
  
    complex comp;
    std::cin >> comp;
    std::cout << comp << std::endl;
    
    std::cout<< comp.real1*comp.real2+comp.real1*comp.image2+comp.image2*comp.real2+comp.image1*comp.image2<<std::endl;
    system("pause");
   
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 01:35     Считывание комплексных чисел #8
Цитата Сообщение от letnjaja Посмотреть сообщение
теперь у меня проблема с объединением этих двух программ, то что касается функции перемножения не работает, вразумите кто-нибудь) как надо?)
letnjaja, по ссылке целый FAQ посвящённый данной тематике с примерами и целым классом комплексных чисел
Начало http://www.cyberforum.ru/faq/thread4...ml#post2432704
Конец http://www.cyberforum.ru/faq/thread4...ml#post2444225 (там уже целый класс)


Цитата Сообщение от letnjaja Посмотреть сообщение
почему при умножении комплексных чисел у меня выводит ответ совсем некомплексный?
- да потому что у вас "смешались в кучу кони люди" (как у Лермонтова)

Цитата Сообщение от letnjaja Посмотреть сообщение
std::cout<< comp.real1*comp.real2+comp.real1*comp.image2+comp.image2*comp.real2+comp.image1*comp.image2<<std::endl;
- ОМГ что за ужас?Ваши числа потому и комплексные что обладают действительной и мнимой части, причём эти части должны жить отдельно, а у вас слеплены в один большой действительный результат
-=ЮрА=-
Заблокирован
Автор FAQ
20.10.2012, 01:53     Считывание комплексных чисел #9
Всё таки решил накидать по-быстрому, авось кому пригодится...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
using namespace std;
 
struct complex
{
    double re;
    double im;
};
 
void outcmplx(complex c);
complex cmult(complex c1, complex c2);
 
int main()
{
    complex c1 = {0};
    complex c2 = {0};
    cout<<"Enter 1-st complex re im : ";cin>>c1.re>>c1.im;
    cout<<"Enter 2-nd complex re im : ";cin>>c2.re>>c2.im;
    outcmplx(c1);cout<<" * ";outcmplx(c2);cout<<" = ";outcmplx(cmult(c1, c2));
    return 0;
}
 
void outcmplx(complex c)
{
    double im = c.im;
    bool bLess= im < 0;
    if(bLess)
        im *= -1;
    cout<<c.re<<(bLess ? " -j*" : " +j*")<<im;
}
 
complex cmult(complex c1, complex c2)
{
    complex c = {0};
    c.re = c1.re*c2.re - c1.im*c2.im;
    c.im = c1.im*c2.re + c1.re*c2.im;
    return c;
}
Миниатюры
Считывание комплексных чисел   Считывание комплексных чисел  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 02:21     Считывание комплексных чисел
Еще ссылки по теме:

C++ Калькулятор комплексных чисел
C++ Класс комплексных чисел
Деление комплексных чисел C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
20.10.2012, 02:21  [ТС]     Считывание комплексных чисел #10
спасибо, я уже разобралась)
Yandex
Объявления
20.10.2012, 02:21     Считывание комплексных чисел
Ответ Создать тему
Опции темы

Текущее время: 01:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru