Вопрос задан 13.07.2023 в 07:20. Предмет Информатика. Спрашивает Йылмаз Дениз.

Написать программу в паскаль Дан целочисленный массив размера NN, содержащий ровно два одинаковых

элемента. Найти номера одинаковых элементов и вывести эти номера в порядке возрастания.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Малеков Денис.

Variant 1

var

 A: array[1..100] of integer;

 N, i, j: byte;

begin

 write('N = ');

 readln(N);

 for i := 1 to N do

 begin

   write('a[', i, '] = ');

   read(a[i])

 end;

 writeln;

 for i := 2 to N do

   for j := 1 to i - 1 do

     if a[i] = a[j] then begin

       writeln('Номера: ', j, ' и ', i);

       exit

     end;

 writeln

end.


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи в Pascal можно написать следующую программу. Для простоты, предположим, что массив заполняется пользователем.

pascal
program FindDuplicateElements; const MAX_N = 100; type TIntArray = array[1..MAX_N] of Integer; var N: Integer; Arr: TIntArray; DuplicateElement, i, j: Integer; FoundDuplicate: Boolean; procedure ReadArray(var Arr: TIntArray; N: Integer); var i: Integer; begin for i := 1 to N do begin Write('Введите элемент массива Arr[', i, ']: '); ReadLn(Arr[i]); end; end; procedure FindDuplicateElements(const Arr: TIntArray; N: Integer; var DuplicateElement: Integer); var i, j: Integer; begin FoundDuplicate := False; for i := 1 to N - 1 do begin for j := i + 1 to N do begin if Arr[i] = Arr[j] then begin DuplicateElement := Arr[i]; FoundDuplicate := True; Break; end; end; if FoundDuplicate then Break; end; end; procedure PrintDuplicateIndexes(const Arr: TIntArray; N, DuplicateElement: Integer); var i: Integer; begin Write('Номера одинаковых элементов (', DuplicateElement, '): '); for i := 1 to N do begin if Arr[i] = DuplicateElement then Write(i, ' '); end; WriteLn; end; begin Write('Введите размер массива N (N > 1 и N <= ', MAX_N, '): '); ReadLn(N); if (N <= 1) or (N > MAX_N) then begin WriteLn('Некорректный размер массива N. Пожалуйста, повторите ввод.'); Exit; end; ReadArray(Arr, N); FindDuplicateElements(Arr, N, DuplicateElement); if FoundDuplicate then PrintDuplicateIndexes(Arr, N, DuplicateElement) else WriteLn('В массиве нет двух одинаковых элементов.'); end.

В данной программе, предполагается, что пользователь сначала вводит размер массива N, а затем вводит его элементы. После этого, программа ищет два одинаковых элемента и выводит номера этих элементов в порядке возрастания.

Обратите внимание, что программа преднамеренно использует простой алгоритм для поиска одинаковых элементов, который может быть неэффективен для больших массивов. Однако, он хорошо подходит для небольших массивов, которые вам, возможно, понадобятся для тестирования. Если нужно оптимизировать для больших массивов, можно рассмотреть более эффективные алгоритмы поиска дубликатов, такие как использование хэш-таблицы или сортировки массива.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос