Работа с элементами массивов. Удаление элемента массива - Free Pascal
Формулировка задачи:
Доброй ночи. Появилась еще одна небольшая проблема. Не могу реализовать следующие два вопроса (в коде пометил их комментариями как zadanie 3 и 4):
3. Найти произведение элементов одномерного массива после второго четного.
4. Удалить найденный по условию элемент одномерного массива.
С первым вопросом я благополучно справился, программа может найти произведение элементов массива после второго четного элемента. Со вторым же мне не удается справиться, возможно я что-то перепутал в циклах, но при вводе 5 элементов (например 1 2 3 4 5) программа дает ответ 1 2 3 0 5. Как сделать так, чтобы выдавало 1 2 3 5. Заранее спасибо. Но нужно срочно.
Листинг программы
- program tt;
- var
- i,k,buff,j,n,pr:integer;
- a,b:array[1..10] of integer;
- begin
- read(n);
- for i:=1 to n do
- read(a[i]);
- for i:=1 to n do //3 zadanie nachalo
- begin
- if a[i] mod 2=0 then k:=k+1;
- if k=2 then break;
- end;
- i:=i+1;
- pr:=1;
- repeat begin
- pr:=pr*a[i];
- i:=i+1;
- end;
- until i=n+1;
- writeln(pr); //3 zadanie konec
- k:=0; //4 zadanie nachalo
- i:=1;
- while i<>n+1 do begin
- repeat begin
- if a[i] mod 2=0 then k:=k+1;
- if k=2 then begin
- buff:=i;
- break;
- end;
- b[i]:=a[i];
- i:=i+1;
- end;
- until i=n;
- i:=i+1;
- b[i]:=a[i];
- end;
- for i:=1 to buff do
- write(b[i],' ');
- for i:=i+1 to n do
- write(b[i],' ');//4 zadanie konec
- end.
Решение задачи: «Работа с элементами массивов. Удаление элемента массива»
textual
Листинг программы
- var i,k,j,n,pr:integer;
- a:array[1..10] of integer;
- begin
- readln(n);
- for i:=1 to n do
- read(a[i]);
- j:=0;
- for i:=1 to n do
- begin
- if a[i] mod 2=0 then k:=k+1;
- if k=2 then
- begin
- j:=i;
- break;
- end;
- end;
- if j=0 then
- begin
- writeln('В массиве нет двух четных элеменнтов');
- readln;
- exit;
- end;
- if j=n then pr:=0
- else
- begin
- pr:=1;
- for i:=j+1 to n do
- pr:=pr*a[i];
- end;
- writeln(pr);
- if j<n then
- for i:=j to n-1 do
- a[i]:=a[i+1];
- n:=n-1;
- for i:=1 to n do
- write(a[i],' ');
- readln
- end.
Объяснение кода листинга программы
В этом коде:
- Сначала программа запрашивает у пользователя количество элементов в массиве (переменная
n
). - Затем программа считывает все элементы массива (переменная
a
). - Далее, программа ищет второй четный элемент в массиве, начиная с первого элемента. Если такого элемента нет, программа выводит сообщение об этом и завершает свою работу.
- Если второй четный элемент найден, программа начинает цикл, который суммирует все оставшиеся элементы массива, начиная с третьего элемента.
- После завершения цикла, программа выводит сумму на экран.
- Затем программа удаляет второй четный элемент из массива, начиная с первого элемента, путем перебора оставшихся элементов.
- Наконец, программа выводит все оставшиеся элементы массива на экран. Список переменных и их значений:
- i, k, j, n, pr: целочисленные переменные для управления циклом и хранения результатов.
- a: массив целых чисел для хранения элементов.
- n: количество элементов в массиве.
- pr: сумма оставшихся элементов массива.
- j: индекс второго четного элемента в массиве.
- k: счетчик четных элементов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д