Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.64
provayder
#1

Написать программу класс Вектор на С++ - C++

28.11.2010, 19:14. Просмотров 1832. Ответов 4
Метки нет (Все метки)

Берем два вектора. Потом для каждого вектора просим ввести его размерность (то есть ввести количество точек вектора), для того чтобы выяснить возможные или невозможные операции над векторами. Если размерности разные - выводим ошибку иначе, если они одинаковы, выполнить над ними операции(сложение, вычетание, умножение и умножение на скаляр).

Что неправильно. И как ее исправить. Вот моя программа.

#include
#include
using namespace std;
int r;int scl;
class vector {
public:
vector(void); //Конструктор
~vector();
void Intput();
void Output();
friend vector operator+(vector a, vector b);
friend vector operator-(vector a, vector b);
friend vector operator*(vector a, vector b);
friend vector operator*(vector a, double scalar);

private:
int x[100];
};
vector::vector(void)
{
x[100]=0;
}

vector::~vector()
{
cout << "Vector destructor..." << endl;
}

void vector::Intput()
{
for (int i=0; i {
cout<<"Vvedite znachenie "< cin>>x[i];
}
}

void vector::Output()
{
cout<<"\t (";
for(int i=0; i {
cout<<" "< }
cout<<" )"< }

vector operator+(vector a, vector b)
{
vector sum;
for(int i=0;i {
sum.x[i] = a.x[i] + b.x[i];
}
return sum;
}

vector operator-(vector a, vector b)
{
vector vuch;
for(int i=0;i {
vuch.x[i] = a.x[i] - b.x[i];
}
return vuch;
}

vector operator*(vector a, vector b)
{
vector mn;
for(int i=0;i {
mn.x[i] = a.x[i] * b.x[i];
}
return mn;

}

vector operator*(vector a, int scl)
{
vector mns;
for(int i=0;i {
mns.x[i] = a.x[i] * scl;
}
return mns;

}


int main()
{
vector a, b, c;
int r1,r2;
cout<<"Enter data:"<
cout<<"Vvedite scalar! SCL: "< cin>>scl;
cout<<"Vvedite razmernost' 1 vectora: ";
cin>>r1;
r=r1;
a.Intput();
cout< cout<<"Vvedite razmernost' 2 vectora: ";
cin>>r2;
r=r2;
b.Intput();
//Proverka razmernosti
if(r1!=r2)
{
cout<<"Error!"< return 0;
}
else
{
cout<<"Vse OK!"< }

a.Output();
b.Output();

c=a+b;
cout<<"\n\tSlozhenie:"< c.Output();

c=a-b;
cout<<"\n\tVuchetanie:"< c.Output();

c=a*b;
cout<<"\n\tYmnozenie V*V:"< c.Output();

c=a*scl;
cout<<"\n\tYmnozenie V*SCL:"< c.Output();


return 0;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2010, 19:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу класс Вектор на С++ (C++):

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Помогите отладить программу: Разработать класс, содержащий вектор длинных целых чисел - C++
Всем привет. Нужна ваша помощь. Ниже задания что бы вы были в курсе что я делаю. Примерно половину заданий я уже выполнил, однако есть кое...

Написать класс по строительству домов. Написать программу, демонстрирующую работу с классом. - C++
Собственно, в С++ немного насасываю, код читать умею, а прогать - нет. К сожалению, обстоятельства сложились так, что я поступил именно...

Написать программу умножения квадраной матрицы на вектор - C++
Дана квадратная матрица А размером n*n и вектор а = (a1, a2, ..., an). Написать программу вычисления вектора b = A*a. Добавлено через...

Написать программу: составить вектор из массива заданным образом - C++
Привет,помогите решить такую задачку: a) Массив размерностью 5 на 8 из элементов целого типа в диапазоне ; b) Сформировать из исходной...

Написать класс "вектор на плоскости" заданный в системе декартовых координат - C++
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и...

4
asics
Freelance
Эксперт С++
2848 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
28.11.2010, 19:18 #2
Вектор наподобие STL
0
provayder
28.11.2010, 19:25 #3
Цитата Сообщение от provayder Посмотреть сообщение
Берем два вектора. Потом для каждого вектора просим ввести его размерность (то есть ввести количество точек вектора), для того чтобы выяснить возможные или невозможные операции над векторами. Если размерности разные - выводим ошибку иначе, если они одинаковы, выполнить над ними операции(сложение, вычетание, умножение и умножение на скаляр).

Что неправильно. И как ее исправить. Вот моя программа.

#include
#include
using namespace std;
int r;int scl;
class vector {
public:
vector(void); //Конструктор
~vector();
void Intput();
void Output();
friend vector operator+(vector a, vector b);
friend vector operator-(vector a, vector b);
friend vector operator*(vector a, vector b);
friend vector operator*(vector a, double scalar);

private:
int x[100];
};
vector::vector(void)
{
x[100]=0;
}

vector::~vector()
{
cout << "Vector destructor..." << endl;
}

void vector::Intput()
{
for (int i=0; i {
cout<<"Vvedite znachenie "< cin>>x[i];
}
}

void vector::Output()
{
cout<<"\t (";
for(int i=0; i {
cout<<" "< }
cout<<" )"< }

vector operator+(vector a, vector b)
{
vector sum;
for(int i=0;i {
sum.x[i] = a.x[i] + b.x[i];
}
return sum;
}

vector operator-(vector a, vector b)
{
vector vuch;
for(int i=0;i {
vuch.x[i] = a.x[i] - b.x[i];
}
return vuch;
}

vector operator*(vector a, vector b)
{
vector mn;
for(int i=0;i {
mn.x[i] = a.x[i] * b.x[i];
}
return mn;

}

vector operator*(vector a, int scl)
{
vector mns;
for(int i=0;i {
mns.x[i] = a.x[i] * scl;
}
return mns;

}


int main()
{
vector a, b, c;
int r1,r2;
cout<<"Enter data:"<
cout<<"Vvedite scalar! SCL: "< cin>>scl;
cout<<"Vvedite razmernost' 1 vectora: ";
cin>>r1;
r=r1;
a.Intput();
cout< cout<<"Vvedite razmernost' 2 vectora: ";
cin>>r2;
r=r2;
b.Intput();
//Proverka razmernosti
if(r1!=r2)
{
cout<<"Error!"< return 0;
}
else
{
cout<<"Vse OK!"< }

a.Output();
b.Output();

c=a+b;
cout<<"\n\tSlozhenie:"< c.Output();

c=a-b;
cout<<"\n\tVuchetanie:"< c.Output();

c=a*b;
cout<<"\n\tYmnozenie V*V:"< c.Output();

c=a*scl;
cout<<"\n\tYmnozenie V*SCL:"< c.Output();


return 0;
}
Если что пишите ответы на мыло rivz2006@mail.ru

Добавлено через 3 минуты
Цитата Сообщение от asics Посмотреть сообщение
А конкретней можна. Таких тем, сайтов, документов есть много но программа плохо работает и нужно переменную r зделать локальной.
romedal
54 / 54 / 1
Регистрация: 18.03.2010
Сообщений: 345
Записей в блоге: 1
29.11.2010, 00:16 #4
Возможно, следует действительно использовать контейнер valarray из STL

C++
1
2
3
4
cin>>razm1;
cin>>razm2;
valarray<int> matr1 (razm1);
valarray<int> matr2 (razm2);
для этих контейнеров уже есть перегруженные операции "-","+","*","\";
0
Vorox
25 / 24 / 3
Регистрация: 26.11.2010
Сообщений: 57
Завершенные тесты: 1
29.11.2010, 01:21 #5
Тут скорее всего задание и состоит в изучении перегружаемых операторов.
0
29.11.2010, 01:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2010, 01:21
Привет! Вот еще темы с ответами:

Как написать класс "вектор" на С++ - C++
Нужно написать класс для нумерации элементов вектора не с 0, а любыми символами.... К примеру в паскалеподобных языках такое осуществимо....

Создайте класс employee. Как написать программу? - C++
Создайте класс employee. Класс должен включать поле (массив) типа char для хранения фамилии сотрудника, 2 поля типа string для хранения...

Написать программу, которая использует класс string - C++
Вечер добрый господа, суть задачи такова. Написать программу, которая использует класс string для анализа строки, содержащей...

Определить класс с именем STUDENT. Написать программу на C++ - C++
1. Определить класс с именем STUDENT, содержащий следующие поля: а) Фамилия и инициалы; б) Номер группы; в) Успеваемость (массив из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru