Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
Автор: Recklessly (17.06.2014 в 21:51) Задание такое: Дана целочисленная прямоугольная матрица. Определить: 1.количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент 2.номера строки и столбцов всех седловых точек матрицы. Примечание. Матрица A имеет седловую точку Aij, если Aij является минимальным элементом в i-й строке и максимальным в j-м столбце. Код ужасный и абсолютно не работоспособный (
#include <iostream> #include <time.h> #include <iomanip> using namespace std; int count(int **a, const int n, const int m); int sed(int **a, const int n, const int m); int main() { setlocale(LC_ALL, "rus"); srand(time(0)); const int n = 6, m = 5; int **a = new int*[n]; for (int i = 0; i < n; i++) a[i] = new int[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { a[i][j] = rand() % 20 - 10; cout << setw(5) << "Массив: " << a[i][j] << endl; } cout << endl; } if (!cin.fail()){ cout << "Количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент: " << count(**a, n, m) << endl; cout << "Номера строки и столбцов седловых точек матрицы: " << sed(**a, n, m); } else cout << "Ошибка ввода!" << endl; system("pause"); return 0; } int count(int **a, const int n, const int m) { int s = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { if (a[i][j] == 0) { for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { if (a[i][j] < 0) s++; } } } return s; } int sed(int **a, const int n, const int m) { int s; int min = 0; int max = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { if (a[i][j] < min) { min = a[i][j]; for (int j = 0; j < n; j++) for (int i = 0; i < m; i++) { if (a[j][i] > max) { max = a[j][i]; if (min = max) s = min; } } } } return s; }
Ваше имя:
Пароль:
Цитировать Используйте тэги для выделения текста: Код: [code][/code] Жирный: [b][/b] Наклонный: [i][/i] URL: [url][/url]
Сообщение:
Прикрепить: