Работа с элементами массивов. Удаление элемента массива - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Доброй ночи. Появилась еще одна небольшая проблема. Не могу реализовать следующие два вопроса (в коде пометил их комментариями как zadanie 3 и 4): 3. Найти произведение элементов одномерного массива после второго четного. 4. Удалить найденный по условию элемент одномерного массива.
Листинг программы
  1. program tt;
  2. var
  3. i,k,buff,j,n,pr:integer;
  4. a,b:array[1..10] of integer;
  5. begin
  6. read(n);
  7. for i:=1 to n do
  8. read(a[i]);
  9. for i:=1 to n do //3 zadanie nachalo
  10. begin
  11. if a[i] mod 2=0 then k:=k+1;
  12. if k=2 then break;
  13. end;
  14. i:=i+1;
  15. pr:=1;
  16. repeat begin
  17. pr:=pr*a[i];
  18. i:=i+1;
  19. end;
  20. until i=n+1;
  21. writeln(pr); //3 zadanie konec
  22. k:=0; //4 zadanie nachalo
  23. i:=1;
  24. while i<>n+1 do begin
  25. repeat begin
  26. if a[i] mod 2=0 then k:=k+1;
  27. if k=2 then begin
  28. buff:=i;
  29. break;
  30. end;
  31. b[i]:=a[i];
  32. i:=i+1;
  33. end;
  34. until i=n;
  35. i:=i+1;
  36. b[i]:=a[i];
  37. end;
  38. for i:=1 to buff do
  39. write(b[i],' ');
  40. for i:=i+1 to n do
  41. write(b[i],' ');//4 zadanie konec
  42. end.
С первым вопросом я благополучно справился, программа может найти произведение элементов массива после второго четного элемента. Со вторым же мне не удается справиться, возможно я что-то перепутал в циклах, но при вводе 5 элементов (например 1 2 3 4 5) программа дает ответ 1 2 3 0 5. Как сделать так, чтобы выдавало 1 2 3 5. Заранее спасибо. Но нужно срочно.

Решение задачи: «Работа с элементами массивов. Удаление элемента массива»

textual
Листинг программы
  1. var i,k,j,n,pr:integer;
  2.     a:array[1..10] of integer;
  3. begin
  4. readln(n);
  5. for i:=1 to n do
  6. read(a[i]);
  7. j:=0;
  8. for i:=1 to n do
  9.  begin
  10.   if a[i] mod 2=0 then k:=k+1;
  11.   if k=2 then
  12.    begin
  13.     j:=i;
  14.     break;
  15.    end;
  16.  end;
  17. if j=0 then
  18.  begin
  19.   writeln('В массиве нет двух четных элеменнтов');
  20.   readln;
  21.   exit;
  22.  end;
  23. if j=n then pr:=0
  24. else
  25.  begin
  26.   pr:=1;
  27.   for i:=j+1 to n do
  28.   pr:=pr*a[i];
  29.  end;
  30. writeln(pr);
  31. if j<n then
  32. for i:=j to n-1 do
  33. a[i]:=a[i+1];
  34. n:=n-1;
  35. for i:=1 to n do
  36. write(a[i],' ');
  37. readln
  38. end.

Объяснение кода листинга программы

В этом коде:

  1. Сначала программа запрашивает у пользователя количество элементов в массиве (переменная n).
  2. Затем программа считывает все элементы массива (переменная a).
  3. Далее, программа ищет второй четный элемент в массиве, начиная с первого элемента. Если такого элемента нет, программа выводит сообщение об этом и завершает свою работу.
  4. Если второй четный элемент найден, программа начинает цикл, который суммирует все оставшиеся элементы массива, начиная с третьего элемента.
  5. После завершения цикла, программа выводит сумму на экран.
  6. Затем программа удаляет второй четный элемент из массива, начиная с первого элемента, путем перебора оставшихся элементов.
  7. Наконец, программа выводит все оставшиеся элементы массива на экран. Список переменных и их значений:
  8. i, k, j, n, pr: целочисленные переменные для управления циклом и хранения результатов.
  9. a: массив целых чисел для хранения элементов.
  10. n: количество элементов в массиве.
  11. pr: сумма оставшихся элементов массива.
  12. j: индекс второго четного элемента в массиве.
  13. k: счетчик четных элементов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы