@campus1

Как разобратся с кодом?

Ребят, всем привет. Делаю работу в универ, задание: реализовать структуру данных матрица, которая будет иметь методы добавления, удаления елементов в ней, удаление и добавление строк и еще...
Несколько ф-ций написал сам, некоторые копипастил. Готов заплатить за "раздупление" ( напишите готов помочь за $ и укажите почту, скайп, вк). Буду всем благодарен!!

Прошу вас помощи разобратся в коде, а то я не понимаю некоторые моменты. Особенно хочется узнать алгоритм работ таких ф-ций как
addRow()
void addRow() {
	int k;
	int** poss;
	cout << "Номер добовляемой строки = ";
	cin >> k;
	if (k > N) {
		cout << "ERROR INPUT" << endl;
	}
	else {
		poss = new int*[N + 1];
		poss[k] = new int[M];
		for (int i = 0; i < N; i++) {
			if (i >= k) {
				poss[i + 1] = matrix[i];
			}
			else {
				poss[i] = matrix[i];
			}
		}

		for (int j = 0; j < M; j++){
			cout << "matrix[" << k << "][" << j << "] = ";
			cin >> poss[k][j];
		}
		matrix = poss;
	}
}


И removeRow()
void removeRow() {
	int k;
	int** poss;
	cout << "Номер удаляемой строки = ";
	cin >> k;
	if (k >= N) {
		cout << "ERROR INPUT" << endl;
	}
	else {
		poss = new int*[N - 1];
		cout << N << endl;
		for (int i = 0; i < N; i++) {
			if (i == k) continue;
			else if (i > k) {
				poss[i - 1] = matrix[i];
			}
			else {
				poss[i] = matrix[i];
			}

		}
		matrix = poss;
	}
}


Весь код

Програма что-бы пощупать
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Матрица имеет вид «хребта», на котором висят массивы-строки.

Вставка работает так.
1. Завести новый хребет.
2. Завести новую строку.
3. Посадить все остальные строки на новый хребет.
4. Перенести новую матрицу на место старой.

Удаление работает точно так же, только без 2.

Как избавиться от говнокода.
1. Стоило бы разделить интерактивное удаление и собственно удаление.
2. Стоило бы тащить this (с какой матрицей работаем). А то на данный момент работаем с одной матрицей, и точка.
3. Если уж методы — может, стоит писать в объектном стиле?
4. Снова-таки, утечки памяти!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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