С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Помогите написать учебно-демонстрационную прогу по работе с комплексными числами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Компиляция файлов http://www.cyberforum.ru/cpp-beginners/thread562094.html
Подскажите, допустим у меня есть файлик с кодом на С++, как его можно скомпилировать в exe-файл через командную строку (вообщем нужно типо сделать программу "Алгоритм")
C++ Программа по определению максимального количества одинаковых элементов массива. Здравствуйте! Помогите пожалуйста, если глобально, то задача в следующем: Дан целочисленные массив размера N. Определить максимальное количество его одинаковых элементов. Примерный алгоритм:... http://www.cyberforum.ru/cpp-beginners/thread562093.html
C++ Удаление слов из строки
Имеются слова "in" "it" "is" "on" "the" которые надо удалить из строки "He is sitting on the table and watching films". Мне нужно, чтоб оно удаляло эти слова только если перед и после этих слов стоит...
Передача структуры в функцию C++
объясните, пожалуйста, что это за передача структуры в некоторые функции программы: void someFunction(NOTE * &Note) ?? Почему нельзя, как в других фукнциях, выполнить передачу по указателю так:...
C++ ошибка с указателями http://www.cyberforum.ru/cpp-beginners/thread562076.html
надо создать двусвязный список! во второй строке ошибка, как от неё избавиться? pt->prev=pg; pg->next=pt; pg=pt;
C++ Определить среднюю длину строк в тексте и вывести строки с длиной меньше средней определить среднюю длину строк и вывестис длиной меньше средней я даже приблизительно немогу понять как это делать, вначале нужно удалить все пробелы или как? подробнее

Показать сообщение отдельно
Flamy-man
0 / 0 / 0
Регистрация: 30.04.2012
Сообщений: 6
24.05.2012, 19:10  [ТС]
ниже код на программу.
помогите сделать функцию для перевода комплексного числа в тригонометрическую форму и обратно.

#include <iostream>
#include <fstream>
#include <ctime>
#include <complex>
#include <cmath>
#include <conio.h>
#include <windows.h>
#include <iomanip>
using namespace std;

int Test_FAQ[2][10];
int logic;
double Alpha = 0, N, real_, imag_, s_real_, s_imag_;
char i;

void teoriya();
void Calculator();
void ans(double rl, double im);
void Title_List();
void Menu();
void Statistic (int number, int logic);
void Rezult (int number, int right_answers);
int Test(int number);

int main()
{
ShowWindow( GetConsoleWindow() , SW_MAXIMIZE);
srand((unsigned)time(NULL));
setlocale(LC_ALL, "Russian");
fstream f("Statistic.txt",ios::out);
f.close();
Title_List();
_getch();
int navigator;
do
{
Menu();
cin>>navigator;
switch(navigator)
{
case 1:
{
system("cls");
teoriya();
} break;
case 2:
{
system("cls");
cout<<"Примеры выражений:"<<endl;
cout<<"Для операторов + - * / :"<<endl;
cout<<"a±bi'оператор'c±di"<<endl;
cout<<"Для операторов ^ - степень v - корень :"<<endl;
cout<<"a±bi'оператор'N"<<endl<<endl;
Calculator();
_getch();
}break;
case 3:
{
system("cls");
Test(0);
Rezult(0,0);
_getch();
cout<<endl<<"Вывести правильные ответы на экран? "<<endl<<"1 - да"<<endl<<"0 - нет"<<endl;
cin>>logic;
system("cls");
Statistic(0 , logic);
fstream f("Statistic.txt",ios:: app);
if (f.is_open())
{
f<<endl<<endl<<"**************************************************"<<endl;
}
f.close();
if (logic) _getch();
}break;
default:
{
system("cls");
break;
}
}
}
while (navigator!=0);
system("pause");
return 0;
}

void teoriya()
{
//teoriya
}

void ans(double rl, double im)
{
if (im>0)
{
cout<<rl<<"+"<<im<<"i";
}
else
{
cout<<rl;
if(im!=0)cout<<im<<"i";
}
cout<<endl<<endl;
}

