Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <locale>
- int main()
- {
- setlocale(0, "Russian");
- int qrMatrix[100][100]; //объявляем двумерный массив длинной 100.
- int n = 0; //Переменная содержащая кол-во команд и, соответственно, элементов квадратной матрицы.
- printf("Введите количество комманд: ");
- do
- {
- scanf("%d", &n);
- }
- while (n < 1 || n > 100); // Просим ввести человека кол-во команд пока он не введет число в промежутке от 1 до 100
- srand(time(0)); // эта строка делает так, чтобы генератор рандомных чисел не выдавал одни и те же числа при каждом запуске.
- int sum2 = 0; // переменная для суммы очков последней команды.
- for (int i = 0; i < n; i++)
- {
- int sum = 0; // сумма очков текущей команды
- for (int j = 0; j < n; j++) //
- { //
- if (j > i) //
- { // В этом циклее мы заполняем очки команды рандомными числами.
- int point = rand() % 3; // rand() % 3 - генерирует нам числа от 0 до 2.
- if (j == n - 1) sum2 += point; // sum - содержит общее количество очков команды под номером i + 1
- sum += point; //
- qrMatrix[i][j] = point; // В строке 30 и 31 мы вставляем рандомное число очков и зеркалем результат
- qrMatrix[j][i] = point; //
- } // Также пока не достигнется точка, на которой мы в прошлый раз остановились, мы будем просто считать очки данной команды (i + 1)
- else if (j != i) // Это сделано для того, чтобы посчитать очки в отзеркаленом пространстве
- sum += qrMatrix[i][j]; // Главная диагональ матрицы в конечном итоге равна не 0, а количеству баллов, которая имеет команда под номером, который имеет столбец
- } // и строка с пересечением.
- qrMatrix[i][i] = sum; //
- }
- qrMatrix[n - 1][n - 1] = sum2;//В последний элемент диагонали записываются баллы последней команды т.к. до этого элемента наш цикл не дойдет.
- printf("\n"); //
- for (int i = 0; i < n; i++) //
- { //
- for (int j = 0; j < n; j++) //
- { // В этих циклах выводим нашу матрицу
- printf("%d ", qrMatrix[i][j]); //
- } //
- printf("\n"); //
- } //
- printf("\n"); //
- //В цикле ниже мы выводим команды по их местам и их очки.
- //Логика следующая:
- for (int i = 0; i < n; i++)
- {
- int max = qrMatrix[i][i], curTeam = i + 1; //Получаем max элемент и текущую команду (прим.1)
- for (int j = 0; j < n; j++)
- {
- if (qrMatrix[j][j] > max) //Если текущий элемент диагонали больше, чем выбранный нами
- {
- max = qrMatrix[j][j]; // Тогда записываем этот элемент в переменную
- curTeam = j + 1; // А индекс элемента + 1 в переменную curTeam
- }
- }
- printf("(%d) место команда №%d. Очков: %d\n", i + 1, curTeam, max); // Выводим место команды (прим. 1) с ее номером и количеством очков.
- qrMatrix[curTeam - 1][curTeam - 1] = -1; //помечаем выведенную ячейку, дабы больше ее в расчет не брать.
- }
- //Примечание 1: Т.к. массивы индексируются с 0, то мы должны вывести i + 1, как номер команды. Иначе отсчет команд начнется с 0.
- system("pause"); //Выводим строку и ожидаем enter до завершения программы
- return 0; //Возвращаем системе результат работы нашей программы. Стандартная строка в любой программе.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement