Задача 1. Дана квадратная матрица порядка n (n строк, n столбцов). Найти наибольшее из значений элементов, расположенных в тёмно-синих частях матриц. Все массивы в данном задании заполняются случайным образом.
Решение: Логика: если i - индекс строки, а j - индекс столбца то массива
а. выбираем элементы у которых i⇐j
б. выбираем элементы у которых i>=j
в. если i⇐(высота/2) то если j⇐(ширина/2) то выбираем элементы у которых i⇐j если j>(ширина/2) то выбираем элементы у которых i⇐(ширина - j)
/*
* File: main.cpp
* Author: darkfire
*
* Created on 5 Июль 2010 г., 9:58
*/
#include <stdlib.h>
#include <iostream>
/*
Решение для картинки а
*/
using std::endl;
using std::cout;
int main() {
int max,i,j;
const int row=5;
const int col=5;
int mr[row][col];
for(int i=0; i<row; i++) // перебираем отдельные элементы каждой строки
for(int j=0; j<col;j++) mr[i][j]=rand()%200; // инициализация элементов значениями в диапазоне от 0 до 5
//вывод матрицы на экран
for(i=0; i<row; i++)
{
for(j=0; j<col;j++) cout<<mr[i][j]<<"\t";
cout<<"\n";
}
//находим элемент принадлежащий закрашенной области,
//для инициализации переменной мах
for(i=0; i<row; i++)
for(j=0; j<col;j++)
if (i<j){
max=mr[i][j];
break;
};
//Найти наибольшее из значений элементов, расположенных в тёмно-синих частях матриц.
for(i=0; i<row; i++)
for(j=0; j<col;j++)
if (i<j&&max<mr[i][j]){
max=mr[i][j];
};
cout<<"\n";
cout<<"MAX = "<<max<<"\n";
return (EXIT_SUCCESS);
}