void Calculator()
{
char operand;
cin>>real_;
cin>>imag_;
cin>>i;
cin>>operand;
complex<double> z (real_,imag_);
switch (operand)
{
case '+':
{
cin>>s_real_;
cin>>s_imag_;
cin>>i;
complex<double> j (s_real_,s_imag_);
complex<double> temp = z+j;
cout<<"("<<real_<<")+("<<imag_<<")*i"<<operand<<"("<<s_real_<<")+("<<s_imag_<<")*i";
cout<<"=(("<<real_<<")"<<operand<<"("<<s_real_<<"))+(("<<imag_<<")"<<operand<<"("<<s_imag_<<"))*i"<<"=";
ans(real(temp),imag(temp));
}break;
case '-':
{
cin>>s_real_;
cin>>s_imag_;
cin>>i;
complex<double> j (s_real_,s_imag_);
complex<double> temp = z-j;
cout<<"("<<real_<<")+("<<imag_<<")*i"<<operand<<"("<<s_real_<<")+("<<s_imag_<<")*i";
cout<<"=(("<<real_<<")"<<operand<<"("<<s_real_<<"))+(("<<imag_<<")"<<operand<<"("<<s_imag_<<"))*i"<<"=";
ans(real(temp),imag(temp));
}break;
case '*':
{
cin>>s_real_;
cin>>s_imag_;
cin>>i;
complex<double> j (s_real_,s_imag_);
complex<double> temp = z*j;
cout<<"(("<<real_<<")+("<<imag_<<")*i)"<<operand<<"(("<<s_real_<<")+("<<s_imag_<<")*i)";
cout<<"=(("<<real_<<")"<<operand<<"("<<s_real_<<"))+(("<<imag_<<")"<<operand<<"("<<s_real_<<"))*i";
cout<<"+(("<<real_<<")"<<operand<<"("<<s_imag_<<"))*i+(("<<imag_<<")"<<operand<<"("<<s_imag_<<"))*i^2";
cout<<"=(("<<real_<<")"<<operand<<"("<<s_real_<<")-("<<imag_<<")"<<operand<<"("<<s_imag_<<"))";
cout<<"*(("<<imag_<<")"<<operand<<"("<<s_real_<<")+("<<real_<<")"<<operand<<"("<<s_imag_<<"))*i"<<"=";
ans(real(temp),imag(temp));
}break;
case '/':
{
cin>>s_real_;
cin>>s_imag_;
cin>>i;
complex<double> j (s_real_,s_imag_);
complex<double> temp = z/j;
cout<<"(("<<setw(3)<<real_<<" )+("<<setw(3)<<imag_<<" )*i)";
cout<<" (("<<setw(3)<<real_<<" )*("<<setw(3)<<s_real_<<" ))+(("<<setw(3)<<imag_<<" )*("<<setw(3)<<s_imag_<<" ))";
cout<<" (("<<setw(3)<<imag_<<" )*("<<setw(3)<<s_real_<<" ))-(("<<setw(3)<<real_<<" )*("<<setw(3)<<s_imag_<<" ))";
cout<<endl<<"---------------- = ------------------------------ + ------------------------------- *i =";
ans(real(temp),imag(temp));
cout<<"(("<<setw(3)<<s_real_<<" )+("<<setw(3)<<s_imag_<<" )*i)";
cout<<" ( ("<<setw(3)<<s_real_<<" )^2+("<<setw(3)<<s_imag_<<" )^2 ) ";
cout<<" ( ("<<setw(3)<<s_real_<<" )^2+("<<setw(3)<<s_imag_<<" )^2 ) ";
}break;
case '^':
{
cin>>N;
double r = abs(z);
Alpha = acos((double)(real_/r))/atan(1.)*45;
complex<double> temp = pow(z,(N));
cout<<"r = |("<<real_<<")+("<<imag_<<")*i| = (("<<real_<<")^2+("<<imag_<<")^2)^(1/2) = "<<r<<endl;
cout<<"Alpha = arccos("<<real_<<"/"<<r<<") ="<<Alpha<<endl<<endl;
cout<<"(("<<real_<<")+("<<imag_<<"))"<<operand<<N;
cout<<" = ("<<r<<operand<<N<<")*(cos("<<N<<"*"<<Alpha<<") + i*sin("<<N<<"*"<<Alpha<<")) = ";
ans(real(temp),imag(temp));
}break;
case 'v':
{
cin>>N;
cout<<endl;
double r = abs(z);
Alpha = acos((double)(real_/r))/N;
cout<<"r = |("<<real_<<")+("<<imag_<<")*i| = (("<<real_<<")^2+("<<imag_<<")^2)^(1/2) = "<<r<<endl<<endl;
cout<<"Alpha = arccos("<<real_<<"/"<<r<<")/"<<N<<" = "<<Alpha/atan(1.)*45<<endl;
for (int counter=0 ; counter<N ; counter++)
{
if (counter) cout<<"Alpha = Alpha + 360/"<<N<<" = "<<Alpha/atan(1.)*45<<endl;
cout<<"(("<<real_<<")+("<<imag_<<"))^(1/"<<N<<")";
cout<<" = ("<<r<<"^(1/"<<N<<"))*(cos("<<Alpha/atan(1.)*45<<"/"<<N<<") + i*sin("<<Alpha/atan(1.)*45<<"/"<<N<<")) = ";
s_real_ = pow(r,(1./N))*cos(Alpha);
s_imag_ = pow(r,(1./N))*sin(Alpha);
ans(s_real_,s_imag_);
Alpha += (8.*atan(1.)/N);
}
_getch();
} break;
}
}

void Title_List()
{
cout<<" Астраханский государственный технический университет."<<endl;
cout<<" Учебно - демонстрационная программа операций над комплексными числами."<<endl;
cout<<" Выполнил студент группы ДИНР_11б - Денисенко Б."<<endl;
cout<<" г.АСТРАХАНЬ 2012г. "<<endl<<endl;
}

