Форум «Всё о Паскале» _ Задачи _ Простенькая задача с массивами
Автор: Витёк 27.11.2006 19:09
Люди помогите пожалуйста в решении задачи. Условие такое: дан массив, нужно найти минимальный элемент и удалить его. Я смог найти минимальный элемент вот так:
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 19:25
удаление у тебя будет сводится к тому, что каждый из элементов, стоящих после твоего найденного, надо будет сдвинуть на один вперед. чтобы этого добиться, тебе надо запоминать не только чему равен сам минимальный элемент, но и его индекс.
Автор: Витёк 27.11.2006 19:31
Цитата(мисс_граффити @ 27.11.2006 15:25)
удаление у тебя будет сводится к тому, что каждый из элементов, стоящих после твоего найденного, надо будет сдвинуть на один вперед. чтобы этого добиться, тебе надо запоминать не только чему равен сам минимальный элемент, но и его индекс.
Что-то не соображу, как это в программе сделать
Автор: Витёк 27.11.2006 20:02
но не смог удалить его и вывести все остальные элементы. Подскажите как это сделать Ну помогите же. Я лично пытался, но не выходило. Препод говорит что это просто.
Автор: мисс_граффити 27.11.2006 20:48
как запоминать индекс минимального - можешь сообразить?
Автор: Витёк 27.11.2006 22:54
Цитата(мисс_граффити @ 27.11.2006 16:48)
как запоминать индекс минимального - можешь сообразить?
Что-то не получается. Да и незнаю как это делается.
Автор: мисс_граффити 28.11.2006 1:24
давай рассуждать логически. если у тебя есть строка
min:=a[i];
значит, индекс минимального равен i в данный момент, правильно? но i после этого не раз изменяется, значит, надо ввести какую-то другую переменную - например, назовем ее mini. понимаешь, куда надо вставить
mini:=i
?
Автор: Витёк 28.11.2006 17:43
Ну как я понял эту строчку
mini:=i
надо вставить после этого выражения
min:=a[i];
так да? Теперь я запомнил его индекс и мне нужно сместить весь массив вперёд так, что бы этот минимум удалить. А через какую функцию он сдвигается? Нам что-то подобное показывали, но я не совсем понял как это сделать
Автор: мисс_граффити 28.11.2006 18:36
да, вставить именно туда. только не забудь про begin и end функцию? стандартной я такой не знаю... обычно делают следующим образом:
a[i]:=a[i+1];
для всех i>=mini что делать с последним элементом - решай сам...