В массиве определить 2 элемента с наибольшими значениями - Pascal ABC

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

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

Задание. В произвольно заданном одномерном массиве определить 2 элемента с наибольшими значениями и обнулить все элементы,расположенные между найденными значениями.
Листинг программы
  1. program 1
  2. const
  3. nmax=25;
  4. var
  5. i,n:integer;
  6. a:array[1..max] of integer
  7. max1,imax1:integer; {pervoe max znach v massive}
  8. max2,imax2:integer; {vtoroe max znach v massive}
  9. Begin
  10. Writeln('Введите кол-во элементов массива');
  11. Readln (n);
  12. writeln('Введите',n,' элементов массива');
  13. for i:=1 to n do
  14. begin
  15. writeln('a[',i,']=');
  16. read(a[i];
  17. end;
  18. writeln('Исходный массив');
  19. for i:=1 to n do
  20. write (a[i]:7);
  21. writeln;
  22. {Поиск 2х элементов с наиб. значениями}
  23. {1ый элемент}
  24. max1:=a[1];
  25. imax1:=1;
  26. for i:=2 to n do
  27. if a[i]>max1
  28. then
  29. begin
  30. max1:=a[i];
  31. imax1:=i;
  32. end;
  33. {2ой элемент} {Примерно отсюда идёт бред}
  34. max2:=a[2];
  35. imax2:=2;
  36. for i:=3 to n do
  37. if a[i]>max2
  38. then
  39. begin
  40. max2:=a[i];
  41. imax2:=i;
  42. end;
  43. обнулить забыл как)) Лето...}
И если не трудно,можно,пожалуйста блок-схему. ( Массив,естественно,раскрывать не нужно) Спасибо!

Решение задачи: «В массиве определить 2 элемента с наибольшими значениями»

textual
Листинг программы
  1. const nmax=25;
  2. var a:array[1..nmax] of integer;
  3.     n,i,imax1,imax2,x:integer;
  4. begin
  5. repeat
  6. write('Введите кол-во элементов массива от 2 до ',nmax,' n=');
  7. readln (n);
  8. until n in [2..nmax];
  9. writeln('Введите',n,' элементов массива');
  10. for i:=1 to n do
  11.  begin
  12.   writeln('a[',i,']=');
  13.   readln(a[i]);
  14.  end;
  15. writeln('Исходный массив');
  16. for i:=1 to n do
  17. write (a[i],' ');
  18. writeln;
  19. {Поиск 2х элементов с наиб. значениями}
  20. if a[1]>a[2] then
  21.  begin
  22.   imax1:=1;
  23.   imax2:=2;
  24.  end
  25. else
  26.  begin
  27.   imax1:=2;
  28.   imax2:=1;
  29.  end;
  30. for i:=3 to n do
  31. if a[i]>a[imax1] then
  32.  begin
  33.   imax2:=imax1;
  34.   imax1:=i;
  35.  end
  36. else if a[i]>a[imax2] then imax2:=i;
  37. writeln('Первый максимальный элемент=',a[imax1],' его номер=',imax1);
  38. writeln('Второй максимальный элемент=',a[imax2],' его номер=',imax2);
  39. if abs(imax1-imax2)=1 then write('Нет элементов для обнуления')
  40. else
  41.  begin
  42.   if imax2<imax1 then
  43.    begin
  44.     x:=imax1;
  45.     imax1:=imax2;
  46.     imax2:=x;
  47.    end;
  48.   for i:=imax1+1 to imax2-1 do
  49.   a[i]:=0;
  50.   writeln('Измененный массив');
  51.   for i:=1 to n do
  52.   write(a[i],' ');
  53.  end;
  54. end.

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

  1. Создается переменная nmax, которая имеет максимальное значение для количества элементов в массиве, равное 25.
  2. Создается переменная a, которая представляет собой массив целых чисел.
  3. Создаются три переменные: n, i и imax1. Переменная n используется для хранения введенного пользователем количества элементов массива, переменная i используется для перебора элементов массива, а переменная imax1 используется для хранения индекса первого максимального элемента.
  4. Выводится сообщение с просьбой ввести количество элементов массива от 2 до nmax.
  5. Считывается введенное пользователем количество элементов массива.
  6. Выводится сообщение с просьбой ввести n элементов массива.
  7. Для каждого i от 1 до n выполняется цикл. В каждой итерации выводится сообщение с просьбой ввести значение элемента массива a[i].
  8. Если a[1] больше a[2], то переменные imax1 и imax2 устанавливаются в 1 и 2 соответственно.
  9. Если a[i] больше a[imax1] для i от 3 до n, то переменные imax1 и imax2 обновляются. Если a[i] больше a[imax2], то imax2 устанавливается в i.
  10. Выводится сообщение с просьбой ввести два элемента массива с наибольшими значениями.
  11. Если abs(imax1 - imax2) равно 1, то выводится сообщение Нет элементов для обнуления.
  12. Если imax2 меньше imax1, то переменные x, imax1 и imax2 устанавливаются в x = imax1, imax1 = imax2 и imax2 = x соответственно.
  13. Для каждого i от imax1 + 1 до imax2 - 1 выполняется цикл. В каждой итерации a[i] устанавливается в 0.
  14. Выводится измененный массив.
  15. Для каждого i от 1 до n выполняется цикл. В каждой итерации выводится значение a[i].

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


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

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

14   голосов , оценка 4.214 из 5

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

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

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