Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Сортировка


Автор: MOLOT 1.10.2005, 12:44
Помогите решить:

Создать нетекстовый файл,содержащий информацию о поставках фруктов в магазин(наименование,объём-кол-во килограммов,цена).Переписать в текстовый файл информацию о поставках,упорядоченную в порядке возрастания объёмов.Вывести на экран название самых дешёвых фрукотв.Вывести на экран среднюю стоимость килограмма любых фруктов.

Автор: MOLOT 2.10.2005, 05:42
вот я попытался создать пример программы сортировки

Код

program SortRec;


const N = 4;
type
  TInfo = record
    Age:  integer; { возраст }
    Name: string [20];
  end;

  List = array [1..N] of TInfo; { массив записей содержит возраст и имя }

{ сравнивать по возрасту }
function Compare (T1,T2: TInfo): integer;
begin
    if T1.Age > T2.Age then Compare := 1
    else if T1.Age = T2.Age then Compare := 0
    else Compare := -1
end;

procedure QuickSort (var A: List; Lo, Hi: Integer);
var
 i,j: integer;
 x, y: TInfo;

procedure Sort (l, r: Integer);
begin
    repeat
          x := A[(l+r) shr 1];
          i := l; j := r;
          repeat
                while Compare( A[i], x ) < 0 do inc(i);
                while Compare( A[j], x ) > 0 do dec(j);
                if i <= j then
                begin
                     y := A[i]; A[i] := A[j]; A[j] := y;
                     inc(i); dec(j);
                end;
          until i > j;

          if l < j then Sort (l, j);
          l := i;
    until l >= r;
end;

begin
     Sort (Lo,Hi);
end; {QuickSort}

var
 Data: List;
 I: Integer;

begin { Main }

     { здесь заполнение массива записей }

     QuickSort (Data, 1, N); { сортировка массива записей от 1-й до N-й записи }

     { здесь вывод на экран массива записей }

end.

Добавлено @ 05:45
хорошо,тогда скажите как хотя бы сортировать и вывести информацию о дешёвых фруктах и среднюю стоимость килограмма

Автор: Zero 2.10.2005, 11:21
Цитата(MOLOT @ 2.10.2005, 05:42)
как хотя бы сортировать

Это значит расставить значения, так чтобы самые меньшие были слева, а большие справа
Цитата(MOLOT @ 2.10.2005, 05:42)
вывести информацию о дешёвых фруктах

Поставить условие, в котором будет написано "Если цена меньше либо равна число которое означает дешёвая, тогда вывести информацию о этом фрукте"
Цитата(MOLOT @ 2.10.2005, 05:42)
среднюю стоимость килограмма

Это общая стоимость товара, делённая на общий вес, в кг.
Если по конкретному пункту возникнут вопросу связанные с непонятностью, как конкретно выполнить какую либо из элементарных операций, возникающих при выполнении отдельного пункта то задавай их... smile

Автор: Romtek 3.10.2005, 02:03
Цитата(MOLOT @ 2.10.2005, 05:42)
вот я попытался создать пример программы сортировки
Узнаю свой код... (http://forum.sources.ru/index.php?showtopic=59376 - здесь я объяснил боле подробно.
Копирайты хотя бы скопировал! smile

Цитата(MOLOT @ 1.10.2005, 12:44)
Вывести на экран название самых дешёвых фрукотв.
Допустим, есть 20 товаров. Сколько из них считать дешёвыми?
Или дешевее средней цены? Это нужно обговорить.

Цитата(MOLOT @ 2.10.2005, 05:42)
тогда скажите как хотя бы сортировать и вывести информацию о дешёвых фруктах и среднюю стоимость килограмма
Критерий сортировки - поле цены (Price) в записи товара (Product).
Сравнивай оба поля цен у каждого товара, как описано в вышеперечисленной теме и таким образом массив List будет упорядочен по возрастанию цен, т.е. вверху списка будут самые дешёвые продукты. Теперь осталось решить которые из них выводить (относительно средней цены или первые несколько товаров).
Чтобы стало яснее, советую запустить приведённый там пример. Там показывается как выводится список.
Добавлено @ 02:09
Цитата(MOLOT @ 1.10.2005, 12:44)
Вывести на экран среднюю стоимость килограмма любых фруктов.
Это не имеет отношение к сортировке.

Средняя цена килограмма = (Сумма всех фруктов 1 -> N {Вес фрукта * Цена килограмма фрукта [i]} ) / Общий вес всей фрукты.

Автор: MOLOT 3.10.2005, 06:28

Writeln('Самый дешевый фрукт: ', data[i].Name);
Writeln('Стоимость :', data[i].Price);
Writeln('Средняя стоимость фруктов: ', prsr);
Readln;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)