Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2016, 09:25   #1
Pinguin007
Пользователь
 
Регистрация: 26.02.2016
Сообщений: 14
По умолчанию c++ дружественные функции

Есть программа калькулятор матрица
Я использовал класс, мне нужно использовать дружественную функцию
У меня есть идея создать 2 класса, один класс создает и выводит матрицу ,2 операции над матрицами.И я хочу вызвать методы из 1 класса в 2 с помощью дружественной функции но не знаю как сделать.
код
Код:
#pragma once
#include <string>
using namespace std;

class sq
{

	double **a;
	int r;
	int c;
public:
	sq();
	void set();
	void get();
	~sq();
};
Код:
#include "sq.h"
#include  <iostream>




sq::sq()
{
}


void sq ::set()
{
	setlocale(LC_ALL, "Russian");
	cout << "Введите Матрицу" << c << "x" << r << endl;
	double **a = new double*[r];
	for (int i = 0; i < r; i++)
	{
		a[i] = new double[c];
		for (int j = 0; j < c; j++)
		{
			cin >> a[i][j];
		}
	}


}
void sq::get()
{
	
	for (int i = 0; i < r; i++)
	{
		for (int j = 0; j < c; j++)
		{
			cout << a[i][j] << " ";
		}
		cout << endl;
	}


}

