vertexofvortex

Untitled

Jun 1st, 2020
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  1. /*
  2. Ввести с клавиатуры матрицу М{3, 4} и число Н. Вывести ее на экран.
  3. Определить номер 1-го элемента, большего Н, и посчитать сумму
  4. элементов, предшествующих ему, если считать от левого верхнего угла
  5. матрицы построчно.
  6. */
  7. #include <iostream>
  8. using namespace std;
  9.  
  10. int main() {
  11.     setlocale(0, "");
  12.     int matrix[3][4]; // объявляем матрицу
  13.     int H; // иниц. число Н
  14.     int firstBigger = 0, firstBiggerIndex = 0; // объявляем первое большее число и его номер (индекс)
  15.     bool found = false; // объявляем переменную (true/false), которая отображает найдено ли уже число
  16.    
  17.     cout << "Введите любое число:" << endl;
  18.     cin >> H; // ввод числа Н
  19.     system("cls"); // очистка экрана (желательно убрать)
  20.    
  21.     // цикл ввода матрицы (внешний - строки, внутренний - элементы строк)
  22.     for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
  23.         cout << "Введите строку " << rowIndex + 1 << ":" << endl; // запрос на ввод строки
  24.         for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
  25.             int input;
  26.             cin >> input;
  27.             matrix[rowIndex][elementIndex] = input;
  28.         }
  29.         system("cls"); // очистка экрана (желательно убрать)
  30.     }
  31.  
  32.     // цикл обработки данных
  33.     for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
  34.         for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
  35.             // чекаем нашу переменную found: если она всё ещё равна false, то число больше Н ещё не найдено И чекаем, больше ли текущий элемент, чем Н
  36.             // если хоть одно условие ложно - скипаем if и цикл идёт на следующий элемент
  37.             // если оба условия истинны, то присваиваем переменной firstBigger значение элемента > Н и переводим found в true
  38.             // следовательно ни один следующий проход цикла условию уже не удовлетворит, поскольку found всегда будет истинным
  39.             if (found == false && matrix[rowIndex][elementIndex] > H) {
  40.                 firstBigger = matrix[rowIndex][elementIndex];
  41.                 found = true;
  42.                 // а тут вычисляем индекс элемента > Н (номер строки на её ширину, прибавить номер элемента в строке и ко всей этой каше добавить единицу)
  43.                 firstBiggerIndex = ((rowIndex * 4) + elementIndex) + 1;
  44.             }
  45.         }
  46.     }
  47.  
  48.     // цикл вывода
  49.     // первым выводим саму матрицу
  50.     for (int rowIndex = 0; rowIndex < 3; rowIndex++) {
  51.         cout << "#" << rowIndex + 1 << ": ";
  52.         for (int elementIndex = 0; elementIndex < 4; elementIndex++) {
  53.             cout << matrix[rowIndex][elementIndex] << " ";
  54.         }
  55.         cout << endl;
  56.     }
  57.     cout << endl;
  58.     // выводим само число Н
  59.     cout << "Введённое число H: " << H << endl;
  60.     // если индекс останется равным нулю, то поскольку ни у какого элемента не может быть номер 0, числа найдено не было, поэтому
  61.     // проверяем: НЕ равен ли индекс нулю, если нет, то выводим число > Н и его номер
  62.     if (firstBiggerIndex != 0) {
  63.         cout << "Первый элемент, больший чем H: " << firstBigger << endl;
  64.         cout << "Его номер: " << firstBiggerIndex << endl;
  65.     }
  66.     // иначе (если индекс равен нулю) выводим сообщение о том, что элемент > Н найден не был
  67.     else {
  68.         cout << "Элементов, больших чем H, обнаружено не было." << endl;
  69.     }
  70.     cout << endl;
  71.     system("pause");
  72. }
Advertisement
Add Comment
Please, Sign In to add comment