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

Нужно исправить класс комплексных чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму цифр числа, находящихся на четных позициях http://www.cyberforum.ru/cpp-beginners/thread685492.html
Дано натуральное число N.Найти сумму его цифр,находящихся на четных позициях.Позиции нумеруются слева направо. Подскажите пожалуйста к каким операндом следует обратиться и с коментариями пож.
C++ Проверка на правильность ввода Помогите с проверкой на ввод.. как именно должна выглядеть проверка для данного кода..? #include "stdafx.h" #include <iostream> #include <fstream> #include <string> #include <windows.h> using namespace std; int main() http://www.cyberforum.ru/cpp-beginners/thread685457.html
Из заданной строки вывести все слова, начинающиеся с маленькой буквы C++
Всем привет, помогите решить задачку на C++ билдер.. Не могу понять с чего начать . Из заданной строки вывести все слова, начинающиеся с маленькой буквы, чтобы в каждой строке на экране было по три слова. Написал только это, дальше не знаю что делать, подскажите #include <clx.h> #include <conio.h> #include <stdio.h> #pragma hdrstop
C++ Разбить быструю сортировку на 4 функции
Здравствуйте! www.cyberforum.ru/cpp-beginners/thread197432.html нужно разбить быструю сортировку на 4 функции 1) void swap (int*array, int pos1, int pos2) 2) int partition (int*array, int head, int fail, int pe index) 3) void qsheper(int*array, int head, int fail) 4) void quick sort(int*arrray, int size)
C++ Заменить в строке S1 первые, последнее и все вхождения строки S2 на S3 http://www.cyberforum.ru/cpp-beginners/thread685435.html
Вот программа к задаче! Вот в чем вопрос, как работает вот это cin.getline(text,1024); и можно ли обойтись без него? Пожалуйста с примером, если нетрудно)) Даны три строки: S1, S2, S3. Заменить в строке S1 первые, последнее и все вхождения строки S2 на S3. #include <iostream> #include <cstdlib> #include <cstring> using namespace std; int main()
C++ Пользователь вводит 10 чисел программа должна выдать 2 максимальных(берём от 1 до 10,если выпадает 2 10,то программа должна выдать 2 10,а не 10,9) #include <iostream> using namespace std; int main () { int number, largest_1, largest_2, counter = 1; cout«"Vvedite 1oe chislo: "; cin»number; largest_1 = largest_2 = number; подробнее

Показать сообщение отдельно
Coon532
Сообщений: n/a

Нужно исправить класс комплексных чисел - C++

31.10.2012, 19:56. Просмотров 232. Ответов 0
Метки (Все метки)

Программа написана в среде visual studio 2010, прошу помочь исправить ошибку, а именно выводит на значения, а лишь указатель на некоторый раздел памяти (программа должна выполнять сложение и умножение векторов из комплексных чисел, любой размерности):


#include <iostream>
using namespace std;
typedef unsigned int ripper;
typedef const int N;
class Complex
{
private:
double real;
double image;
public:
Complex();
Complex(N n);
Complex operator+(Complex );
Complex operator-(Complex );
Complex operator*(Complex );
Complex operator/(Complex );
Complex &operator=(Complex );
friend ostream &operator<<(ostream &, Complex &);
friend istream &operator>>(istream &, Complex &);
};
class SqMatrublic Complex
{
private:
Complex **p;
ripper nStr, nStolb;
public:

SqMatr (ripper row, ripper col );
SqMatr (const SqMatr &obj);
~SqMatr ();
void fill (ripper N);
void getSize (ripper &row, ripper &col);
void print();
SqMatr multiplication (const SqMatr &obj);
SqMatr operator +(SqMatr );
SqMatr &operator =(SqMatr );
SqMatr Sum(SqMatr obj);
};
#include <iostream>
#include <ctime>
#include "headerVect.h"
using namespace std;
Complex::Complex()
{
if((real==0)&&(image==0))
{
cout<<"Empty spaces"<<endl;
system("pause");
return;
}
image=rand()+7;
real=rand()-10;

}
Complex::Complex(N n)
{
N k=5;
srand(k-1);
if((real==0)&&(image==0))
{
cout<<"Empty spaces"<<endl;
system("pause");
return;
}
real=rand()-k;
image=rand()+k;
}
Complex Complex::operator+(Complex fp1)
{
Complex b;
b.real=real+fp1.real;
b.image=image+fp1.image;

return b;

}
Complex Complex::operator-(Complex fp1)
{
Complex b;
b.real=real-fp1.real;
b.image=image-fp1.image;
return b;
}
Complex Complex::operator*(Complex fp1)
{
double i, j;
i= real * fp1.real- image * fp1.image;
j = real * fp1.image + fp1.real * image;
fp1.real = i;
fp1.image = j;
return fp1;
}
Complex Complex::operator/(Complex fp1)
{
double k, i, j;
k = fp1.real * fp1.real + fp1.image * fp1.image;
i = (real * fp1.real + image * fp1.image) / k;
j = (fp1.real * image - real * fp1.image) / k;
fp1.real = i;
fp1.image = j;
return fp1;
}
Complex &Complex::operator=(Complex ob)
{
real=ob.real;
image=ob.image;
return *this;
}
ostream &operator<< (ostream &fo, Complex &fp)
{
fo<<" coordinate :" << fp.real <<"+(" << fp.image<< ")*i"<<endl<< "\n";
return fo;
}
istream &operator>>(istream &fi, Complex &fp)
{
cout << "Введите действительную часть :";
fi>>fp.real;
cout << "Введите мнимую часть :";
fi>>fp.image;
cout<<"\n";
return fi;
}

