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

Помогите написать учебно-демонстрационную прогу по работе с комплексными числами - 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". Мне нужно, чтоб оно удаляло эти слова только если перед и после этих слов стоит пробел, иначе оно их удаляет прямо из слов заданной строки, и тогда строка получается такого вида: "he stg and watchg films"
Передача структуры в функцию C++
объясните, пожалуйста, что это за передача структуры в некоторые функции программы: void someFunction(NOTE * &Note) ?? Почему нельзя, как в других фукнциях, выполнить передачу по указателю так: void someFunction(NOTE *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;
}
 
Текущее время: 02:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru