Условие для матрицы в виде таблицы футбольных матчей. С++
Таблица футбольного чемпионата задана квадратной матрицей порядка ?, в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен 2, 1 или 0 (числу очков, набранных в игре: 2 –выигрыш, 1 –ничья, 0 –проигрыш). Найти число команд, имеющих больше побед, чем поражений и определить номера команд, прошедших чемпионат без поражений.
На данный момент у меня имеется вот такая часть кода:
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int N = 0, i, j;
cout << "Введите количество команд: ";
cin >> N;
srand(time(0));
int m[66][66];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
m[i][j] = rand() % 3;
if (i == j) m[i][j] = 0; //Просталение нулей на главной диагонали.
else if (m[i][j] == 0) m[j][i] == 2; //Условие для того,чтобы матрица не была симметричной.
else m[j][i] = m[i][j];
}
}
//Вывод матрицы
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
cout << m[i][j] << ' ';
}
cout << endl;
}
_getch();
}
Условие,которое я сделала для того, чтобы у одной команды отражалась победа, а у другой проигрыш не работает. Не знаю, как это реализовать. +Пока не могу додуматься как найти число команд, у которых побед больше,чем поражений и как определить номера команд, прошедших чемпионат без поражений.
Буду очень благодарна знающим людям,которые смогут помочь.
Ответы (1 шт):
#include <iostream>
#include <time.h>
#include <conio.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
int N = 0, i, j;
cout << "Введите количество команд: ";
cin >> N;
srand(time(0));
int m[66][66];
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
m[i][j] = rand() % 3;
if (i == j) m[i][j] = 0;
else if (m[i][j] == 0) m[j][i] = 2;
else if (m[i][j] == 2) m[j][i] = 0;
else if (m[i][j] == 1) m[j][i] = 1;
else m[j][i] = m[i][j];
}
}
for (i = 0; i < N; i++)
{
for (j = 0; j < N; j++)
{
cout << m[i][j] << ' ';
}
cout << endl;
}
int v = 2;
int v2 = N;
int** arr2 = new int* [v];
for (int i = 0; i < v; i++)
{
*(arr2 + i) = new int[v2];
}
int count = 0;
for (int i = 0; i < 1; i++)
{
for (int j = 0; j < v2; j++)
{
count++;
arr2[i][j] = count;
}
}
int points = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (m[i][j] == 2)
{
points++;
}
}
arr2[1][i] = points;
points = 0;
cout << endl;
}
for (int i = 0; i < v; i++)
{
for (int j = 0; j < v2; j++)
{
cout << arr2[i][j] << " ";
}
cout << endl;
}
int A = 0;
int nextv = 0;
int team = 0;
int max = A - 1;
for (int i = 1; i < v; i++)
{
max = A - 1;
for (int j = 0; j < v2; j++)
{
if (max < (nextv = arr2[i][j]))
{
max = nextv;
}
}
}
for (int i = 1; i < v; i++)
{
for (int j = 0; j < v2; j++)
{
if (arr2[i][j] == max)
{
cout << "Команда №" << arr2[0][j] << " набрали наибольшее кол-во побед" << endl;
}
}
}
int points2 = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if (m[i][j] == 0)
{
points2++;
}
}
arr2[1][i] = points2-1;
points2 = 0;
cout << endl;
}
for (int i = 0; i < v; i++)
{
for (int j = 0; j < v2; j++)
{
cout << arr2[i][j] << " ";
}
cout << endl;
}
int fail = 0;
for (int i = 1; i < v; i++)
{
for (int j = 0; j < v2; j++)
{
if (arr2[i][j] == 0)
{
fail++;
cout << "Команда №" << arr2[0][j] << " прошла чемпионал без поражений" << endl;
}
}
}
if (fail == 0)
{
cout << "Ни одна команда не прошла чемпионат без поражений" << endl;
}
_getch();
}