Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Ввести с клавиатуры матрицу М{3, 4} и число Н. Вывести ее на экран.
- Определить номер 1-го элемента, большего Н, и посчитать сумму
- элементов, предшествующих ему, если считать от левого верхнего угла
- матрицы построчно.
- */
- #include <iostream>
- using namespace std;
- int main() {
- setlocale(0, "");
- int matrix[3][4]; // объявляем матрицу
- int H; // иниц. число Н
- int firstBigger = 0, firstBiggerIndex = 0; // объявляем первое большее число и его номер (индекс)
- bool found = false; // объявляем переменную (true/false), которая отображает найдено ли уже число
- cout << "Введите любое число:" << endl;
- cin >> H; // ввод числа Н
- system("cls"); // очистка экрана (желательно убрать)
- // цикл ввода матрицы (внешний - строки, внутренний - элементы строк)
- for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
- cout << "Введите строку " << rowIndex + 1 << ":" << endl; // запрос на ввод строки
- for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
- int input;
- cin >> input;
- matrix[rowIndex][elementIndex] = input;
- }
- system("cls"); // очистка экрана (желательно убрать)
- }
- // цикл обработки данных
- for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
- for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
- // чекаем нашу переменную found: если она всё ещё равна false, то число больше Н ещё не найдено И чекаем, больше ли текущий элемент, чем Н
- // если хоть одно условие ложно - скипаем if и цикл идёт на следующий элемент
- // если оба условия истинны, то присваиваем переменной firstBigger значение элемента > Н и переводим found в true
- // следовательно ни один следующий проход цикла условию уже не удовлетворит, поскольку found всегда будет истинным
- if (found == false && matrix[rowIndex][elementIndex] > H) {
- firstBigger = matrix[rowIndex][elementIndex];
- found = true;
- // а тут вычисляем индекс элемента > Н (номер строки на её ширину, прибавить номер элемента в строке и ко всей этой каше добавить единицу)
- firstBiggerIndex = ((rowIndex * 4) + elementIndex) + 1;
- }
- }
- }
- // цикл вывода
- // первым выводим саму матрицу
- for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
- cout << "#" << rowIndex + 1 << ": ";
- for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
- cout << matrix[rowIndex][elementIndex] << " ";
- }
- cout << endl;
- }
- cout << endl;
- // выводим само число Н
- cout << "Введённое число H: " << H << endl;
- // если индекс останется равным нулю, то поскольку ни у какого элемента не может быть номер 0, числа найдено не было, поэтому
- // проверяем: НЕ равен ли индекс нулю, если нет, то выводим число > Н и его номер
- if (firstBiggerIndex != 0) {
- cout << "Первый элемент, больший чем H: " << firstBigger << endl;
- cout << "Его номер: " << firstBiggerIndex << endl;
- }
- // иначе (если индекс равен нулю) выводим сообщение о том, что элемент > Н найден не был
- else {
- cout << "Элементов, больших чем H, обнаружено не было." << endl;
- }
- cout << endl;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment