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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2011, 17:02   #1
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию (PAS) Файлы , сведения об учениках.

Задача : Сведения об ученике состоят из его имени и фамилии и названия
класса (года обучения и буквы), в котором он учится. Дан файл f,
содержащий сведения об учениках школы. Собрать в файле g сведения
об учениках 9-х и 10-х классов, поместив вначале сведения об уче-
никах класса 9а, затем 9б и т.д., затем 10а,10б и т.д.

Нашел в интернете её решение , только не пойму в чем ошибка , помогите пожалуйста исправить.

Код:
USES CRT;
CONST
Bukva:set of char= {Множество русских букв:}
['а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о',
 'п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я'
];
nMax=20;
 
TYPE
{Тип - Запись об ученике:}
TPupil=record
  name1:string; {имя}
  name2:string; {фамилия}
  nKl:integer; {номер класса}
  bKl:char; {буква класса}
end;
TFields=array[1..3] of string; {Тип - Поля записи об ученике}
TPupilsList=array[1..nMax] of TPupil; {Тип - Список учеников}
TPupilsFile=file of TPupil; {Тип - Файл записей учеников}
 
{Процедура - Создать файл записей учеников:}
Procedure CreatePupilsFile(var f:TPupilsFile);
Var wrd:TFields;
    rec:TPupil;
    s:string;
    n, len, i,k, p,p0:integer;
Begin
 rewrite(f);
 {Ввод сведений и запись в файл F:}
 writeln('Введите число учеников в школе ? '); readln(n);
 writeln('Введите ',n,' записей (строк) учеников по следующему шаблону:');
 writeln('Имя  Фамилия  Название_класса(номер+буква) [Enter]');
 for i:=1 to n do begin
   readln(s); {ввод строки}
   {Разбивка строки на слова:}
   s:=s+' '; k:=0; p0:=1;
   while (pos(' ',s)>0) AND (k&lt3) do begin
     p:=pos(' ',s);
     k:=k+1; wrd[k]:=copy(s,p0,p-p0);
     delete(s,p,1); p0:=p;
   end;
   if (k=3) then begin
     s:=wrd[3]; len:=length(s);
     val(copy(s,1,len-1),k,p0);
     {Если сведения - правильные:}
     if (p0=0) AND (s[len] in Bukva) then begin
       with rec do begin
         name1:=wrd[1]; name2:=wrd[2]; nKl:=k; bKl:=s[len];
       end;
       write(f,rec);
     end;
   end;
 end;
 close(f);
End;
 
{Процедура - Отсортировать список учеников по возрастанию буквы класса}
Procedure SortPupilsList(var list:TPupilsList; n:integer);
Var rec:TPupil; i,j ,k1,k2:integer;
Begin
  for i:=2 to n do
    for j:=i-1 downto 1 do
      if list[j+1].bKl&ltlist[j].bKl then
      begin
        rec:=list[j]; list[j]:=list[j+1]; list[j+1]:=rec;
      end;
End;
 
VAR f,g:TPupilsFile;
    rec:TPupil;
    list9th,list10th:TPupilsList; {списки учеников 9-х и 10-х классов}
    n9th,n10th, i:integer;
 
BEGIN
 clrscr;
 assign(f,'f.txt'); assign(g,'g.txt');
 CreatePupilsFile(f);
 {Чтение сведений из файла F:}
 reset(f);
 n9th:=0; n10th:=0; {число учеников 9-х и 10-х классов}
 while not eof(f) do begin
   read(f,rec);
     case (rec.nKl) of
       {Создание записи ученика 9 или 10-го класса:}
        9: begin n9th:=n9th+1; list9th[n9th]:=rec; end;
       10: begin n10th:=n10th+1; list10th[n10th]:=rec; end;
     end;
 end;
 close(f);
 {Сортировка списков учеников 9-х и 10-х классов:}
 SortPupilsList(list9th,n9th);
 SortPupilsList(list10th,n10th);
 {Запись сведений в файл G:}
 rewrite(g);
 for i:=1 to n9th do write(g,list9th[i]);
 for i:=1 to n10th do write(g,list10th[i]);
 close(g);
 {Вывод сведений из файла G:}
 reset(g);
 writeln; writeln('Файл G:');
 while not eof(g) do begin
   read(g,rec);
   with rec do writeln(name1,' ',name2,' ',nKl,bKl);
 end;
 close(g);
 
END.
 
{Содержимое файла 'f.txt' (начинается со следующей строки):
Андрей Иванов 5а
Василий Петров 7б
Петр Сидоров 8а
Сергей Кузнецов 9а
Иван Андреев 10а
Антон Алексеев 9а
Сергей Сергеев 10б
Алексей Михайлов 6в
dimokin777 вне форума Ответить с цитированием
Старый 13.11.2011, 17:50   #2
Tony Parker
Пользователь
 
Регистрация: 19.12.2010
Сообщений: 52
По умолчанию

В чем заключается ошибка? Опишите, что не так работает и что пишет на экран
AllSuccess1.ru - каталог полезных курсов.
Tony Parker вне форума Ответить с цитированием
Старый 13.11.2011, 18:00   #3
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

В программе в 2 местах неверно написано:

while (pos(' ',s)>0) AND (k&lt3) do begin
/вторая скобка/
и

if list[j+1].bKl&ltlist[j].bKl then
/где-то тут/


это как-то нужно исправить...
dimokin777 вне форума Ответить с цитированием
Старый 13.11.2011, 18:13   #4
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

поменяйте k&lt3 на k<3

и

if list[j+1].bKl&ltlist[j].bKl then на if list[j+1].bKl<list[j].bKl then

и на будущее копипастить внимательнее
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 13.11.2011, 18:17   #5
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Zer0 Посмотреть сообщение
копипастить внимательнее
Тут не моя вина , так было написано тут http://greenpen.fatal.ru/code4study/101.html
dimokin777 вне форума Ответить с цитированием
Старый 13.11.2011, 18:19   #6
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

там написано нормально, вот только копипаст вместо знаков "<" подставил их HTML-код (&lt)

и да, если вы пытаетесь запустить исходник именно в таком виде, то не забудьте убрать все то, что после end.

Т.е. список учеников
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 13.11.2011, 18:21   #7
dimokin777
Пользователь
 
Регистрация: 08.11.2011
Сообщений: 18
По умолчанию

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цель : Получить сведения о системе MeTeOpA Visual C++ 4 31.01.2011 01:39
Delphi 2010 + .pas-файлы компонентов Bad-XxX Общие вопросы Delphi 11 27.09.2010 23:25
Как узнать сведения о железе? SpaceXXX Общие вопросы Delphi 9 14.06.2010 16:50
Windows 7 - первые сведения о новой системе veter_s_morya Свободное общение 6 22.01.2009 00:20