Таблица футбольного чемпионата задана квадратной матрицей порядка [latex]n[/latex], в которой все элементы, принадлежащие главной диагонали, равны нулю, а каждый элемент, не принадлежащий главной диагонали, равен [latex]2[/latex], [latex]1[/latex] или [latex]0[/latex] (числу очков, набранных в игре: [latex]2 -[/latex] выигрыш, [latex]1 -[/latex] ничья, [latex]0 -[/latex] проигрыш).
в)Выяснить, имеется ли хотя бы одна команда, выигравшая более половины игр.
Матрица | Результат |
0 1 0 1 0 0 2 2 0 |
Yes |
0 1 1 1 1 0 1 2 1 1 0 2 1 0 0 0 |
No |
0 2 2 1 1 0 0 1 1 2 0 1 0 2 0 1 1 0 0 1 1 0 2 1 0 |
No |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <iostream> using namespace std; int main() { int p; cin>>p; const int n=p; int a[n][n]; for(int i=0; i<n; i++) for(int j=0; j<n; j++) { cin>>a[i][j]; } int s=0; bool f=false; for(int i=0; i<n; i++) { s=0; for(int j=0; j<n; j++) { if(a[i][j]==2) s++; } if(s>((n-1)/2)) f=true; } if(f) cout<<"Yes"<<endl; else cout<<"No"<<endl; return 0; } |
Зададим квадратную матрицу [latex]a[n][n][/latex]. С помощью счетчика [latex]s[/latex] посчитаем сколько у каждой команды побед. Если побед больше, чем половина от всех игр(всего игр [latex]n-1[/latex]), то выведем «Yes», в ином случае «No» .
Надо отметить, что неравенство строгое.
Код программы можно посмотреть тут
Программа правильно работает!
Как минимум в трех местах в отчете пропущены пробелы: после запятой, точки и между словом и формулой.
«Если побед больше, чем половина от всех игр» — лучше указать, а сколько же будет половина от всех игр. «то выведем “Yes”, в ином случае “No”» -так сразу и выведем? А по тексту программы я вижу присвоение 1 какой-то необъясненной в отчете переменной f и только в конце проверку значения f.
Кстати или проверку if(s>((n-1)/2)) f=1; можно было делать уже после цикла по j, или если Вы ее делаете в цикле, то логично выйти из этого цикла. А т.к. нам нужна только знать есть такая команда или нет, то, поняв, что команда есть, можно и из внешнего цикла выйти. Существует и альтернатива этому — как Вы и написали в отчете «Если побед больше, чем половина от всех игр, то выведем “Yes” » — сразу выводить «Yes» и выходить при нахождении команды. В общем, какой вариант выбрать дело вкуса — но Ваш не самый логичный и неэффективный к тому же.
1)Нашел только один пробел.
2)Указал сколько всего игр
3)f-булева переменная для определения того, есть ли такая команда.
4)Вывел за цикл.
1) После «матрицу» и после «побед.»
2) правильно, но вместо «чем половина от всех игр, (всего игр n-1) то» => «чем половина от всех игр (всего игр n-1), то» (переместить запятую)
3) да, переменная использована верно, и пояснение в ответе верное. Но лучше это пояснение указать или в отчете или в качестве комментария. Также вместо if (f==true) лучше написать просто if(f)
4) хорошо
Исправил
Засчитано, 10 баллов.