Форум программистов, компьютерный форум 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++ Qt Вычислить среднее арифметическое последовательности дробных чисел, вводимых из файла
Задание 1. Написать программу, которая вычисляет среднее арифметическое последовательности дробных чисел, вводимых из файла. После ввода последнего числа программа должна вывести минимальное и максимальное число последовательности. Количество чисел последовательности должно задаваться первым числом во входном файле. Вот что я смог сделать. #include <QtCore> int main(int argc, char *argv) { ...
C++ Разбить быструю сортировку на 4 функции http://www.cyberforum.ru/cpp-beginners/thread685440.html
Здравствуйте! 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 Вот программа к задаче! Вот в чем вопрос, как работает вот это cin.getline(text,1024); и можно ли обойтись без него? Пожалуйста с примером, если нетрудно)) Даны три строки: S1, S2, S3. Заменить в строке S1 первые, последнее и все вхождения строки S2 на S3. #include <iostream> #include <cstdlib> #include <cstring> using namespace std; int main() подробнее

Показать сообщение отдельно
Coon532
Сообщений: n/a
31.10.2012, 19:56     Нужно исправить класс комплексных чисел
Программа написана в среде 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");
}

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