Определить количество различных элементов в данном массиве - Turbo Pascal
Формулировка задачи:
Дан одномерный массив ненулевых целых чисел размера N/
1.Определить количество различных элементов в данном массие, найти произведение этих элементов;
2.После каждого отрицательного элемента массива вставить элемент с нулевым значением;
3. Осуществить циклический сдвиг элементов массива вставить элемент вправо на одну позицию.
для откладки программы исходный массив сформировать с помощью генератора случайных чисел.
Решение задачи: «Определить количество различных элементов в данном массиве»
textual
Листинг программы
var
a: array [1..30] of integer;
j,temp,N,i:integer;
begin
writeln('Введите N (N<=10)');
readln(N);
writeln('Значения массива А');
for i:=1 to n do begin write('a[',i,']=');readln(A[i]); end;
// решение
temp:=0;
for i:=1 to n do
begin
if a[i]<0 then inc(temp);
end;
j:=n;
for i:=n+temp downto 1 do
begin
if a[j]<0 then begin a[i]:=0; dec(i); end;
a[i]:=a[j];
dec(j);
end;
n:=n+temp;
Writeln('Ответ');
Writeln;
Write(' A[]: '); for i:=1 to n do Write(A[i],' ');
end.
Объяснение кода листинга программы
- Создается переменная
aтипаarray [1..30] of integer. Это означает, чтоaявляется массивом из 30 элементов типаinteger. - Затем определяются три переменные:
j,tempиN. Переменнаяjинициализируется значениемn, а переменнаяtempинициализируется значением0. ПеременнаяNинициализируется значением, введенным пользователем. - Выводится сообщение
Введите N (N<=10). Это предложение предлагает пользователю ввести значениеN, которое должно быть меньше или равно 10. - Выводится сообщение
Значения массива А. Это сообщение указывает, что будет выводиться содержимое массиваA. - Запускается цикл
for, который начинается сi=1и продолжается доi<=n. Внутри цикла выводится значениеa[i]с помощью функцииwrite. После этого вызывается функцияreadln, чтобы пользователь мог ввести значение дляA[i]. - Внутри цикла
forпеременнойjприсваивается значениеn. Это означает, чтоjбудет указывать на последний элемент массиваA. - Запускается еще один цикл
for, который начинается сi=n+tempи продолжается доi>=1. Внутри цикла проверяется, является ли значениеa[i]отрицательным. Если это так, то значениеiувеличивается на1, и переменнаяa[i]устанавливается в0. - После завершения внутреннего цикла
forпеременнаяjуменьшается на1с помощью функцииdec. - Значение
a[i]копируется из переменнойjв переменнуюa[i-1]. Это означает, что значениеa[i]заменяется значениемa[i-1]. - Переменная
jснова уменьшается на1с помощью функцииdec. - Цикл
forзавершается, и выводится сообщениеОтвет. - Выводится пустая строка с помощью функции
writeln. - Выводится сообщение
A[]:с помощью функцииwrite. - Запускается цикл
for, который начинается сi=1и продолжается доi<=n. Внутри цикла выводится значениеA[i]с помощью функцииwrite.