Программка написана на с++. разъяснить каждую строку понятным языкомint main()

Программка написана на с++. разъяснить каждую строчку понятным языком

int main()

SetConsoleCP (1251);

SetConsoleOutputCP (1251);


char matrix[13][18];

int max_line = 0, max_val = 0;


for(int i=0; ilt;13; i++)

cout lt;lt; i+1 lt;lt; ": ";

int line_cnt = 0;

for(int a=0; alt;18; a++)

matrix[i][a] = rand()%('z'-'a')+'a';

cout lt;lt; matrix[i][a] lt;lt; ' ';

if((agt;0) amp;amp; (matrix[i][a]!=matrix[i][a-1])) line_cnt++;



cout lt;lt; " = " lt;lt; line_cnt lt;lt; endl;

if(max_val lt;= line_cnt)

max_val = line_cnt;

max_line = i;





cout lt;lt; endl lt;lt; "Номер ряда с величайшим кол-вом = " lt;lt; max_line+1;




cout lt;lt; endl lt;lt; endl lt;lt; endl;

system ("pause");

return 0;

Задать свой вопрос
1 ответ

int main()

Объявление входной точки программы. Она должна быть именно такой, если мы не изменяли что-то в настройках проекта. Конкретно с неё компилятор начинает работу

SetConsoleCP (1251)

Как я теснее произнес, это функция Win API библиотеки, использующаяся для установки определённой кодовой странички. По сущности это набор знаков и, соответственно, шифровка, которая поддерживает российские символы. С поддержкою неё программка будет понимать, что мы вводим российский текст и сумеет его смирно обработать

SetConsoleOutputCP(1251)

Подобно, как и с предшествующей функцией, но эта дозволяет консоли увидеть российские знаки в консоли

char matrix[13][18]

Объявление матрицы (не поэтому что так назван массив, а поэтому что это двойной массив, то есть имеющий длину и вышину) либо, иными словами, массива, который простирается на 13 объектов в длину  и на 18 в вышину. Получится 234 объекта типа char - символьного типа. То есть наши переменные сумеют беречь себе только один символ (не в счёт escape-последовательности - знаки, типа \n [аналогия - std::endl], \t, которые занимают 2 знака и исполняют работу по переносу строки и табуляции [отступ на какое-то количество пробелов] соответственно. Их великое количество, не стоит на этом зацикливаться)

int max_line = 0 и max_val = 0

Целочисленные переменные, берегущие очень длинноватую строчку и наибольшее количество не циклических знаков во всём коде. То есть, оно отыскивает строчку с максимальным элементом и бережёт его последнюю позицию

for (int i = 0; i lt; 13; i++)

Цикл, начинающийся с 0 и проходящий 13 (количество столбцов) циклов, увеличивая значение i на единицу. Данный цикл наполняет массив (чем? увидим позже)

cout lt;lt; i + 1 lt;lt; ": "

Выводим номер столбца. Почему i + 1? Потому что мы используем систему счисления с основанием 10. Это не означает, что в ней 10 чисел: от 1 до 10. Это означает, что в ней всё начинается с 0 и заканчивается 9. Если бы мы не написали +1, то в консоль выводилось бы последующее:

0 строчка: (- это что вообщем за нулевая строчка?)

int line_cnt = 0

Количество не циклических знаков для каждой итерации, которое в итоге присваивается max_val

for (int a = 0; a lt; 18; a++)

Цикл, начинающийся с 0 и проходящий 18 (количество строк) циклов, увеличивая значение a на единицу. Данный цикл будет проходить каждый элемент массива

matrix[i][a] = rand() % ('z' - 'a') + 'a';

Для элемента по позиции [i][a] генерируется псевдослучайный знак и присваивается этому элементу

cout lt;lt; matrix[i][a] lt;lt; ' '

Вывод этого элемента, после которого идёт пробел

if ((a gt; 0) amp;amp; (matrix[i][a] != matrix[i][a - 1])) line_cnt++

Проверка на то, что мы на данный момент в массиве (a gt; 0 означает, что если мы получим каким-то образом в a отрицательное число [что по сути значит, что мы вылетели из массива, так как не может существовать отрицательного индекса массива], то это условие не выполнится) и проверка, не приравнивается ли данный символ предшествующему. В первую итерацию это условие не выполнится, так как будет проверяться схожесть частей по позиции [i][a] = [0][0] с элементом по позиции [i][a-1] = [0][-1]. В этой ячейке будет случайный символ, который никак не будет равняться последующему, по позиции [i][a]. Это изъясняет то, почему в консоли выводится n символов, но против каждой строчки (после '=') n-1 знаков

cout lt;lt; " = " lt;lt; line_cnt lt;lt; endl

Выводим для строчки i-й итерации количество не циклических знаков

if (max_val lt;= line_cnt) //...  

Мне не хотелось разглядывать данную конструкцию раздельно, так как будет теряться смысл, поэтому я рассмотрю всё. В данном условии проверяется, больше ли количество не повторяющихся символов данной итерации, чем то количество итераций, которое было до этого, то есть сохранившееся. Возьмём пример из Вашей жизни: Вы решили устроить марафон по пробежке по круговому полю n раз. По сути это цикл. Вы пробегаете S метров за время t. Вы измеряете, когда у Вас была самая великая скорость. Вы в первый (который для программки является по счёту нулевым) круг записываете скорость S / t, во 2-ой (1 для программы) скорость S / t, но она меньше, чем предыдущая, поэтому Вы не записываете это в наихороший результат. В третий круг Вы пробежали S / t и, вуаля, Вы пробежали намного быстрее, чем в 1-ый раз. Сейчас эта скорость V станет превосходнейшей и следующие результаты будете сопоставлять с ней либо с той величиной, которая больше этого значения

cout lt;lt; endl lt;lt; "Номер ряда с наибольшим кол-вом = " lt;lt; max_line + 1

Выводит номер ряда с величайшим количеством в общем знаков в строке. По причине, которую я обрисовывал с (i + 1), тут делается безусловно так же, так как max_line всегда в конце условия равняется итератору цикла (который начинается с 0). Если бы мы не добавляли единицу, то считали бы 1-ый цикл за 0, второй за 1 и так дальше

system("pause")

"Замораживает" консоль

return 0

"Говорит" программке, что она закончилась с ноль оплошностями (то есть без ошибок)

Игорь Календин
include Библиотека потока ввода/вывода
Алексей Дергунский
include Библиотека с функциями Win API. В программке используется для функций SetConsoleCP(1251) и SetConsoleOutputCP(1251), которые осмотрим позднее
Olesja Zhebeleva
include Библиотека для полноценной работы со строчками
Вова
include Библиотека, использующаяся для форматирования строки
Андрюха Фречер
1 - iostream, 2 - windows.h, 3 - string, 4 - sstream
Кербанов Юрий
Кое-что забылиusing namespace stdВажная строка, которая отсутствует в коде. Это привело к ошибке, которая не дала даже компилироваться программке. Это - пространство имён, без которого мы не сможем использовать cout, cin и прочее. Нам нужно будет всегда обращаться через std::
Котельникова Олеся
Добавил файл, чтоб было удобнее.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт