Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Не добавляется модуль https://www.cyberforum.ru/ delphi-beginners/ thread328955.html
Не судите строго... так как я только осваиваю Дельфи (до этого С++)... Начал недавно ковырять одну прогу и столкнулся с проблемой подключения новых модулей.... начну попорядку... Сама прога ...
Listview текст в несколько строк Delphi
В общем такое дело необходимо в listview (ViewStyle:=vsReport) в один итем загнать несколько строчек текста чтоб было примерно как в AIMP2 где под названием мелодии указываеться её битрейт,размер и...
Запись в файл и считывание Delphi
Доброго времени суток!! У мене возник такой вопрос: у меня есть тип :inf= record firm:string; shyfr:integer; ...
Delphi Добавить строку в файл Блин, совсем из головы все повылетало. есть следующее: type TSpravTkan = packed record Number: Integer; Name: String; end; ... var SpravTkan: TSpravTkan; https://www.cyberforum.ru/ delphi-beginners/ thread328927.html
Delphi Описать процедуру AddRightDigit(D, K) https://www.cyberforum.ru/ delphi-beginners/ thread328918.html
Нужно в Delphi описать процедуру AddRightDigit(D, K), добавляющую к целому положительному числу K справа цифру D (D — входной параметр целого типа, лежащий в диапазоне 0–9, K — параметр целого...
Delphi Считывание массива из Edit
Ситуация такая - Пользователь должен ввести элемент вектора в Edit1 и после нажатия Button1 этот элемент должен быть выведен в Memo1 и добавлен в одномерный массив. После необходимо еще работать с...
Delphi построить массив A = (ai) элементы которого задаются формулой: аі=(1+1/2+...+1/і)/ і!, (і=1,2,...,n)
как сделать??? построить массив A = (ai) элементы которого задаются формулой: аі=(1+1/2+...+1/і)/ і!, (і=1,2,...,n)
Delphi крестики-нолики написал крестики-нолики,но не работает,так сказать "интелект"(он выражен в подпрограмме opas) при таком варианте как у меня сейчас,он иногда не ставит нолик вообще,если opas не испольщовать,то ход... https://www.cyberforum.ru/ delphi-beginners/ thread328866.html
Delphi delphi-компоненты https://www.cyberforum.ru/ delphi-beginners/ thread328865.html
обясните как написать... используя компоненты Edit, SpinEdit и StringGrid создать проект для решения следующей задачи. если введена последовательность чисел образует арифметическую прогрессию, то...
Delphi Максимально значение среди четных до первого нечетного Задан целочисленный массив a из n строк и m столбцов. Найти значение максимального элемента среди четных (по значению) элементов,расположенных до первого нечетного элемента. Матрицу расматривать по... https://www.cyberforum.ru/ delphi-beginners/ thread328846.html
13065 / 5851 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
03.07.2011, 03:20 0

Найти номера первого и последнего минимального элемента из данного набора

03.07.2011, 03:20. Просмотров 1711. Ответов 11
Метки (Все метки)

Ответ


Ну и ещё выложу одно решение - вариант с динамическим массивом и с предварительным вводом длины массива. Там длина массива читается из Edit. Индексация элементов в динамических массивах идёт от нуля. Здесь количество элементов массива равно M - это число задаёт пользователь через элемент Edit1. Таким образом, индекс последнего элемента массива будет равен: (M - 1).
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
procedure TForm1.Button1Click(Sender: TObject);
var
  Arr : array of Integer;
  i, j, M, IMin1, IMin2 : Integer;
  S : String;
begin
  //Очистка Мемо2.
  Memo2.Clear;
 
  //Читаем сведения о длине массива.
  M := StrToInt(Edit1.Text);
  if M < 1 then begin
    ShowMessage('Задайте длину массива положительным целым числом.');
    Exit;
  end;
  //Задаём длину массива.
  SetLength(Arr, M);
 
  //Заполнение массива из Мемо1.
  j := -1;
  for i := 0 to Memo1.Lines.Count - 1 do begin
    if Memo1.Lines[i] <> '' then begin
      Inc(j);
      Arr[j] := StrToInt(Memo1.Lines[i]);
    end;
    if j = (M - 1) then begin
      ShowMessage('Достигнута граница массива: ' + IntToStr(M) + ' элементов.');
      Break;
    end;
  end;
 
  if j < (M - 1) then begin
    ShowMessage(
      'Значения недостающих элементов массива в количестве: ' + IntToStr(M - 1 - j)
      + ' созданы случайным образом.'
    );
    Randomize;
    for i := j + 1 to M - 1 do begin
      Arr[i] := Random(21); //0..20.
    end;
  end;
 
  //Распечатка исходного массива.
  Memo2.Lines.Add('Исходный массив:');
  S := '';
  for i := 0 to M - 1 do begin
    if S <> '' then S := S + ', ';
    S := S + IntToStr(Arr[i]);
  end;
  Memo2.Lines.Add(S);
 
  //Решение задачи.
  IMin1 := 0;
  IMin2 := -1;
  for i := 1 to M - 1 do begin
    if Arr[i] < Arr[IMin1] then begin
      IMin1 := i;
      IMin2 := -1;
    end else if Arr[i] = Arr[IMin1] then begin
      IMin2 := i;
    end;
  end;
 
  //Ответ распечатываем в Мемо2.
  Memo2.Lines.Add('Индексация в массиве принята от нуля.');
  if IMin2 = -1 then begin
    Memo2.Lines.Add('В массиве только один минимальный элемент. Его индекс: ' + IntToStr(IMin1));
  end else begin
    Memo2.Lines.Add('Индекс первого минимального элемента: ' + IntToStr(IMin1));
    Memo2.Lines.Add('Индекс последнего минимального элемента: ' + IntToStr(IMin2));
  end;
end;
Для справки:
Индекс первого элемента любого массива (статического и динамического) можно определить с помощью функции: Low(Arr). Индекс последнего элемента массива: High(Arr). Длина массива (количество элементов): Length(Arr).
---
Цитата Сообщение от Kellendros Посмотреть сообщение
можно сделать вывод что динам массив ограничен только параметрами компа,
Размер будет ограничен так: <максимальный объём памяти, который может быть выделен приложению в системе> - <данные программы (статические и динамические)>.
Вернее, под массив может быть отдано не всё это оставшееся пространство, а наибольший непрерывный участок в этом пространстве. В 32 битных системах под управлением Win XP 32, максимально, приложению система может выделить, обычно - 2 ГБайта. Но может и больше - до 4 Гбайт, вроде - если это специальным образом запрограммировано в приложении.

Вернуться к обсуждению:
Найти номера первого и последнего минимального элемента из данного набора
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2011, 03:20
Готовые ответы и решения:

Дано целое число N и набор из N целых чисел. Найти номера первого и последнего минимального элемента из данного набора
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего минимального...

Найти номера первого и последнего минимального элемента из данного набора
#include &lt;stdio.h&gt; int main(void) { int i,n,ni,minn1,minn2,min1,min2; printf(&quot;N:&quot;); ...

Найти номера первого минимального и последнего максимального элемента из данного набора
Мальчики и девушки, помогите пожалуйста решить задачку на С++.... Дано целое число N и набор из N...

Найти номера первого и последнего минимального элемента из данного набора и вывести их в указанном порядке.
Дано целое число N и набор из N целых чисел. Найти номера первого и последнего минимального...

11
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.