Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Одномерный массив, Помогите с тупой задачей. Delphi 7 
:(
    Опции темы
Denwer
Дата 13.5.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



Помогите с этой задачей или подскажите где есть решение.
Задача: Дан массив, вывести все минимумы. 
К примеру: Массив[1, 3, 4, 1, 4, 5, 6, 1], получить вот [1, 1, 1].


Вот что я делаю, собственно говоря два цикла. Не пойму что не так.
В конечном итоге хочу получить массив а, со всеми минимами массива mas

Код

// тут бегу по полю(kolvo) записи и нахожу минимум.

begin
   min := 0;
     for i := 1 to high(mas) do
       begin
        if (mas[i].kolvo < mas[min].kolvo) then
         min := i;
        end;

    ShowMessage ('Kол-во ' + inttostr(mas[min].kolvo) + '.'); // Здесь минимальный выводит всё нормально

// тут сравниваю полученный минимум с этим же массивом
// и заношу в массив а.
   
   k := 0;
     for i := 1 to high(mas) do
      begin
       if mas[i].kolvo = mas[min].kolvo
        then
         k := k + 1;
         a[k] := mas[i].kolvo;
      end;
end.


Это сообщение отредактировал(а) Denwer - 13.5.2008, 22:22
PM WWW   Вверх
v1rtu0z
Дата 14.5.2008, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 21.4.2008
Где: Воронеж

Репутация: нет
Всего: нет



хм... на самом деле, задачка решается в 2 приема. в первом цикле ищется минимум  массива. во втором опять идем по массиву и сравниваем все элементы с найденным минимумом.. вот  и все
PM MAIL ICQ   Вверх
THandle
Дата 14.5.2008, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Как то так:

Код

type
  TArray = array of integer;



Код


function MinInArray(const Arr : TArray) : TArray;
var
  i, min : integer;
begin
  if Length(Arr) = 0 then
    exit;
  min := Arr[0];
  for i := 1 to High(arr) do
    if Arr[i] < min then
      min := arr[i];

  for i := 1 to High(Arr) do
    if Arr[i] = min then
      begin
        SetLength(result, length(result) + 1);
        result[high(result)] := Arr[i];
      end;
end;




Пример вызова:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  a, b : TArray;
  i : integer;
begin
  randomize;
  setlength(a, 10);
  for i := 0 to High(a) do
    begin
      a[i] := random(10);
      Memo1.Lines.Add(IntToStr(a[i]));
    end;
  b := MinInArray(a);
  for i := 0 to High(b) do
    Memo2.Lines.Add(IntToStr(b[i]));
end;


Это сообщение отредактировал(а) THandle - 14.5.2008, 10:04
PM   Вверх
Denwer
Дата 14.5.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



v1rtu0z,  на самом деле так я и делал, но выбивала ошибка
PM WWW   Вверх
THandle
Дата 14.5.2008, 10:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Denwer, посмотри мой вариант, он как раз таки так и делает, причем вполне успешно smile 
PM   Вверх
Denwer
Дата 14.5.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 19.6.2007
Где: Харьков

Репутация: нет
Всего: нет



THandle,  Вроде работает.

Код

      begin
        SetLength(result, length(result) + 1);
        result[high(result)] := Arr[i];
      end;


По видимому ошибка была, так как не была установлена длина массива.
Осталось протестить. 



Это сообщение отредактировал(а) Denwer - 14.5.2008, 22:46
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1125 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.