Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 18:54   #1
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию Поиск минимального элемента в перевернутом массиве

Написал программку которая исходный массив переворачивает и выводит минимальный элемент исходного массива. Как сделать, чтобы минимальный элемент выводился из перевернутого массива? Создавал дополнительный массив, присваивал значения первого массива ко второму и искал во втором массиве, но выдавало ошибку, что значение выходит из границ диапазона. Не знаю как написать правильно.
Кто может подсказать, как правильно присвоить значения ко второму массиву? Код "исходный массив переворачивает и выводит минимальный элемент исходного массива". Заранее спасибо.

Код:
uses
  CRT;
var
  a:array[1..10] of integer;
  i,n,min:integer;


begin
  clrscr;

  writeln('введите размерность массива');
  readln(n);
  writeln('введите элементы массива');
   for i:=1 to n do
    begin
     readln(a[i]);
    end;
  writeln('исходный массив');
    for i:=1 to n do
     begin
      write(a[i],' ');
     end;
   readln;
 writeln('перевернутый массив');
   for i:=n downto 1 do
     write(a[i],' ');
   readln;
   min := 1;
     for i := 1 to n do
    if a[i] < a[min] then
      min := i;
  // вывод результата

  Writeln('Минимальный элемент массива: ',a[min]);
  Writeln('Индекс минимального элемента: ',min);
end.
Kovax вне форума Ответить с цитированием
Старый 26.02.2011, 19:24   #2
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Во-первых зачем переворачивать массив?! Не надо! Ведь для поиска минимального элемента достаточно последнего цикла. Только вместо
Код:
if a[i] < a[min] then
нужно
Код:
if a[i] < min then
Все.
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 26.02.2011, 22:25   #3
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
Во-первых зачем переворачивать массив?! Не надо! Ведь для поиска минимального элемента достаточно последнего цикла. Только вместо
Код:
if a[i] < a[min] then
нужно
Код:
if a[i] < min then
Все.
Просто требуется перевернуть исходный массив и найти минимальный элемент в перевернутом массиве.
Kovax вне форума Ответить с цитированием
Старый 26.02.2011, 23:35   #4
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Ну без проблем. Переворачиваем массив. А дальше ищем так же.
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 27.02.2011, 11:31   #5
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Да это я тоже пробовал, просто сама запись кода у меня не получается. Сначала пытался присвоить значения перевернутого массива к дополнительному, чтобы потом найти элемент. Не получилось. Попытка присвоить значения - "Ошибка: 0 - выход за границы диапазона изменения индекса 1..10"

Последний раз редактировалось Kovax; 27.02.2011 в 11:33.
Kovax вне форума Ответить с цитированием
Старый 27.02.2011, 11:56   #6
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
перевернуть исходный массив и найти минимальный элемент в перевернутом массиве.
Ну так минимальный элемент в перевернутом массиве, будет таким же как и в исходном.
И вы не переворачиваете массив, вы просто выводите его в обратном порядке... Ну да ладно
Код:
for i:=n downto 1 do
   begin
      k:=k+1;
      b[k]:=a[i];
   end;
min:=b[1];
for i:=1 to n do
   if b[i]<min then min:=b[i];
P.S.
Цитата:
"Ошибка: 0 - выход за границы диапазона изменения индекса 1..10"
А вы не вводите размерность массива больше 10
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 27.02.2011, 11:59   #7
JinglsOrg
Пользователь
 
Аватар для JinglsOrg
 
Регистрация: 27.01.2011
Сообщений: 48
По умолчанию

ga:=a[n+1-i];
a[n+1-i]:=a[i];
a[i]:=ga;
переворачивает массив.(цикл длинной в половину массива)

min_i:=1;
for i:=1 to n do
if a[min_i]<a[i] then min_i:=i;
находит индекс минимального эллемента массива.
иль я опять что не так понял?
Всё написанное мной является лично моим мнением за исключением когда указан источник данных.
JinglsOrg вне форума Ответить с цитированием
Старый 27.02.2011, 12:59   #8
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Niro
Сделал так, ищет минимальный элемент, но он зацикливается на индексе 1.
Kovax вне форума Ответить с цитированием
Старый 27.02.2011, 13:16   #9
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Kovax, напишите конкретно что вы делаете (какие значения вводите) и где что зацикливается
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 27.02.2011, 13:35   #10
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Мне кажется что я что-то не так делаю

Код:
uses
  CRT;
var
  a,b:array[1..10] of integer;
  i,n,k,min:integer;


begin
  clrscr;

  writeln('введите размерность массива');
  readln(n);
  writeln('введите элементы массива');
   for i:=1 to n do
    begin
     readln(a[i]);
    end;
  writeln('исходный массив');
    for i:=1 to n do
     begin
      write(a[i],' ');
     end;
   readln;
 writeln('перевернутый массив');
   for i:=n downto 1 do
     write(a[i],' ');
   readln;
for i:=n downto 1 do
   begin
      k:=k+1;
      b[k]:=a[i];
   end;
min:=b[1];
for i:=1 to n do
   if b[i]<min then min:=b[i];
  // вывод результата

  Writeln('Минимальный элемент массива: ',b[min]);
  Writeln('Индекс минимального элемента: ',min);
end.
Kovax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, массивы, поиск минимального элемента isJoga Помощь студентам 4 09.06.2010 17:35
Поиск минимального элемента в матрице F1eCSo Помощь студентам 0 04.02.2010 17:20
Поиск минимального и максимального элемента в двухмерном массиве. Dem6 Общие вопросы Delphi 10 30.11.2009 20:22
Нахождение минимального элемента в массиве [Паскаль] pionerka Помощь студентам 4 03.11.2009 16:02
Поиск минимального (максимального) элемента массива Radamant Помощь студентам 10 24.12.2008 17:44