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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2011, 20:43   #1
gunit
 
Регистрация: 28.09.2011
Сообщений: 3
По умолчанию файл

Дан типизированный файл F содержащий информацию об услугах. О каждой услуги представлена следующая информаци: Наименование услуги, Цена услуги. За один просмотр и без использования дополнительных файлов напечатать элементы файла F в алфавитном порядке. Порядок в этом списке определяется первой буквой наименования услуги.
gunit вне форума Ответить с цитированием
Старый 28.09.2011, 20:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и в чем проблема? Запиши содержимое файла в динамический массив и сортируй его как хочешь. Как динмассивы создавать знаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2011, 20:51   #3
gunit
 
Регистрация: 28.09.2011
Сообщений: 3
По умолчанию

да я первый раз сталкиваюсь с паскалем помогите плиз оч прошу
gunit вне форума Ответить с цитированием
Старый 28.09.2011, 21:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
type r=record
  i:integer;
  s:string[50];
 end;

var f:file of r; rp,last,q:^r; mass:pointer; z:integer; m:r;

 procedure aga(s:string); var rr:r; begin rr.s:=s;rr.i:=random(100); write(f,rr);end;
begin
 Assign(f,'file');rewrite(f);
  aga('Pirates');   aga('Hello');
 reset(f);
 z:=filesize(f)*sizeof(r); // Вычисляем размер для массива
 GetMem(mass,z); // Забиваем память побайтно для всего файла
 rp:=mass;    // mass это голова массива, rp - итератор
 while not eof(f) do begin // Считываем записи в массив
  read(f,rp^);
  writeln(rp^.s);
  inc(rp); // Итератор перескакивает на следующий элемент для считывания
 end;  last:=rp; // last - типа конец массива. Неэстетично но ничего страшного

 // Почалась канитель с сортировкой
 rp:=mass;
 // Пока итератор не достиг конца массива
 while rp<>last do begin
   // сортируем. Пузырькова сортировка
   q:=mass;
   // по этому же массиву другим итератором (см. алгоритм пузырька)
   while q<>last do begin
    if q^.s[1]>rp^.s[1] then begin
      m:=q^;q^:=rp^;rp^:=m;
    end;
    inc(q);
   end;
  inc(rp);
 end;

 // Для вывода опять становимся итератором в начало массива
 rp:=mass;
 while rp<>last do begin
 // И выволим на экран
  writeln(rp^.i:10,rp^.s:20);
  inc(rp);
 end;

 // Прибираем мусор
 Dispose(mass);
 Close(f);
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Надеюсь все понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.09.2011, 22:35   #5
gunit
 
Регистрация: 28.09.2011
Сообщений: 3
По умолчанию

большое спасибо !!
gunit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тестовый файл. Найти сумму всех чисел, входящих в этот файл. (Паскаль) Homeros Помощь студентам 1 26.01.2011 14:05
Типизированный файл с натуральными числами. Числа, встречающиеся 1 раз переписать в другой файл [Паскаль] mifomen Помощь студентам 7 16.12.2010 22:00
WinInet загрузить файл во временной файл , использовать, потом удалить Человек_Борща Работа с сетью в Delphi 5 03.08.2010 13:46
C++. Прочитать файл и вывести в другой файл каждую N-ую строку Straiker Помощь студентам 3 15.12.2009 05:49
Ссылка на файл из текущей папки! Сбор инфы в один файл! mephist Microsoft Office Excel 11 10.07.2009 13:51