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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2009, 17:53   #1
maziLa
Пользователь
 
Регистрация: 08.12.2008
Сообщений: 30
По умолчанию Задача на записи

У меня дана база абитуриента : анкетные данные , средний бал абитуриента, и готовность учиться на контракте(платить за образование).
Мне нужно из текущего списка создать новый список тех кто не набрал граничный проходной бал(ввожу его с клавиатуры) на екзаменахи кто не может платить за образование.

В этом коде нерабочими являются процедуры : чтения с файла и сортировка что то не оч.(соответственно вывод рабочей отсортированой таблици идёт неверный):
Код:
uses crt;
  type xt = record
              fio , birth :string[15];
	      cont  : string[25];
              bal   : real;
              con   : char;
            End;
  var

    a             :array[1..10] of xt;
    b             :array[1..10] of xt;
    c             :array[1..10] of xt;
    ch,item,lol,tem:char;
    i,n,j,l,count,k,q:integer;
    min           :real;
    an            :xt;
    f             :text;
    x             :string;



Procedure Vvod(i:integer);
{Ввод с клавиатуры таблицы}
 Begin
   clrscr;
   i:=0;
   repeat
     i:=i+1;
     With an do
       Begin
         Write('Фамилия имя абитуриента ==> '); ReadLn(fio);
         Write('Дата роождения*         ==> '); ReadLn(birth);
         Write('Средний бал абитуриента  :  '); ReadLn(bal);
         WriteLn('Готовность абитуриента платить за образование');
         write('(вводить только символы (y) или (n) соответственно (Да) или (Нет)');
         Readln(con);
         if (con = 'y') or (con = 'Y')
         then
             cont := 'Да.Готов платить.'
	      else cont := 'Нет. Не может платить.';

        a[i]:=an;
       End;
      WriteLn('Do you want to continue? (Y/N)');
      lol:=readkey;
    Until (lol='n') or (lol='N');
    n:=i;
 End;


 Procedure Vuvod (  i:integer);
 { Процедура вывода таблицы на экран}
  Begin
     Writeln('┌───┬───────────────┬────────────┬────────────┬─────────────────────────────┐');
     Writeln('│ # │ Фамилия Имя   │Средний Бал │ Дата рожд. │Готов платить за Образование?│');
     Writeln('├───┼───────────────┼────────────┼────────────┼─────────────────────────────┤');
   for i:=1 to n do
     With a[i] do
       Begin
         writeln('│',i:3,'│',fio:15,'│',bal:12:3,'│',birth:12,'│',cont:29,'│');
         if i<>n
Then Writeln('├───┼───────────────┼────────────┼────────────┼─────────────────────────────┤')
Else Writeln('└───┴───────────────┴────────────┴────────────┴─────────────────────────────┘');
       End;
 End;

 Procedure Vuvod2 (  j:integer);
 { Процедура вывода уже отсортированой таблицы на экран}
  Begin
     Writeln('┌───┬───────────────┬────────────┬────────────┬─────────────────────────────┐');
     Writeln('│ # │ Фамилия Имя   │Средний Бал │ Дата рожд. │Готов платить за Образование?│');
     Writeln('├───┼───────────────┼────────────┼────────────┼─────────────────────────────┤');
   for j:=1 to q do
     With b[j] do
       Begin
         writeln('│',j:3,'│',fio:15,'│',bal:12:3,'│',birth:12,'│',cont:29,'│');
         if j<>q
Then Writeln('├───┼───────────────┼────────────┼────────────┼─────────────────────────────┤')
Else Writeln('└───┴───────────────┴────────────┴────────────┴─────────────────────────────┘');
       End;
 End;


function exit : boolean ;
  var bg : char ;
Begin
  writeln ('Would you like to continue (y/n) ?') ;
  bg := readkey ;
   if (bg='n') or (bg ='N') then
     exit := true
   else
     exit := false;
end;
Если кто знает ребята помоги .За "Спасибо " не забуду.
maziLa вне форума Ответить с цитированием
Старый 20.04.2009, 17:53   #2
maziLa
Пользователь
 
Регистрация: 08.12.2008
Сообщений: 30
По умолчанию

Код:
procedure readfile(x:string);
{Процедура чтения с файла}
begin
     WriteLn ('Введите путь к файлу и само название файла:'); ReadLn (x);
     assign(f,x);
     reset(f);
     i:=0;
     while not eof(f) do begin
           i:=i+1;
           with an do begin
                fio:='';
                read(f,ch);
                while ch<>' ' do begin
                      fio:=fio+ch;
                      read(f,ch);
                end;
                birth:='';
                read(f,ch);
                while ch<>' ' do begin
                      birth:=birth+ch;
                      read(f,ch);
                end;
                read(f,bal);
                read(f,ch);
                cont:='';
                read(f,ch);
                con:=ch;
		if (con = 'y') or (con = 'Y') then
		    cont := 'Да.Готов платить.'
		    else cont:= 'Нет.Не может платить.'
           end;
           readln(f);
           a[i]:=an;
     end;
close(f);
end;


Procedure sort (i,l,j : integer);
{Создание новой отсортированой таблицы}

  Begin
    WriteLn ('Ведите минимальный проходной бал(В пределах от 2 до 5): ');
    ReadLn (min);
    With an do
     Begin
      for i:=1 to n do
      if (a[i].con = 'n') or (a[i].con = 'N') then
         c[l]:=a[i];
         l:=l+1;
     end;
     q:=l;
     for l:=1 to q do
      begin
       if c[l].bal<min then
          b[j]:=c[l];
          j:=j+1;
      end;
     q:=j;
  end;

Begin
  repeat
  Clrscr;
  Textcolor(2);
  writeLn ('1 -Ввод данных с клавиатуры.Сортировка.Вывод сорт.таблицы.');
  writeLn ('2 -Ввод данных с файла.Сортировка.Вывод сорт.таблицы.');
  writeln ('3 -Выход.');

      item:=readkey;
      Case item of
        '1':Begin
              TextColor(15);
              Vvod(i);
              vuvod(i);
              sort(i,j,l);
              writeln('Отсортированая таблица:');
              vuvod2(j);
            End;
        '2':Begin
              TextColor(15);
              repeat
                readfile(x);
                vuvod(i);
                sort(i,j,l);
                writeln('Отсортированая таблица:');
                vuvod2(j);
                writeln('Продолжить считывать с другого файла(Y/N): ');
                tem:=readkey;
              until(tem='n') or (tem='N');
            End;
            end;
 until (exit=true);
End.
вот продолжение немного не поместилося...
maziLa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на записи quake1 Помощь студентам 5 07.03.2009 16:00
Задача на тему Записи leoneedka Паскаль, Turbo Pascal, PascalABC.NET 2 20.11.2008 21:50
Задача на записи (Paskal) Paskal??? Помощь студентам 3 20.04.2008 21:40
задача на записи Pascal kitty Помощь студентам 9 18.04.2008 18:14
задача на записи!!! Нана Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2008 12:36