7 / 7 / 0
Регистрация: 02.12.2009
Сообщений: 102
|
|||||||||||
1 | |||||||||||
Найти номера первого и последнего минимального элемента из данного набора03.07.2011, 00:22. Просмотров 1697. Ответов 11
Метки нет Все метки)
(
Дано целое число N и набор из N целых чисел. Нужно в Delphi, найти номера первого и последнего минимального элемента из данного набора и вывести их в указанном порядке.
Данная программа есть на языке Pascal
Начал делать, окончательно запутался...
0
|
|
03.07.2011, 00:22 | |
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего минимального элемента из данного набора Найти номера первого и последнего минимального элемента из данного набора Найти номера первого минимального и последнего максимального элемента из данного набора Найти номера первого и последнего минимального элемента из данного набора и вывести их в указанном порядке. |
|
13058 / 5844 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
|
||||||
03.07.2011, 00:40 | 2 | |||||
Можно решать так:
1
|
7 / 7 / 0
Регистрация: 02.12.2009
Сообщений: 102
|
|
03.07.2011, 00:51 [ТС] | 3 |
Как заполнить массив? Или он был таким образом (строками выше) заполнен?
Т.е. через M, мы задаем размер массива, (например после 16 строки)? А где и как ввести в массив набор из N целых чисел?
0
|
13058 / 5844 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
|
||||||
03.07.2011, 01:42 | 4 | |||||
Можно сделать так:
Исходный массив и результаты решения задачи выводятся в Мемо2.
1
|
7 / 7 / 0
Регистрация: 02.12.2009
Сообщений: 102
|
|
03.07.2011, 02:27 [ТС] | 5 |
Mawrat, все ввел в делфи, расставил все панели, спасибо вам большое, программа класс.
Многое для себя узнал. --- Mawrat: Пожалуйста. ![]() Добавлено через 14 минут Mawrat, наверное не получится сделать так, что бы можно было вводить размер массива M? Т.е. я убираю const M = 15; Присваиваю тип для M:integer; Вывожу на кнопку M:=StrToInt(edt1.text); но делфи ругается на данную строчку Arr : array[1..M] of Integer; Только я вот не пойму почему так происходит.. Хотя может быть это нельзя сделать, т.к. далее везде M считывается везде как константа..
0
|
28 / 28 / 5
Регистрация: 29.06.2011
Сообщений: 61
|
||||||
03.07.2011, 02:37 | 6 | |||||
это можно реализовать, используя динамические массивы. пример:
1
|
13058 / 5844 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
|
||||||
03.07.2011, 02:44 | 7 | |||||
Можно сделать так, чтобы размер можно было задавать. Здесь можно пойти двумя путями:
1. - Решение на основе статического массива. - Можно задать статический массив достаточно большого размера - т. е., задать M таким, чтобы хватало для решения задачи. А пользователь будет вводить количество значимых элементов - N. И обработка элементов будет вестись в диапазоне индексов: 1..N. При этом, в коде должна быть проверка - чтобы не позволить вводить N большее, чем M - чтобы не произошло переполнение массива. 2. - Решение на основе динамического массива. В этом случае, размер массива можно задавать во время работы программы. И размер этого массива будет ограничен только размером непрерывного участка динамической памяти, который доступен программе. --- Вот, Kellendros, уже написал подсказку про динамический массив. ![]() Добавлено через 5 минут Вот как будет выглядеть решение с динамическим массивом:
1
|
28 / 28 / 5
Регистрация: 29.06.2011
Сообщений: 61
|
|
03.07.2011, 02:46 | 8 |
кстати, я только что написал прогу которая увеличивает размер массива по таймеру, и результатом стало создание массива на 30000000 ячеек, все integer, затраты памяти около 150мб и ошибок нет... можно сделать вывод что динам массив ограничен только параметрами компа, вывод лучше использовать динам массив. (а 300000000 стрингов - это 1,3 гига, и опять же тишина)))
0
|
7 / 7 / 0
Регистрация: 02.12.2009
Сообщений: 102
|
|
03.07.2011, 02:51 [ТС] | 9 |
Всё таки я решил оставить прогу без ввода размера. Ну очень уж мне понравились окошки showmessage
![]() Всем большое спасибо
0
|
28 / 28 / 5
Регистрация: 29.06.2011
Сообщений: 61
|
|
03.07.2011, 02:52 | 10 |
думаю можно закрывать тему
0
|
13058 / 5844 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
|
||||||
03.07.2011, 03:20 | 11 | |||||
Ну и ещё выложу одно решение - вариант с динамическим массивом и с предварительным вводом длины массива.
![]()
Индекс первого элемента любого массива (статического и динамического) можно определить с помощью функции: Low(Arr). Индекс последнего элемента массива: High(Arr). Длина массива (количество элементов): Length(Arr). --- Размер будет ограничен так: <максимальный объём памяти, который может быть выделен приложению в системе> - <данные программы (статические и динамические)>. Вернее, под массив может быть отдано не всё это оставшееся пространство, а наибольший непрерывный участок в этом пространстве. В 32 битных системах под управлением Win XP 32, максимально, приложению система может выделить, обычно - 2 ГБайта. Но может и больше - до 4 Гбайт, вроде - если это специальным образом запрограммировано в приложении.
1
|
7 / 7 / 0
Регистрация: 02.12.2009
Сообщений: 102
|
|
03.07.2011, 03:30 [ТС] | 12 |
Mawrat, WoW, спасибо за программу с дин. массивом и с указаниями showmessage, я как раз подумал о том чтобы был и дин. массив и showmessage
![]()
0
|
03.07.2011, 03:30 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.
Найти номера первого максимального и последнего минимального элемента из данного набора и вывести их в указанном порядке Найти номера первого и последнего максимального элемента из данного набора
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |