#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) в конце вывода лишний пробел
Могу решить на пайтоне, если важно просто закрыть задачу. А так, судя по всему, решение только массивами требует более глубоких знаний(динамические массивы и векторы), чем есть у меня в с++. Возможно, сможете улучшить мое решение
(кинул бы в комментарии, но там ограничение на кол-во символов)
Объяснение:
program graphic;
var
x, y: real;
underLine, underLog, inCircle: boolean;
begin
writeln('введите Х:');
readln(x);
writeln('введите У:');
readln(y);
//проверяем, что попали в первую четверть
if (x >= 0) and (y >= 0) then
begin
underLine := (y <= -x + 2);
underLog := (exp(y) <= x);
inCircle := (x*x + y*y <= 9);
if inCircle and (underLog xor underLine) then
writeln('внутри области')
else
writeln('вне области');
end
else
writeln('вне области');
end.
UPD
если нужно записать это одним оператором, то это будет выглядеть так
program graphic_v2;
var
x, y: real;
begin
writeln('введите Х:');
readln(x);
writeln('введите У:');
readln(y);
if (x >= 0) and (y >= 0) and (x*x + y*y <= 9) and ((y <= -x + 2) xor (exp(y) <= x)) then
writeln('внутри')
else
writeln('снаружи');
end.