SqMatr::SqMatr (ripper str, ripper stolb): nStr(str>0 && stolb>0 ? str:0),nStolb(str> 0 && stolb>0 ? stolb:0)
{
if (nStr==0)
{
p=NULL;
return;
}
p=new Complex* [nStr];
*p=new Complex [nStr*nStolb+1];
for (ripper i=1; i<nStr; i++)
p[i]=p[i-1]+nStolb;
}

SqMatr::SqMatr (const SqMatr &obj):
nStr(obj.nStr),
nStolb(obj.nStolb)
{
if (nStr==0)
{
p=NULL;
return;
}

p=new Complex*[nStr];
*p=new Complex[nStr*nStolb+1];
for(ripper i=1; i<nStr; i++)
{
if (i==0)
p[i]=p[i-1]+nStolb;

for(ripper j=0; j<nStolb; j++)
p[i][j]=obj.p[i][j];
}
}

SqMatr::~SqMatr()
{
if (p!=NULL)
{
delete[] *p;
delete[] p;
}
}

void SqMatr::fill (ripper N)
{
for (ripper i=0; i<nStr; i++)
for (ripper j=0; j<nStolb; j++)
{
cout<<"Vvedite ["<<i+1<<"]"<<"["<<j+1<<"]"<<" element massiva: ";
cin>>p[i][j];
}
}

void SqMatr::getSize (ripper &row, ripper &col)
{
row=nStr;
col=nStolb;
}

void SqMatr:rint()
{
for (ripper i=0; i<nStr; i++)
{
for (ripper j=0; j<nStolb; j++)
{
cout.width(5);
cout<<this->p[i][j];
}
cout<<endl;
}
}
SqMatr SqMatr::multiplication(const SqMatr &obj)
{
if ( this->nStolb!= obj.nStr )
{
cout << "Different sizes" << endl;
throw "Error";
}
Complex **c = new Complex* [this->nStr];
*c = new Complex [this->nStr*obj.nStolb+1];
for (ripper i = 1; i < this->nStr; i++)
c[i] = c[i-1] + obj.nStolb;

for (ripper i = 0; i < this->nStr; i++)
for (ripper j = 0; j < this->nStolb; j++)
{
c[i][j] = 0;
for (ripper k = 0; k < this->nStolb; k++)
c[i][j] =c[i][j] + this->p[i][k] * obj.p[k][j];
}
delete[] *p;
delete[] p;
this->p = c;
*(this->p)=*c;
this->nStolb = obj.nStolb;
return *this;
}
SqMatr SqMatr::operator+(SqMatr ob)
{

if ((this->nStr!= ob.nStr)&&(this->nStolb!=ob.nStolb))
{
cout << "Different sizes" << endl;
//throw "Error";
}
SqMatr C(nStr, nStolb);
for(ripper i=0; i<nStr; ++i)
for(ripper j=0; j<nStolb; ++j)
C.p[i][j]=p[i][j]+ ob.p[i][j];
return *this;
}
SqMatr SqMatr::Sum(SqMatr ob)
{
if ((this->nStr!= ob.nStr)&&(this->nStolb!=ob.nStolb))
{
cout << "Different sizes" << endl;
}
SqMatr C(nStr, nStolb);
for(ripper i=0; i<nStr; ++i)
for(ripper j=0; j<nStolb; ++j)
C.p[i][j]=p[i][j]+ob.p[i][j];
return *this;
}
SqMatr &SqMatr::operator=(SqMatr obj)
{
SqMatr c(nStr, nStolb);
for(ripper i=0 ;i<nStr; ++i)
for(ripper j=0; j<nStolb; ++j)
c.p[i][j]=obj.p[i][j];
return *this;
}

#include<iostream>
#include "headerVect.h"
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
int n;
cout<<"Put in the number of n coordinates of both vectors :"<<"\n";
cin>>n;
SqMatr a(1, n), b(1, n), c(1, n);
cout<<"Put in the coordinates of the first vector :"<<"\n";
a.fill(5);
a.print();
cout<<"\n";
cout<<"Put in the coordinates of the second vector :"<<"\n";
b.fill(7);
b.print();
cout<<"New Matrix of multiplication is :";
a.multiplication(b);
a.print();
cout<<"\n";
cout<<"The summary is :"<<"\n";
c=a+b;
c.print();
//cout<<"function summary :"<<"\n";
//c.Sum(a, b);
//c.print();
//cout<<"another summary :"<<"\n";
//cout<<a+b;
system("PAUSE");
}

Прошу отнестись с пониманием-это мой первый опыт с наследованиями в с++. Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru