Глава 9. Структуры в языке C++
//pr определяет, выводить или нет полученное число на экран.
complex2 p e r e v o d ( complex1 c h i s l o , bool pr=f a l s e )
{
complex2 temp ;
temp . Modul=s q r t ( c h i s l o . Re∗ c h i s l o . Re+
c h i s l o . Im∗ c h i s l o . Im ) ;
temp . Argum=atan ( c h i s l o . Im/ c h i s l o . Re ) ;
i f ( pr ) v i v o d ( temp ) ;
return temp ;
}
//Функция сложения двух чисел в алгебраической форме,
//pr определяет, выводить или нет число на экран.
complex1 p l u s 1 ( complex1 c h i s l o 1 , complex1 c h i s l o 2 , bool pr=true )
{
complex1 temp ;
temp . Re=c h i s l o 1 . Re+c h i s l o 2 . Re ;
temp . Im=c h i s l o 1 . Im+c h i s l o 2 . Im ;
i f ( pr ) v i v o d ( temp ) ;
return temp ;
}
//Функция вычитания двух чисел в алгебраической форме,
//pr определяет, выводить или нет число на экран.
complex1 minus1 ( complex1 c h i s l o 1 , complex1 c h i s l o 2 , bool pr=true )
{
complex1 temp ;
temp . Re=c h i s l o 1 . Re−c h i s l o 2 . Re ;
temp . Im=c h i s l o 1 . Im−c h i s l o 2 . Im ;
i f ( pr ) v i v o d ( temp ) ;
return temp ;
}
//Функция умножения двух чисел в алгебраической форме,
//pr определяет, выводить или нет число на экран.
complex1 mult1 ( complex1 c h i s l o 1 , complex1 c h i s l o 2 , bool pr=true )
{
complex1 temp ;
temp . Re=c h i s l o 1 . Re∗ c h i s l o 2 . Re−c h i s l o 1 . Im∗ c h i s l o 2 . Im ;
temp . Im=c h i s l o 1 . Im∗ c h i s l o 2 . Re+c h i s l o 1 . Re∗ c h i s l o 2 . Im ;
i f ( pr ) v i v o d ( temp ) ;
return temp ;
}
//Функция деления двух чисел в алгебраической форме,
//pr определяет, выводить или нет число на экран.
complex1 d i v i d e 1 ( complex1 c h i s l o 1 , complex1 c h i s l o 2 , bool pr=true )
{
complex1 temp ;
temp . Re=( c h i s l o 1 . Re∗ c h i s l o 2 . Re+c h i s l o 1 . Im∗ c h i s l o 2 . Im ) / ( c h i s l o 2 . Re∗ c h i s l o 2 .
Re+c h i s l o 2 . Im∗ c h i s l o 2 . Im ) ;
temp . Im=( c h i s l o 1 . Im∗ c h i s l o 2 . Re−c h i s l o 1 . Re∗ c h i s l o 2 . Im ) / ( c h i s l o 2 . Re∗ c h i s l o 2 .
Re+c h i s l o 2 . Im∗ c h i s l o 2 . Im ) ;
i f ( pr ) v i v o d ( temp ) ;
return temp ;
}
//Функция возведения комплексного числа в алгебраической форме
//в целую степень n, pr определяет, выводить или нет полученное число на экран.
complex1 pow1 ( complex1 c h i s l o 1 , i n t n , bool pr=true )
{
complex1 temp ;
complex2 temp2 ;
f l o a t p=1;
i n t i =1;
temp2=p e r e v o d ( c h i s l o 1 , true ) ; //Перевод числа в тригонометрическую форму.
f o r ( ; i <=n ; p∗=temp2 . Modul , i ++) ;
temp . Re=p∗ c o s ( n∗ temp2 . Argum ) ;
temp . Im=p∗ s i n ( n∗ temp2 . Argum ) ;
i f ( pr ) v i v o d ( temp ) ;
Программирование на языке С++ в среде Qt Creator
9.1. Общие сведения о структурах
255
return temp ;
}
//Функция извлечения корня степени n из комплексного числа
//в алгебраической форме, pr определяет, выводить или нет
//полученные значения на экран. Функция возвращает ro и fi.
void s q r t n 1 ( complex1 c h i s l o 1 , i n t n , f l o a t ∗ ro , f l o a t ∗ f i , bool pr=true )
{
complex1 temp ;
complex2 temp2 ;
i n t i =0;
temp2=p e r e v o d ( c h i s l o 1 , true ) ; //Перевод числа в тригонометрическую форму.
∗ r o=pow ( temp2 . Modul , ( f l o a t ) 1/n ) ;
∗ f i =temp2 . Argum ;
i f ( pr )
{
f o r ( i =0; i {
cout<temp . Re=∗r o ∗ c o s ( ( ∗ f i +2∗M_PI∗ i ) /n ) ;
temp . Im=∗r o ∗ s i n ( ( ∗ f i +2∗M_PI∗ i ) /n ) ;
v i v o d ( temp ) ;
}
}
}
i n t main ( )
{
complex1 c h i s l o 1 , c h i s l o 2 ; //Описание комплексных
complex1 c h i s l o 5 ; //чисел в алгебраической форме.
complex2 c h i s l o 3 , c h i s l o 4 ; //Описание комплексных чисел в тригонометрической форме.
f l o a t ro1 , f i 1 ;
c h i s l o 1=vvod1 ( ) ; //Ввод исходных данных
c h i s l o 2=vvod1 ( ) ; //в алгебраической форме.
v i v o d ( c h i s l o 1 ) ; //Вывод исходных данных
v i v o d ( c h i s l o 2 ) ; //в алгебраической форме.
c h i s l o 3=p e r e v o d ( c h i s l o 1 , true ) ; //Перевод чисел
c h i s l o 4=p e r e v o d ( c h i s l o 2 , true ) ; //в тригонометрическую форму и вывод их на экран.
cout<<"Сумма чисел " ;
c h i s l o 5=p l u s 1 ( c h i s l o 1 , c h i s l o 2 , true ) ;
cout<<"Разность чисел " ;
c h i s l o 5=minus1 ( c h i s l o 1 , c h i s l o 2 , true ) ;
cout<<"Произведение чисел " ;
c h i s l o 5=mult1 ( c h i s l o 1 , c h i s l o 2 , true ) ;
cout<<"Частное чисел " ;
c h i s l o 5=d i v i d e 1 ( c h i s l o 1 , c h i s l o 2 , true ) ;
c h i s l o 5=pow1 ( c h i s l o 1 , 5 , true ) ; //Возведение числа в пятую степень.
s q r t n 1 ( c h i s l o 1 , 5 , &ro1 , &f i 1 , true ) ; //Извлечение корня пятой степени.
return 0 ;
}
Результаты работы программы к задаче 9.2.
Введите действительную часть числа
5
Введите мнимую часть комплексного числа
-7
Введите действительную часть числа
11
Введите мнимую часть комплексного числа
1.85
5 -7 i
11 +1.85 i
8.60233 ( cos (-0.950547) + i sin (-0.950547))
11.1545 ( cos (0.166623) + i sin (0.166623))
Сумма чисел 16 -5.15 i
Разность чисел -6 -8.85 i
© 2015 Алексеев Е. Р., Злобин Г. Г., Костюк Д. А., Чеснокова О. В., Чмыхало А. С.
256
Do'stlaringiz bilan baham: |