• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

помогите решить задачу на с++!

  • Автор темы gnomik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

gnomik

#1
комплексное число представленое парой действительных чисел ( a, b)где a действительная часть, b-мнимая .Реализовать класс complex для работы с комплексными числами.Обязательно должны присутствовать следующие операции:
-сложения add (a,b)+(с,d)=(a+с,b+d);
-вычитания sub (a,b)-(с,d)=(a-с,b-d);
-умножение mul (a,b)*(с,d)=(aс-bd, ad+bc);
-деление div (a,b)/(с,d)=(aс+bd, ad-bc)/(c^2+d^2);
-сравнение egu (a,b)-(с,d) если (a=с) и (b=d);
должны быть реализованы сл. методы:
-метод инициализации Init
-ввод с клавиатуры Read
-вывод на экран Display
-преобразование в строку to String
1. тип данных представляется структурой с необходимыми полями, операции реализуются, как внешние функции, которые получают объекты данного типа в качестве оргументов
2. как класс с закрытыми полями,где операции реализуются как методы класса
3. инкапсулировать поля класса в независимой структуре и в ней реализовать методы Init(), Read(), Display(), to String(). в основном классе должно быть одно поле данных, представляемое объектом -структурой
 
T

tansa

#3
Molodoj chelowek... W zhizni, kazhdyj, dolzhen takuju progu napisat sam. Potomu chto eto 15 minut raboty. A mnogie k tebe po-drugomu otnositsia budut. A glawnoe sam k sebe budesh po-drugomu otnositsia.
 
L

lACl

#4
Ну или если лень писать самому и готов заплатить: стучись в аську 367244151
 
G

gnomik

#5
Для: tansa
я не молодой человек!!!!!!!я девушка!и Это вам 15 минут писать,а я вообще в этом ничего не понимаю! :(
 
?

????

#6
за 1 минуту в яндексе нашел
Код:
#include <iostream.h> // overlfriend.cpp
class complex
{
double real, imag;

public:
complex(double r=0, double i=0) { real=r; imag=i; };
friend complex operator+(complex,complex);
friend complex operator*(complex,complex);
void outp(){cout<<"real= "<<real<<" imag= "<<imag<<endl;};
};

complex operator+(complex a1, complex a2)
{
return complex(a1.real+a2.real, a1.imag+a2.imag);
}
complex operator*(complex a1, complex a2)
{
return complex((a1.real*a2.real)+(a1.imag*a2.imag),(a1.real*a2.imag+a1.imag*a2.real));
}

int main(int argc, char* argv[])
{
complex c1(3.5,4.8),c2(1.2,9.4),c3,c4;

int i;

c3=c1+c2*c1;
c3.outp();
c3=c1*c2;
c3.outp();
c4=c3+complex(1.2,3.5);
c4.outp();

cin>>i;
return 0;
}
есть сложение и умножение. остальное дописать оставляю тебе :(
 
T

tansa

#7
<!--QuoteBegin-????+2:05:2007, 11:48 -->
<span class="vbquote">(???? @ 2:05:2007, 11:48 )</span><!--QuoteEBegin-->за 1 минуту в яндексе нашел
[snapback]64259" rel="nofollow" target="_blank[/snapback]​
[/quote]
Мне честно даже яндекс открывать лень было....

Для: gnomik
Ну тогда извините, не в коем случае не хотел обидеть, но признаков пола я не встретил :)



А что по коду, то можно добавить сет-гет методы и тогда эти операторы не должны будут быть friend.
 
G

gnomik

#8
Для: tansa
что за сет-гет методы???? вот что я добавила!

//---------------------------------------------------------------------------
#include<math.h>
#include <iostream.h> // overlfriend.cpp
class complex
{
double real, imag;

public:
complex(double r=0.0, double i=0.0) { real=r; imag=i; };
friend complex operator+(complex,complex);
friend complex operator*(complex,complex);
friend complex operator-(complex,complex);
friend complex operator/(complex,complex);

void display(){cout<<"real= "<<real<<" imag= "<<imag<<endl;};

};

complex operator+(complex a1, complex a2)
{
return complex(a1.real+a2.real, a1.imag+a2.imag);
}
complex operator*(complex a1, complex a2)
{
return complex((a1.real*a2.real)-(a1.imag*a2.imag),(a1.real*a2.imag+a1.imag*a2.real));
}
complex operator-(complex a1, complex a2)
{
return complex(a1.real-a2.real, a1.imag-a2.imag);
}

complex operator/(complex a1, complex a2)
{
return complex(((a1.real*a2.real+a1.imag*a2.imag),(a1.imag*a2.real-a1.real*a2.imag))/((pow(a2.real,2)+pow(a2.imag,2))));
}

complex operator*(complex a1, complex a2);

int main(int argc, char* argv[])
{
complex c1(3.5,4.8),c2(1.2,9.4),c3,c4;

int i;

c3=c1+c2;
c3.display();
c3=c1*c2;
c3.display();
c3=c1-c2;
c3.display();
c3=c1/c2;
c3.display();
cin>>i;
return 0;
}


а вот как дальше чего-то не пойму! :) :unsure:
 
