Вы допустили ошибку на строке 7:
for j in range(1, N):
...
Знакомая формулировка задачи, ЕГЭ-27. Вы пошли по пути наименьшего сопротивления, и решили перебрать все возможные пары элементов. Но в таком случае стоит учитывать, что для любого ряда входных данных, если x1 и x2 образуют пару, то эти же числа в обратном порядке учитывать не надо (При вашем переборе программа проверяла и пару x1-x2 и x2-x1, и считала их уникальными, что и приводило к ошибке)
Что бы перебрать все уникальные пары без повторений, вам следует немного изменить параметры вложенного for:
for i in range(N-1):
for j in range(i, N):
Таким образом, вы точно так же учтете все возможные комбинации элементов, но сможете избежать повторений.
Объяснение:
ArrRandom(n,a,b) -- Возвращает массив размера n, заполненный случайными целыми значениями в диапазоне [a,b].Println -- Выводит последовательность на экран, используя пробел качестве разделителя, и переходит на новую строку.Slice(from,step) -- Возвращает срез последовательности от номера from с шагом step.Average -- Возвращает среднее значение последовательности.Print -- Выводит последовательность на экран, используя пробел качестве разделителя.Пример работы:
37+55 = 9292 / 2 = 46Поделитесь своими знаниями, ответьте на вопрос:
:оформить программу нахождения места максимального значения. вторая программа ввести с клавиатуры число х и выписать номера ячеек массива, где находится такое же значение массива.
var
A: array[0..20] of integer;
x, b, i, d, c: integer;
begin
writeln('Введите число элементов в массиве');
readln(d);
writeln('Введите число');;
readln(x);
b:=0;
for i:= 1 to d do
A[i] := random (20);
writeln(A);
for i:= 1 to d do
begin
c:= A[i];
if (c > b) then
b:=A[i]
end;
writeln('Максимальное значение в множестве: ', b);
for i:=0 to d do
begin
b:=A[i];
if b = x then
writeln ('Номера элементов, совпадающих с x: ', i)// Это если вести человеческую нумерацию, где первый элемент имеет номер 1.
end;
end.