Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )


> помогите решить задачу на с++!, Задача на создание класса complex
gnomik
Вставить ник
сообщение 29:04:2007, 18:30
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 3
Регистрация: 29:04:2007
Пользователь №: 10 557



Репутация:   0  


комплексное число представленое парой действительных чисел ( 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(). в основном классе должно быть одно поле данных, представляемое объектом -структурой
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 12)
European
Вставить ник
сообщение 30:04:2007, 08:08
Цитата Ответить 


Божественный
Иконка группы

Группа: Модеры
Сообщений: 2 013
Регистрация: 4:09:2006
Из: Минск
Пользователь №: 6 316



Репутация:   32  


]]>http://forum.codeby.net/topic13964.html]]>
Подняться вверх 
 
Сообщение #2
tansa
Вставить ник
сообщение 30:04:2007, 09:38
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 46
Регистрация: 24:04:2007
Пользователь №: 10 453



Репутация:   1  


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.
Подняться вверх 
 
Сообщение #3
lACl
Вставить ник
сообщение 30:04:2007, 21:31
Цитата Ответить 


Новенький
Иконка группы

Группа: Программист
Сообщений: 17
Регистрация: 27:02:2007
Пользователь №: 9 457



Репутация:   0  


Ну или если лень писать самому и готов заплатить: стучись в аську 367244151
Подняться вверх 
 
Сообщение #4
gnomik
Вставить ник
сообщение 2:05:2007, 06:38
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 3
Регистрация: 29:04:2007
Пользователь №: 10 557



Репутация:   0  


Для: tansa
я не молодой человек!!!!!!!я девушка!и Это вам 15 минут писать,а я вообще в этом ничего не понимаю! unsure.gif
Подняться вверх 
 
Сообщение #5
????
Вставить ник
сообщение 2:05:2007, 09:48
Цитата Ответить 


Почетный секретчик
Иконка группы

Группа: Модеры
Сообщений: 1 191
Регистрация: 30:09:2003
Из: Брест
Пользователь №: 58



Репутация:   3  


за 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;
}


есть сложение и умножение. остальное дописать оставляю тебе wink.gif
Подняться вверх 
 
Сообщение #6
tansa
Вставить ник
сообщение 2:05:2007, 15:46
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 46
Регистрация: 24:04:2007
Пользователь №: 10 453



Репутация:   1  


Цитата(???? @ 2:05:2007, 11:48 )
за 1 минуту в яндексе нашел
*

Мне честно даже яндекс открывать лень было....

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



А что по коду, то можно добавить сет-гет методы и тогда эти операторы не должны будут быть friend.
Подняться вверх 
 
Сообщение #7
gnomik
Вставить ник
сообщение 2:05:2007, 16:18
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 3
Регистрация: 29:04:2007
Пользователь №: 10 557



Репутация:   0  


Для: 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;
}


а вот как дальше чего-то не пойму! dry.gif unsure.gif
Подняться вверх 
 
Сообщение #8
MusicMan
Вставить ник
сообщение 10:05:2007, 17:45
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 6
Регистрация: 8:05:2007
Пользователь №: 10 726



Репутация:   -1  


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

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

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

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

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

Помогите плиз!
Подняться вверх 
 
Сообщение #9
GRLEX
Вставить ник
сообщение 11:05:2007, 07:58
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 59
Регистрация: 5:04:2007
Пользователь №: 10 093



Репутация:   0  


Что то в этом роде, но на ошибки проверяй, бо писал в блакноте smile.gif
//**********************
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[i][j])
{
Max = Mas[i][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[i][j];
m++;
}
n++;
}

}
//*********************
Подняться вверх 
 
Сообщение #10
MusicMan
Вставить ник
сообщение 16:05:2007, 19:18
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 6
Регистрация: 8:05:2007
Пользователь №: 10 726



Репутация:   -1  


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

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 почему то не работают в выводе строки. И помогите дальше дописать, создать новый массив, уже с удалённой строчкой и столбцом.



Помогите пожалуста, завтра нужно сдать уже.
Подняться вверх 
 
Сообщение #11
SunSanych
Вставить ник
сообщение 17:05:2007, 08:21
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 62
Регистрация: 28:06:2006
Пользователь №: 5 086



Репутация:   2  


Вот, если ещё нужно.

#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();
}


Без проверки на ошибки и т.д и т.п. Я бы писал не так, но что есть, то есть. Кстати можно обойтись и без создания нового массива, а вывод делать из исходного с пропуском нужного столбца и колонки.
Подняться вверх 
 
Сообщение #12
MusicMan
Вставить ник
сообщение 17:05:2007, 16:30
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 6
Регистрация: 8:05:2007
Пользователь №: 10 726



Репутация:   -1  


2SunSanych: Спасибо тебе огромное!!!
Подняться вверх 
 
Сообщение #13


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись |  AJAX?
   

 

RSS Текстовая версия Сейчас: 2:12:2008 - 21:18

с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net