void Menu()
{
system("cls");
cout<<"1 - теория."<<endl;
cout<<"2 - калькулятор."<<endl;
cout<<"3 - тест."<<endl;
}

void Statistic (int number, int logic)
{
fstream f("Test_Q.txt",ios::in);
fstream g("Test_A.txt",ios::in);
fstream h("Statistic.txt",ios:: app);
if (f.is_open() && h.is_open())
{
int Nomer_Otveta;
char Vopros[100],otvet[50],Otvet[50],Otvet_2[50];
for (int i=0; i<Test_FAQ[1][number]; i++)
{
g>>Nomer_Otveta;
f.getline(Vopros,sizeof(Vopros));
if (Nomer_Otveta == 1) f.getline(Otvet,sizeof(Otvet));
else
{if (Test_FAQ[2][number] == 1) f.getline(Otvet_2,sizeof(Otvet_2));
else f.getline(otvet,sizeof(otvet));}
if (Nomer_Otveta == 2) f.getline(Otvet,sizeof(Otvet));
else
{if (Test_FAQ[2][number] == 2) f.getline(Otvet_2,sizeof(Otvet_2));
else f.getline(otvet,sizeof(otvet));}

if (Nomer_Otveta == 3) f.getline(Otvet,sizeof(Otvet));
else
{if (Test_FAQ[2][number] == 3) f.getline(Otvet_2,sizeof(Otvet_2));
else f.getline(otvet,sizeof(otvet));}

if (Nomer_Otveta == 4) f.getline(Otvet,sizeof(Otvet));
else
{if (Test_FAQ[2][number] == 4) f.getline(Otvet_2,sizeof(Otvet_2));
else f.getline(otvet,sizeof(otvet));}
}
number++;
h<<endl<< number <<" вопросом был: "<<endl;
h<< Vopros <<endl;
h<<"Правильный ответ: "<<Nomer_Otveta<<" - "<< Otvet <<endl;
if ( Nomer_Otveta == Test_FAQ[2][number-1]) h<<"Вы ответили правильно."<<endl;
else h<<"Вы ответили : "<<Test_FAQ[2][number-1]<<" - "<< Otvet_2 <<endl;
if (logic)
{
cout<<endl<< number <<" вопросом был: "<<endl;
cout<< Vopros <<endl;
cout<<"Правильный ответ: "<<Nomer_Otveta<<" - "<< Otvet <<endl;
if ( Nomer_Otveta == Test_FAQ[2][number-1]) cout<<"Вы ответили правильно."<<endl;
else cout<<"Вы ответили : "<<Test_FAQ[2][number-1]<<" - "<< Otvet_2 <<endl;
}
if (number < 5)
{
f.close();
h.close();
Statistic(number,logic);
}
}else cout<<"Файл не найден!";
f.close();
h.close();
}

void Rezult (int number, int right_answers)
{
fstream f("Test_A.txt",ios::in);
if (f.is_open())
{
int otvet;
for (int i=0; i<Test_FAQ[1][number]; i++) f>>otvet;
if (otvet == (Test_FAQ[2][number])) right_answers++;
if (number < 4)
{
f.close();
Rezult(number+1, right_answers);
}
else cout<<endl<<"Правильных ответов: "<< right_answers <<" из 5.";
} else cout<<"Файл не найден!";
f.close();
}

int Test(int number)
{
fstream f("Test_Q.txt",ios::in);
if (f.is_open())
{
bool work;
int randomizer,question_number=1;
char Vopros[100],otvet_1[50],otvet_2[50],otvet_3[50],otvet_4[50];
while (number < 5)
{
f.getline(Vopros,sizeof(Vopros));
f.getline(otvet_1,sizeof(otvet_1));
f.getline(otvet_2,sizeof(otvet_2));
f.getline(otvet_3,sizeof(otvet_3));
f.getline(otvet_4,sizeof(otvet_4));
randomizer = rand()%10; work = true;
for (int i=0 ; i<number; i++)
{
if (Test_FAQ[1][i] == question_number) work = false;
}
if (randomizer == 1 && work)
{
system("cls");
cout<<Vopros<<endl;
cout<<otvet_1<<endl;
cout<<otvet_2<<endl;
cout<<otvet_3<<endl;
cout<<otvet_4<<endl;
Test_FAQ[1][number] = question_number;
cout<<endl<<"Ваш ответ: ";
cin>>Test_FAQ[2][number];
while (Test_FAQ[2][number]<1 || Test_FAQ[2][number]>4)
{
cout<<"Такого ответа не существует. Выберите номер заново: ";
cin>>Test_FAQ[2][number];
}
number++;
}
if (question_number == 10)
{
f.close();
Test(number);
return 0;
}
else question_number++;
}
} else cout<<"Файл не найден!";
f.close();
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.