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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2009, 09:03   #1
qwertytol
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 17
По умолчанию Подправить код. Тема: База данных, хранимая в файле. На Паскале

Сама задача
Организовать файл, содержащий рост каждого из 25 учеников класса. Ни одна пара учеников не имеет одинакового роста. Определить фамилии:
а) самого высокого и самого низкого учеников класса;
б) двух учеников, являющихся самыми высокими после самого высокого в классе.

Код
Код:
uses crt;
type
    Stud=record
         name:string[20];
         rost:integer;
    end;
    fail=file of Stud;
var
    mas: array [1..25] of Stud;
    f:fail;
    zs:Stud;
    i, n:integer;
    exit:boolean;
 
procedure InPut;
begin
clrscr;
 assign (f, 'd:\Stud');
 rewrite (f);
 write ('VVedite kol-vo Studentov: ');
 readln(n);
 for i:=1 to n do begin
   writeln('Student number ',i);
   write (' name: '); readln (zs.name);
   write (' Rost: '); readln (zs.rost);
   write (f,zs);
 end;
end;
 
Procedure table;
 begin
   writeln('|------------------------------------------|');
   writeln('|-------------dannie studentov-------------|');
   writeln('|------------------------------------------|');
   writeln('|      SecName       |         Rost        |');
   writeln('|------------------------------------------|');
 end;
 
Procedure Table2;
 begin
   gotoXY (1, whereY); write ('| ', zs.name,' ');
   gotoXY (22, whereY); write ('| ', zs.rost,' ');
   gotoXY (44, whereY); writeln ('|');
   writeln('|------------------------------------------|');
 end;
 
Procedure ShowAll ;
begin
clrscr;
 table;
 reset(f);
 while not eof(f) do begin
   read (f,zs);
   table2;
 end;
 readkey;
 close(f);
end;
 
procedure ShowMax;
var
    name, name2, name3:  string[20];
    max, max2, max3: integer;
begin
clrscr;
  reset(f);
  max:=0;
  max2:=0;
  max3:=0;
 while not eof(f) do
  begin
   read(f,zs);
   if zs.rost > max then
     begin
       max:=zs.rost;
       name:=zs.name;
     end;
  end;
 writeln('SurName samogo visokogo v klasse: ',name); writeln;
 close(f);
 
 reset(f);
 while not eof(f) do
  begin
   read(f,zs);
   if (zs.rost > max2) and (zs.rost < max) then
    begin
      max2:=zs.rost;
      name2:=zs.name;
    end;
  end;
 writeln('SurName vtorogo po rostu v klasse: ',name2); writeln;
 close(f);
 
 reset(f);
 while not eof(f) do
  begin
   read(f,zs);
   if (zs.rost > max3) and (zs.rost < max2) then
    begin
      max3:=zs.rost;
      name3:=zs.name;
    end;
  end;
 writeln('SurName tretego po rostu v klasse: ',name3); writeln;
 writeln('PRESS ANY KEY!');
 readkey;
 close(f);
end;
 
function ShowMenu: integer;
var
    answer: integer;
begin
    ClrScr;
    WriteLn(' Menu:');
    WriteLn('1: Show all');
    WriteLn('2: Show visokix Students');
    Writeln('3: Exit');
    Write('you vibor menu: '); ReadLn(answer);
    Writeln;
    ShowMenu := answer;
end;
 
procedure Terminate(isExit: boolean);
var
    result: char;
begin
clrscr;
    Write('Do you want exit (y/n): '); ReadLn(result);
    if result = 'y' then
        Halt(0);
end;
 
BEGIN
 clrscr;
 InPut ;
 while true do begin
  case ShowMenu of
    1: ShowAll ;
    2: ShowMax ;
    3: Terminate (exit);
  end;
 end;
end.
Подскажите как сделать чтобы в процедуре ввода при вводе повторяющегося роста выдавало сообщение о неправильном вводе и была попытка ввести рост заново.
И еще если при вводе 2 записей выводятся различные(непонятные) символы при поиске 3-го по росту человека и если 1 запись то 2-го и 3-го по росту. как это исправить.
PS Плииииз очень нужна помощь
qwertytol вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подправить код ELF astserg01 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 09.04.2009 06:49
База данных freefol Помощь студентам 6 06.04.2009 14:42
Нужна любая база данных на Паскале Coo11eR Паскаль, Turbo Pascal, PascalABC.NET 2 20.11.2008 22:20
constructor, destructor override. Подправить код. Roof Общие вопросы Delphi 9 31.07.2008 13:41
Задача на Паскале, тема символьный тип NeKkiTos Фриланс 1 10.12.2007 12:20