Автор Тема: Задача на Паскале(сорри за оффтопик)  (Прочитано 2214 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн G-Gudok

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 83
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Очень нужно решить задачу на паскале. Имеется список фамилий(который читается из файла), который упорядочен по алфавиту. Мне нужно добавить новую фамилию. Все спокойно добавляет, но! Мне нужно, чтоб  и "моя" фамилия автоматический заняла правильно место в списке. А то пишу Павлов, а он в конец отображает. Помоготи, очень надо!!!

program St;
uses Crt;
type
 student=record
 name:string[50];
 group:byte;
 mark:char;
end;
var
 f:file of student;

 Procedure Menu;
 forward;
 Procedure Viewlist;
  var i:byte;
      s:student;
  begin
      reset(f);
      Clrscr;
      writeln(\'‘Имя \');
      writeln(\'N\':3,\'” ¬Ё«Ёп\':31,
              \'Возраст\':7,\'Пол\':8);
    i:=0;
    while not eof(f) do
     begin
           i:=i+1;

         read(f,s);
          writeln(i:3,s.name:31,s.group:7,s.mark:7);
     end;
     menu;
  end;

  Procedure add;
  var s:student;
  begin
      write(\'имя \');
      readln(s.name);
      write(\'‚возраст \');
      readln(s.group);
      write(\'пол \');
      readln(s.mark);

      while not eof(f) do
      read(f,s);
      writeln(s.name, s.group);

      seek(f,filesize(f));
      write(f,s);
      menu;
      end;




  Procedure Menu;
  var c:char;
  begin
     writeln(\'0-выход\');
     writeln(\'1-просмотр\');
     writeln(\'2-добавить  \');
 
     c:=readkey;
     case c of
      \'0\':exit;
      \'1\':Viewlist;
      \'2\':add;

     end;
  end;


begin
   assign(f,\'exam2.dat\');
   reset(f);


   clrscr;
   menu;

end.

к сожалению, у меня нет файла exam2.dat, но смысл в том, что там стояли фамилии в алфавитном порядке.
Ребят, очень надо!!! извините за оффтопик!!!

  • Гость
Задача на Паскале(сорри за оффтопик)
« Ответ #1 : 09 Июня 2002, 15:55:01 »
Всё, что тебе нужно, это найти место для новой записи. Делается это элементарно:

1. Иванов
1. Партийцын
3. Петров
4. Рабинович
5. Сидоров
6. Хлюздин

Добавить Пупкина

Ищем. Пупкин должен быть ниже Иванова, ниже Партийцина, ниже Петров, выше Рабиновича. Делаем выводы. Пупкин должен быть 4-м. Открываем файл на запись и спокойно пишем туда Иванова, Партийцына, Петрова. Теперь пишем Пупкина, а затем уже Рабиновича, Сидорова и Хлюздина. Всё. Код мне писать влом. Кстати, пол это gender или sex, а не mark...

 

Sitemap 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