Помощь - Поиск - Пользователи - Календарь
Полная версия: Простенькая задача с массивами
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Витёк
Люди помогите пожалуйста в решении задачи. Условие такое: дан массив, нужно найти минимальный элемент и удалить его. Я смог найти минимальный элемент вот так:
 
const n =5;
type
list=1..n;
var i:list;
min:integer;
a:array[list] of integer;
begin
for i:=1 to n do
begin
writeln('введите',i);
readln(a[i]);end;
min=a[i];
for i:=2 to n do
begin
if a[i]<min then min:=a[i];end;
writeln(min);
end.

но не смог удалить его и вывести все остальные элементы. Подскажите как это сделать
мисс_граффити
удаление у тебя будет сводится к тому, что каждый из элементов, стоящих после твоего найденного, надо будет сдвинуть на один вперед.
чтобы этого добиться, тебе надо запоминать не только чему равен сам минимальный элемент, но и его индекс.
Витёк
Цитата(мисс_граффити @ 27.11.2006 15:25) *

удаление у тебя будет сводится к тому, что каждый из элементов, стоящих после твоего найденного, надо будет сдвинуть на один вперед.
чтобы этого добиться, тебе надо запоминать не только чему равен сам минимальный элемент, но и его индекс.

Что-то не соображу, как это в программе сделать
Витёк
но не смог удалить его и вывести все остальные элементы. Подскажите как это сделать
Ну помогите же. Я лично пытался, но не выходило. Препод говорит что это просто.
мисс_граффити
как запоминать индекс минимального - можешь сообразить?
Витёк
Цитата(мисс_граффити @ 27.11.2006 16:48) *

как запоминать индекс минимального - можешь сообразить?

Что-то не получается. Да и незнаю как это делается. wacko.gif
мисс_граффити
давай рассуждать логически.
если у тебя есть строка
min:=a[i];

значит, индекс минимального равен i в данный момент, правильно?
но i после этого не раз изменяется, значит, надо ввести какую-то другую переменную - например, назовем ее mini.
понимаешь, куда надо вставить
mini:=i
?
Витёк
Ну как я понял эту строчку
mini:=i

надо вставить после этого выражения
min:=a[i];

так да?
Теперь я запомнил его индекс и мне нужно сместить весь массив вперёд так, что бы этот минимум удалить.
А через какую функцию он сдвигается? Нам что-то подобное показывали, но я не совсем понял как это сделать
мисс_граффити
да, вставить именно туда.
только не забудь про begin и end
функцию? стандартной я такой не знаю...
обычно делают следующим образом:
a[i]:=a[i+1];

для всех i>=mini
что делать с последним элементом - решай сам...
volvo
Цитата
стандартной я такой не знаю...
Move в помощь smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.