sq::~sq()
{
}
Код:
void Matr::menu()
{
	string s;
	setlocale(LC_ALL, "Russian");

	cout << "1 Сложение матриц " << endl;
	cout << "2 Вычитание Матриц" << endl;
	cout << "3 Умножение Матриц" << endl;
	cout << "4 Деление Матриц" << endl;
	cout << "5 Проверка на равенство" << endl;
	cout << "6 Обратная Матрица" << endl;
	cout << "7 траспонирование " << endl;
	cout << "8 возведение" << endl;
	cout << "9 Вычисление Детерминанты " << endl;
	cout << "10 вычисление нормы " << endl;
	cout << "11 Тип Матрицы" << endl;
	cout << "12 Разделение матриц на число" << endl;
	cout << "13 Умножение матрицы на число" << endl;
	cin >> s;
	if (s == "1")
	{
		cout << "1 Сложение матриц " << endl;
		Matr c;
		int cc, cr, cc2, cr2;
		cout << "Введите кол-во стобцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Введите кол-во стобцов и строк второй матрицы" << endl;
		cin >> cc2 >> cr2;
		Matr b(cc2, cr2);
		if (a.r == b.r && a.c == b.c)
		{
			cout << "Заполните матрицу" << endl;
			set(a);
			get(a);
			cout << "Заполните 2 матрицу" << endl;
			set(b);
			get(b);
			c = a + b;
			cout << "Результат" << endl;
			get(c);
			menu();

		}
		else {
			cout << "ОШИБКА ! Матрица не могут быть сложены " << endl;
			menu();
		}
	}
	else if (s == "2")
	{
		cout << "Вычитание матриц" << endl;
		Matr c;
		int cc, cr, cc2, cr2;
		cout << "Введите кол-во стобцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Введите кол-во стобцов и строк второй матрицы" << endl;
		cin >> cc2 >> cr2;
		Matr b(cc2, cr2);
		if (a.r == b.r && a.c == b.c) {
			cout << "Заполните матрицу" << endl;
			set(a);
			cout << " " << endl;
			get(a);
			cout << "Заполните 2 матрицу" << endl;
			get(b);
			cout << " " << endl;
			get(b);
			c = a - b;
			cout << "Результат:" << endl;
			get(c);
			menu();
		}
		else
		{
			cout << "ОШИБКА !  " << endl;
			menu();
		}
	}
	else if (s == "3")
	{
		cout << "Умножение матриц" << endl;
		Matr c;
		int cc, cr, cc2, cr2;
		cout << "Введите кол-во стобцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Введите кол-во стобцов и строк второй матрицы" << endl;
		cin >> cc2 >> cr2;
		Matr b(cc2, cr2);
		if (a.c == b.r)
		{
			cout << "Заполните матрицу" << endl;
			set(a);
			cout << " " << endl;
			get(a);
			cout << "Заполните 2 матрицу" << endl;
			set(b);
			cout << " " << endl;
			get(b);
			c = a*b;
			cout << "Результат:" << endl;
			get(c);
			menu();
		}
		else {
			cout << "ERROR! " << endl;
			menu();
		}
	}
	else if (s == "4")
	{
		cout << "Разделение матриц" << endl;
		Matr c;
		int cc, cr, cc2, cr2;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Введите количество столбцов и строк второй матрицы" << endl;
		cin >> cc2 >> cr2;
		Matr b(cc2, cr2);
		if (a.c == b.r)
		{
			cout << "Заполните матрицу" << endl;
			set(a);
			cout << " " << endl;
			get(a);
			cout << "Заполните 2 матрицу" << endl;
			set(b);
			cout << " " << endl;
			get(b);
			c = a / b;
			cout << "Результат:" << endl;
			get(b);
			menu();
		}

	}
	else if (s == "5")
	{
		cout << "Тестирование на равенство" << endl;
		int cc, cr, cc2, cr2;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Введите количество столбцов и строк второй матрицы" << endl;
		cin >> cc2 >> cr2;
		Matr b(cc2, cr2);
		if (a.c == b.r) {
			cout << "Заполните матрицу" << endl;
			set(a);
			cout << " " << endl;
			get(a);
			cout << "Заполните 2 матрицу" << endl;
			set(b);
			cout << " " << endl;
			get(b);
			if (a == b)
			{
				cout << "a=b" << endl;
				menu();
			}
			else {
				cout << "a!=b" << endl;
				menu();
			}
		}
		else {
			cout << "a!=b" << endl;
			menu();
		}
	}

	else if (s == "6")
	{
		cout << "Вычисление обратной матрицы" << endl;
		int cc, cr;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		if (a.TypeSq() == true)
		{
			set(a);
			get(a);
			a.ObratMatr();
			get(a);
			menu();

		}
		else
		{
			cout << "Матрица не имеет обратного" << endl;
			menu();
		}
	}
	else if (s == "7")
	{
		cout << "Расчет транспонированной матрицы" << endl;
		int cc, cr;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		if (a.TypeSq() == true)
		{
			set(a);
			get(a);
			a.TransMatr();
			get(a);
			menu();
		}
		else
		{
			cout << "матрица не может быть транспозиции" << endl;
			menu();
		}
	}
	else if (s == "8")
	{
		cout << "Возведение" << endl;
		int cc, cr, n;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		if (a.TypeSq() == true)
		{
			set(a);
			get(a);
			cout << "Введите степень" << endl;
			cin >> n;
			a = a^n;
			get(a);
			menu();
		}
		else
		{
			cout << "матрица не может" << endl;
			menu();

		}

	}
	else if (s == "9")
	{
		cout << "Вычисление определителя" << endl;
		int cc, cr;
		cout << "Введите количество столбцов и строк матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		if (a.TypeSq() == true) {
			set(a);
			get(a);
			cout << "Определитель = " << a.det(a.r) << endl;
			menu();
		}
		else
		{
			cout << "Определитель не можеть быть вычисленым " << endl;
			menu();
		}
	}
	else if (s == "10")
	{
		cout << "Вычисление нормы" << endl;
		int cc, cr;
		cout << "Введите количество столбцов и строк матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		set(a);
		get(a);
		a.MatrNorm();
		menu();
	}
	else if (s == "11") {
		int cc, cr;
		cout << "Введите количество столбцов и строк матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		set(a);
		get(a);
		a.TypeMatr();
		menu();
	}
	else if (s == "12")
	{
		cout << "Разделение матриц на число" << endl;
		Matr c;
		double ch;
		int cc, cr;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Заполните матрицу" << endl;
		set(a);
		cout << " " << endl;
		get(a);
		cout << "Введите число" << endl;
		cin >> ch;
		c = a /= ch;
		cout << "Результат:" << endl;
		get(c);
		menu();
	}
	else if (s == "13")
	{
		cout << "Умножение матриц на число" << endl;
		Matr c;
		double ch;
		int cc, cr;
		cout << "Введите количество столбцов и строк первой матрицы" << endl;
		cin >> cc >> cr;
		Matr a(cc, cr);
		cout << "Заполните матрицу" << endl;
		set(a);
		cout << " " << endl;
		get(a);
		cout << "Введите число" << endl;
		cin >> ch;
		c = a *= ch;
		cout << "Результат:" << endl;
		get(c);
		menu();

	}
}
Выдает ошибку LNK2019

Последний раз редактировалось Pinguin007; 01.10.2016 в 09:27.
Pinguin007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дружественные функции Alexandr- Помощь студентам 2 16.11.2013 22:36
Дружественные функции midiss Visual C++ 0 20.05.2013 19:11
Дружественные функции Leon S.Kennedy Общие вопросы C/C++ 3 05.12.2011 17:22
Дружественные функции и классы Opiym Помощь студентам 1 05.04.2010 21:51