M

MusicMan

#9
Помогите пожалуйста!!!

Задачка то простая!

Дана произвольная квадратная матрица. Удалить из неё строку и столбец на пересечении которой находится максимальный элемент данной диагонали.

Пример:
существует массив
1 2 3
4 5 6
7 8 9

Максимальный элемент - 9, удаляем строку 3 и столб 3.

Помогите плиз!
 
G

GRLEX

#10
Что то в этом роде, но на ошибки проверяй, бо писал в блакноте :)
//**********************
int Mas[10][10];
int ResMas[9][9];
//====== Находим максимальное и его индексы ======
void FindMax(int *iMax, int *jMax)
{
int Max = Mas[0][0];
*iMax = 0;
*jMax = 0;
for(int i = 0; i<10 ;i++)
for(int j = 0; j<10; j++)
if(Max < Mas[j])
{
Max = Mas[j];
*iMax = i;
*jMax = j;
}
}
//====== Переписываем в результирующий массив ====
void main()
{
int Max,iMax,jMax;
int n = 0, m = 0;
FindMax(&iMax,&jMax);
for(int i = 0; i<9; i++ )
if(i != iMax)
{
for(int j = 0; j<9; j++)
if(j != jMax)
{
ResMas[n][m] = Mas[j];
m++;
}
n++;
}

}
//*********************
 
M

MusicMan

#11
Условие задачи:
существует двумерный массив. Удалить строку и столбец, на пересечении которых находится максимальный элемент.
Поясню:

1 5 9
6 3 1
2 4 8

Максимальный элемент = 9, значит удаляем строку №1 и столбец №3.

Посмотрите, вот я написал программу на половину.
Есть косяки, которые я исправить немогу, незнаю как. Помогите пожалуста.
Вот исходник программы, написанный мной.

#include <stdio.h>
#include <iomanip.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define IC for (i=0;i<n;i++)
#define JC for (j=0;j<n;j++)

int i,j,n;
int A[100][100];
int Anew[100][100];
void print_matrix(void);

int main(void)
{
cout<<"Vvedite razmernost massiva: "<<ends;
cin>>n;
cout<<"Vvedite "<<n*n<<" elementov massiva:"<<endl;
IC
JC
cin>>A[j];
print_matrix();
return 0;
}


void print_matrix(void)
{
cout<<"Massiv: "<<endl;
cout<<"\n==================="<<endl;
IC
{
JC
cout<<setprecision(4)<<setw(5)<<A[j];
cout<<endl;
}



cout<<"==================="<<endl;

int max;
max=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(A[j]>max)
max=A[j];
cout<<"Maximalniy element: "<<max;
int mas = A[0][0],mrow,mcol;
{ IC

JC
if(A[j]>max)
max=A[j];
mrow =i;
mcol =j;
}
cout<<"\nKoordinati max. elementa: ["<<mrow<<"]["<<mcol<<"]";


getch();
}


Вот там где присваиваются значения номер строки и номер столбца переменным mrow и mcol почему то не работают в выводе строки. И помогите дальше дописать, создать новый массив, уже с удалённой строчкой и столбцом.



Помогите пожалуста, завтра нужно сдать уже.
 

SunSanych

Well-known member
28.06.2006
71
0
#12
Вот, если ещё нужно.

Код:
#include <iomanip.h>
#include <conio.h>
#include <string.h>

int n;
int* A;
//int A[100][100];
//int Anew[100][100];
void print_matrix(void);

int main(void)
{
n = 0;

cout<<"Vvedite razmernost massiva: "<<ends;
cin>>n;
cout<<"Vvedite "<<n*n<<" elementov massiva:"<<endl;

// Вместо статического массива создаём динамический
// размером n X n
A = new int[n*n];
// Заполним 0-ми выделенную память
memset(A, 0, n*n*sizeof(int) );

for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
cin >> A[i*n+j];

print_matrix();

delete A;

return 0;
}


void print_matrix(void)
{
int i, j;

cout<<"Massiv: "<<endl;
cout<<"\n==================="<<endl;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
cout<<setprecision(4)<<setw(5)<<A[i*n+j];

cout<<endl;
}

cout<<"==================="<<endl;

int max = 0;
int mrow = 0;
int mcol = 0;

for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(A[i*n+j]>max)
{
max=A[i*n+j];
mrow = i;
mcol = j;
}
}

cout<<"Maximalniy element: "<<max;
cout<<"\nKoordinati max. elementa: ["<<mrow<<"]["<<mcol<<"]"<<endl<<endl;

int nNew = n-1;
int iNew=0, jNew=0;
int* Anew = new int[nNew*nNew];

for(i=0; i<n; i++)
{
if(i != mrow)
{
for(j=0; j<n; j++)
{
if(j != mcol)
{
Anew[iNew*nNew+jNew] = A[i*n+j];
jNew++;
}
}
iNew++;
jNew=0;
}
}

cout<<"New Massiv: "<<endl;
cout<<"\n==================="<<endl;
for(i=0; i<nNew; i++)
{
for(j=0; j<nNew; j++)
cout<<setprecision(4)<<setw(5)<<Anew[i*nNew+j];

cout<<endl;
}

cout<<"==================="<<endl;

delete Anew;

getch();
}
Без проверки на ошибки и т.д и т.п. Я бы писал не так, но что есть, то есть. Кстати можно обойтись и без создания нового массива, а вывод делать из исходного с пропуском нужного столбца и колонки.
 
S

student

#14
Помогите пожалуйста.

Тексты задач:
1. Описать структуру с именем STUDENT, содержащую следующие поля: NAME — фамилия и инициалы; NOMER — номер студенческого билета; STIP — размер стипендии и сформировать массив STUD1 состоящий из восьми структур типа STUDENT; записи должны быть неупорядочены по любому из полей.
Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по алфавиту; вывод на дисплей фамилий и номеров студенческих билетов для всех студентов, включенных в массив, не имеющих стипендии; если таковых нет, вывести соответствующее сообщение.

2.Описать структуру с именем TRAIN, содержащую следующие поля: NAZN – название пункта назначения; NUMR – номер поезда; TIME – время отправления и сформировать массив RASP состоящий из восьми структур типа TRAIN; записи должны быть неупорядочены по любому из полей.
Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по алфавиту по названию пунктов назначения; вывод на экран информации о поездах, отправляющихся после введённого с клавиатуры времени; если таких поездов нет, вывести соответствующее сообщение.

3.Описать структуру с именем TRAIN, содержащую следующие поля: NAZN – название пункта назначения; NUMR – номер поезда; TIME – время отправления и сформировать массив RASP состоящий из восьми структур типа TRAIN; записи должны быть неупорядочены по любому из полей.
Выполнить следующие действия: вывод на дисплей содержимого массива, упорядоченного по времени отправления поезда; вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; если таких поездов нет, вывести на дисплей соответствующее сообщение.

4.Написать 2 программы копирования файлов.
Имена файлов для копирования задаются в командной строке: причем 1-ый аргумент – это имя файла, откуда копируют, а 2-ой аргумент - это имя файла, куда надо скопировать информацию.
В 1-ой программе использовать бесформатный ввод-вывод верхнего уровня. Для этого создать буфер ввода-вывода размером
8 – 16 Кб.
Во 2-ой программе использовать ввод-вывод нижнего уровня.

Заранее благодарен)))
 
Статус
Закрыто для дальнейших ответов.