1) ответ выводится не списком, а просто отдельными числами через пробел
2) каждое повторяющееся число выводится несколько раз(столько, сколько встречается)
3) в конце вывода лишний пробел
Могу решить на пайтоне, если важно просто закрыть задачу. А так, судя по всему, решение только массивами требует более глубоких знаний(динамические массивы и векторы), чем есть у меня в с++. Возможно, сможете улучшить мое решение
(кинул бы в комментарии, но там ограничение на кол-во символов)
#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) в конце вывода лишний пробел
Могу решить на пайтоне, если важно просто закрыть задачу. А так, судя по всему, решение только массивами требует более глубоких знаний(динамические массивы и векторы), чем есть у меня в с++. Возможно, сможете улучшить мое решение
(кинул бы в комментарии, но там ограничение на кол-во символов)
pascal
Объяснение:
procedure sortmas(a: array of integer);
var i, j, min, ind: integer;
begin
for i := 0 to Length(a) - 2 do
begin
min := a[i]; ind := i;
for j := i + 1 to Length(a) - 1 do
if a[j] < min then
begin
min := a[j]; ind := j;
end;
a[ind] := a[i]; a[i] := min;
end;
end;
var a: array of integer;
n , i: integer;
begin
WriteLn('Введите размер массива: '); Read(n);
SetLength(a, n);
Randomize;
WriteLn('Содержимое массива:');
for i := 0 to Length(a) - 1 do
begin
a[i] := random(100);
Write(a[i], ', ');
end;
WriteLn;
sortmas(a);
WriteLn('Три минимальных элемента: ', a[0], ', ', a[1], ', ', a[2], ', ');
end.