@Tolstohabr

Как правильно добавить в программу считывание количества объектов класса с помощью статического поля?

постоянно 0 показывает
#include <windows.h> 
#include <iostream> 
using namespace std;
class matr {
	int x_size, y_size;
	double** base;
	static int s_idGenerator;
	int m_id;
public:
	matr() { m_id = s_idGenerator++; }
	int getID() const { return m_id; }
	static int minimal;	//иниц стат перем
	static int maximal;
	matr(int n, int m) {
		x_size = n;
		y_size = m;
		base = new double* [y_size];
		for (int i = 0; i < y_size; i++) {
			base[i] = new double[x_size];
		}

	}
	static int& count() { return minimal; } //вроде возвращение содержания в поле
	static int& cunt() { return maximal; }
	~matr() {
		for (int i = 0; i < y_size; i++) {
			delete[]base[i];
		}
		delete[]base;
		x_size = 0;
		y_size = 0;
	}
	void input();
	void output();
	int maxx();	// объяв мет
	int minn();
};

int matr::s_idGenerator = 1;

int matr::minimal;	//опр стат перем
int matr::maximal;

void matr::input()
{
	cout << "Ввод матрицы:" << endl;
	for (int i = 0; i < y_size; i++) {
		for (int j = 0; j < x_size; j++) {
			cout << " элемен " << "[" << i << "] " << "[" << j << "]" << "=";
			cin >> base[i][j];
		}
	}
}

void matr::output()
{
	cout << "Вывод матрицы" << endl;
	for (int i = 0; i < y_size; i++) {
		for (int j = 0; j < x_size; j++) {
			cout << base[i][j] << " ";
		}
		cout << endl;
	}

}
int matr::maxx()
{
	int maxim = base[0][0];
	for (int i = 0; i < y_size; i++) {
		for (int j = 0; j < x_size; j++) {
			if (maxim < base[i][j]) {
				maxim = base[i][j];

			}
		}
	}
	cout << "Максимальный элемент матрицы равен:\n maxim=" << maxim << endl;
	return maxim;
}
int matr::minn()
{
	int min = base[0][0];
	for (int i = 0; i < y_size; i++) {
		for (int j = 0; j < x_size; j++) {
			if (base[i][j] < min) {
				min = base[i][j];

			}
		}
	}
	cout << "Минимальный элемент матрицы равен:\n min=" << min << endl;
	return min;
}

int main()
{
	SetConsoleCP(1251);
	SetConsoleOutputCP(1251);
	int n, m;
	int x;
	int z, i;

	cout << "Введите кол-во столбцов матрицы:\n m= ";
	cin >> n;
	cout << "Введите кол-во строк матрицы:\n m= ";
	cin >> m;
	matr a(n, m);
	a.input();
	a.output();
	matr::minimal = a.maxx();
	matr::maximal = a.minn();

	for (i = 0; i < 10; i++) {
		cout << "Хочешь новую матрицу?\n";
		cout << "Если да, то жми 0!" << endl;
		cin >> z;
		if (z == 0) {
			//создаем матрицу
			cout << "Введите кол-во столбцов матрицы:\n m= ";
			cin >> n;
			cout << "Введите кол-во строк матрицы:\n m= ";
			cin >> m;
			matr b(n, m);
			cout << "кол-во массивов:\n";
			cout << b.getID() << '\n';
			b.input();
			b.output();
			if (b.maxx() < matr::minimal)
			{
				matr::minimal = b.maxx();
			}
			if (matr::maximal < b.minn())
			{
				matr::maximal = b.minn();
			}
		}
		else {
			break; 
		}
	}


	cout << "\nМинимальный элемент среди максимальных: " << matr::minimal << endl;
	cout << "\nМаксимальный элемент среди минимальных: " << matr::maximal << endl;
	system("pause");
	//cout << b.getID() << '\n';
	//system("pause");
	return 0;
}
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
постоянно 0 показывает

Потому что в одном конструкторе ты matr::m_id инициализировал, а в другом -- нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы