Информатика! решите задачу на с++.С сайта информатикс , условие и моё решение , постарайтесь использовать только for,while,break, Моё решение не проходит из за времени
1) ответ выводится не списком, а просто отдельными числами через пробел
2) каждое повторяющееся число выводится несколько раз(столько, сколько встречается)
3) в конце вывода лишний пробел
Могу решить на пайтоне, если важно просто закрыть задачу. А так, судя по всему, решение только массивами требует более глубоких знаний(динамические массивы и векторы), чем есть у меня в с++. Возможно, сможете улучшить мое решение
(кинул бы в комментарии, но там ограничение на кол-во символов)
Смотри на скриншот я сделал просто не хочу чтоб форматировка текста портилась.Все работает! const n=3;m=4; var a:array [1..n,1..m] of integer; i,j,k,max:Integer; ind:array [0..1] of Integer=(1,1); begin Randomize; for i:=Low(a) to High(a) do for j:=Low(a) to High(a[1]) do a[i,j]:=Random(100); for i:=Low(a) to High(a) do begin writeln; for j:=Low(a) to High(a[1]) do write(a[i,j]:3); end; max:=a[1,1]; for i:=Low(a) to High(a) do for j:=Low(a) to High(a[1]) do if a[i,j]> max then begin max:=a[i,j]; ind[0]:=i; ind[1]:=j; end; writeln; Writeln(' Max element: ',max); Write(' Index: '); for i:=0 to 1 do write(ind[i],' '); Readln; end.
Program p1; var n,a,i,max,fl:integer; begin writeln('Введите кол-во участников>>'); readln(n); max:=0; fl:=0; for i:=1 to n do begin writeln('Введите кол-во правильных ответов, данных участником ',i); readln(a); if (a > max) then max:=a; if a=0 then fl:=1; end; if fl=1 then writeln('YES') else writeln('NO'); writeln('Победитель набрал ',max,' '); end.
Пример: Введите кол-во участников>> 5 Введите кол-во правильных ответов, данных участником 1 15 Введите кол-во правильных ответов, данных участником 2 18 Введите кол-во правильных ответов, данных участником 3 0 Введите кол-во правильных ответов, данных участником 4 8 Введите кол-во правильных ответов, данных участником 5 10 YES Победитель набрал
#include <iostream>
using namespace std;
int main()
{
int N; cin >> N;
int list[N];
int a = 0;
while (a < N)
{
int n; cin >> n;
list[a] = n;
a ++;
}
int flag_2 = 0;
a = 0;
while (a < N)
{
int b = 0;
int flag = 0;
while (b < N)
{
if (list[a] == list[b])
{
flag ++;
flag_2 ++;
}
b ++;
}
if (flag > 1) cout << list[a] << " ";
a ++;
}
if (flag_2 <= N) cout << 0;
}
1) ответ выводится не списком, а просто отдельными числами через пробел
2) каждое повторяющееся число выводится несколько раз(столько, сколько встречается)
3) в конце вывода лишний пробел
Могу решить на пайтоне, если важно просто закрыть задачу. А так, судя по всему, решение только массивами требует более глубоких знаний(динамические массивы и векторы), чем есть у меня в с++. Возможно, сможете улучшить мое решение
(кинул бы в комментарии, но там ограничение на кол-во символов)