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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2016, 19:28   #1
Pinguin007
Пользователь
 
Регистрация: 26.02.2016
Сообщений: 14
По умолчанию c++ ООП.Классы

Хочу написать класс, который создает матрицу , выводит ее, и выполняет операцию сложение матриц. Но как то не получается. Взял для себя такой пример чтоб наконец то разобраться с классами

вот что набросал:
Код:
Код:
//matrix.cpp

#include "matrix.h"
#include <stdio.h>
#include <iostream>
#include "time.h"
#include <string>
#include <conio.h>

using namespace std;
namespace program

{

	matrix::matrix()
	{
	}


	matrix::~matrix()
	{
	}
	void matrix::set() //функция ввода кол-ва строк и столбцов
	{
		cout << endl << "vvedite kol-vo strok" << endl;
		cin >> n;
		cout << endl << "vvedite kol-vo stolbcov" << endl;
		cin >> m;
		cout << endl;
	}
	void matrix::get()     // функция заполнения и вывода матрицы
	{
		srand((unsigned)time(NULL));
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				mas[i][j] = rand() / (float)32767 * 20 - 10;
			}
		}
		for (int i = 0; i < n; i++) {
			cout << endl;
			for (int j = 0; j < m; j++) {
				cout << mas[i][j] << ends;
			}
		}
	}
	float matrix::setSumM(float** mas, float** mas2)
	{
		for (int i = 0; i < m; ++i)
			for (int j = 0; j < n; ++j)
				mas3[i][j] = mas[i][j] + mas2[i][j];
		return(mas3[50][50]);
	}


}

Код:
//matrix.h

#pragma once
 
namespace program
{

	class matrix
	{
	private:
		float mas[50][50], mas2[50][50], mas3[50][50];
		int n, m;
		
	public:

		matrix(void);
		void set();
		void get();
		void SumM();
		float setSumM(float**,float**);
	
		~matrix(void);
	};

}

//source.cpp
#include "matrix.h"
#include <stdio.h>
#include <iostream>
#include "time.h"
#include <string>
#include <conio.h>

using program::matrix;
using namespace std;

int main(int argc, char** argv[])
{
	matrix m;
	matrix a;
	matrix mas3;
	m.set();
	m.get();
	cout << endl;
	a.set();
	a.get();
	mas3.setSumM(&a, &m);

	_getch();
	return 0;
}
Pinguin007 вне форума Ответить с цитированием
Старый 14.09.2016, 21:19   #2
Максай
Пользователь
 
Аватар для Максай
 
Регистрация: 21.07.2008
Сообщений: 40
По умолчанию

  • Вам следует добавить #include <cstdlib> для подключения функций генерации случайных чисел rand() и srand().
  • Командой mas3.setSumM(&a, &m) Вы пытаетесь вызвать метод setSumM с указателями на объекты класса matrix в качестве параметров, однако Ваш setSumM принимает в качестве параметров указатели на массивы типа float. Его нужно переделать, ну хотя бы так:
    Код:
    float matrix::setSumM(matrix* mat, matrix* mat2)
    {
        for (int i = 0; i < m; ++i)
            for (int j = 0; j < n; ++j)
                mas3[i][j] = mat->mas[i][j] + mat2->mas[i][j];
        return(mas3[50][50]);
    }
Кроме этих очевидных ошибок, препятствующих компиляции программы, у Вас там ещё прорва ошибок в логике, которые буду приводить к тому, что Ваша программа будет делать совсем не то, что Вы ожидаете или просто вылетать с ошибкой. Судя по всему, Вы только начинаете изучать программирование. Я бы порекомендовал Вам на данном этапе хорошенько изучить следующие темы:
  • Как происходит компиляция программы (поэтапно). Что такое заголовочный файл .h и чем он отличается от основного файла .cpp? Что следует помещать в файл .h, и что в .cpp?
  • Пространства имён (namespace), что это, для чего они, и как их правильно использовать?
  • Что такое указатели и массивы?
  • Что такое области видимости, чем отличаются локальные переменные, переменные-члены класса, глобальные переменные?
  • Что такое классы, объекты класса, члены класса?
А потом уже, после того, как Вы будете уверенно понимать эти вопросы, переходить к ООП и сложению матриц.
Максай вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы и ООП moshkin_ura PHP 6 25.12.2015 15:24
Pascal Классы (ООП) Kroleg Помощь студентам 1 29.05.2011 19:40
Pascal Классы (ООП) Kroleg Паскаль, Turbo Pascal, PascalABC.NET 0 29.05.2011 09:53
С++,ООП,программа на классы VampIrchik Помощь студентам 1 25.01.2011 20:11
ООП->Телефонный справочник->классы winnix Общие вопросы C/C++ 1 10.11.2008 16:41