Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2013, 01:02   #1
Serikbye
 
Регистрация: 07.10.2013
Сообщений: 7
По умолчанию сортировка

можете помочь?! я програмку написал но не могу сюда добавить процедуру сортировки. (все готова, мне лишь нужна сортировка по этой проге)
а вот и само задание: Дан список, содержащий 10 записей, каждая из которых содержит четыре поля: 1 – шифр товара (символьное поле длиной 5), 2 – наименование товара (символьное поле длиной 20), 3- цена (вещественное положительное число), 4 - количество экземпляров (целое положительное число).
Список упорядочен по убыванию цены товара.
Разработать алгоритмы и программы линейного и двоичного поиска всех товаров, имеющих цену меньше 20000 тенге

а вот и сама программа:
Код:
  Type
 t_time=record
  end;
 tzap=record {описание типа для одной записи списка}
 shifr:string[5];
 nai:string[20];
 kol:integer;
 price:real;
 end;
Var Spis:array[1..10]of tzap; {описание списка}
 i,n:byte;

 Begin
 begin
 Write(' введите число записей в списке N = ');
 Readln(N);
 Writeln('введите список по полям - каждое поле с новой строки');
 For i:=1 to N do
 With Spis[i] do
 begin
Write(' шифр товара - 5 символов ');
Readln(shifr);
Write(' наименование - 20 символов ');
Readln(nai);
Write(' количество = ');
Readln(kol);
 Write(' цена  = ');
 Readln(price);
 end;

 {организация поиска заданного товара в массиве записей Spis}
 for i:=1 to N do
 with Spis[i] do
 if price < 20000 then
 begin  writeln(' товары найдены');
 writeln(nai[i],' ');
 writeln(shifr[i],' ');
 writeln(kol);
 writeln(price);
 end;
 writeln('товары не найдены');
End;
end.

Последний раз редактировалось Stilet; 10.11.2013 в 10:50.
Serikbye вне форума Ответить с цитированием
Старый 10.11.2013, 08:45   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
Type
tzap=record {описание типа для одной записи списка}
shifr:string[5];
nai:string[20];
kol:integer;
price:real;
end;
const n=10;
Var Spis:array[1..n]of tzap; {описание списка}
    i,j:byte;
    x:tzap;
begin
//..........................
{сортировка по убыванию цены}
for i:=1 to n-1 do
for j:=i+1 to n do
if spis[i].price<spis[j].price then
 begin
  x:=spis[i];
  spis[i]:=spis[j];
  spis[j]:=x
 end;
..............................
puporev вне форума Ответить с цитированием
Старый 10.11.2013, 11:20   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотрим внимательно сюда (сортировка записей):
http://www.programmersforum.ru/showthread.php?t=33047
http://www.programmersforum.ru/showthread.php?t=94486

Бинарный поиск можно подсмотреть здесь:
http://www.programmersforum.ru/showt...288#post729288
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2013, 16:46   #4
Serikbye
 
Регистрация: 07.10.2013
Сообщений: 7
По умолчанию

Спасибо за помощь, очень помогли.
не могли бы помочь еще с двоичным поиском. и еще не могли бы сказать, эта работа удовлетворяет условием задания(тут нужно было написать программу с помощью линейного поиска всех товаров)
вот исправленная работа:
Код:
Type
 tzap=record {Описание типа для одной записи списка}
 shifr:string[5];
 nai:string[20];
 kol:integer;
 price:real;
 end;
const n=5;
Var Spis:array[1..n]of tzap; {Описание списка}
 i,j:byte;
 x:tzap;


 Begin
 begin

 Writeln('Введите список по полям - каждое поле с новой строки');
 For i:=1 to N do
 With Spis[i] do
 begin
Write(' Шифр - 5 символов ');
Readln(shifr);
Write(' Наименование - 20 символов ');
Readln(nai);
Write(' Количество = ');
Readln(kol);
 Write(' Цена товара = ');
 Readln(price);
 end;

 {Oрганизация поиска заданного товара в массиве записей Spis}
WriteLn('Удовлетворяют запросу товары:');
WriteLn;
 with Spis[i] do
  begin
//сортировка по убыванию цены
for i:=1 to n-1 do
for j:=i+1 to n do
if spis[i].price<spis[j].price then
 begin
  x:=spis[i];
  spis[i]:=spis[j];
  spis[j]:=x
 end;
  for i:=1 to N do
 if price < 20000 then
 begin
writeln('шифр: ',spis[i].shifr );
WriteLn('наименование: ',spis[i].nai);
WriteLn('количество: ',spis[i].kol);
WriteLn('цена:',spis[i].price);
 end;
End;
readln;
end;
end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 10.11.2013 в 22:40.
Serikbye вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрая сортировка(сортировка Хоара). Сортировка фрагмента массива [C++] druger Помощь студентам 0 20.04.2012 15:49
Сортировка Шелла и Шейкер-сортировка AleksandrMakarov Паскаль, Turbo Pascal, PascalABC.NET 11 11.03.2012 12:18
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57
Сортировка файлов в Explorer vs сортировка в Delphi mutabor Общие вопросы Delphi 11 04.09.2009 14:32