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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2015, 22:49   #1
Flocky
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию Работа с записями

Cводная ведомость результатов экзаменационной сессии студенческой группы хранится в виде файла с записями и для каждого студента содержит фамилию, инициалы и оценки по пяти предметам.

Составить программу, с помощью которой можно формировать список и получать:
1. список студентов, сдавших экзамены только на «отлично»;
2. список студентов, имеющих тройки;
3. список студентов, имеющих двойки, при этом студент, имеющий более чем одну двойку, исключается из списка.
Flocky вне форума Ответить с цитированием
Старый 11.12.2015, 10:25   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Код:
uses crt;
type st=record
     surname:string[20];
     IO:string[2];
     subj:array[1..5] of byte;
     active:boolean;
end;
const N=5;
var a:array[1..100] of st;
procedure readdata;
var i,j:byte;
begin
  for i:=1 to N do
    begin
       with a[i] do
        begin
          writeln('==== ',i,'-j student ====');
          write('Familia : '); readln(surname);
          write('IO      : '); readln(IO);
          for j:=1 to 5 do
            begin
              write('ocenka z ',j,'-go predmeta : ');readln(subj[j]);
            end;
          active:=true;
        end;
    end;
end;
procedure outdata;
var i,j,c:byte;
begin
  c:=0;
  for i:=1 to n do
  begin
   with a[i] do
   if active = True then
   begin
    inc(c);
    writeln('==== ',c,'-j student ====');
    writeln('Familia : ',surname);
    writeln('IO : ',IO);
    for j:=1 to 5 do writeln('ocenka z ',j,'-go predmeta : ',subj[j]);
   end;
   writeln;
  end;
end;
procedure t1;
var i,j,S:byte;
begin
 writeln('   TASK1');
 for i:=1 to n do
  begin
   with a[i] do
    begin
     s := 0;
     if active = true then
     begin
       for j:=1 to 5 do s := s + subj[j];
       if s = 5*5 then writeln(Surname,' ',IO,' otlichnik');
     end;
    end;
  end;
end;
procedure t2;
var i,j:byte;
begin
 writeln('   TASK2');
 for i:=1 to n do
 begin
  with a[i] do
  begin
    if active = true then
     begin
       for j:= 1 to 5 do
        if subj[j] = 3 then
          begin
            writeln(Surname,' ',IO,' troechnik');
            break;
          end;
     end;
  end;
 end;
end;

procedure t3;
var i,j:byte;
begin
 writeln('   TASK3');
 for i:=1 to n do
 begin
   with a[i] do
    begin
     if active = true then
      begin
        for j := 1 to 5 do
         begin
           if subj[j] = 2 then
            begin
              writeln(Surname,' ',IO,' dvoechnik. Udalen so spiska');
              active:=false;
              break;
            end;
         end;
      end;
    end;
 end;
end;
BEGIN
Clrscr;
readdata;
writeln;
{writeln('Press ENTER');readln;}
outdata;
writeln;
writeln('Press ENTER');readln;
clrscr;
t1;
writeln;
writeln('Press ENTER');readln;
clrscr;
t2;
writeln;
writeln('Press ENTER');readln;
clrscr;
t3;
writeln;
writeln('Press ENTER');readln;
clrscr;
writeln('Novyi spisok');
clrscr;
writeln;
outdata;
readln;
END.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.12.2015, 10:50   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Aleksandr H., хорошо.
Примечание, автору темы нужен файл с записями (file of st).
но, думаю, что это он сможет сделать самостоятельно
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2015, 11:10   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Serge_Bliznykov, Вы правы, нужен файл. Я неправильно интерпретировал задание.
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.12.2015, 13:55   #5
Flocky
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию

Спасибо! Все верно работает!

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Serge_Bliznykov, Вы правы, нужен файл. Я неправильно интерпретировал задание.
Я понимаю, несколько нагло с моей стороны просить Вас, но не могли бы вы интерпретировать файл в код? Не понимаю как это можно сделать.

Последний раз редактировалось Вадим Мошев; 11.12.2015 в 14:47.
Flocky вне форума Ответить с цитированием
Старый 11.12.2015, 14:37   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Flocky, а Вы возьмите код из другой вашей задачи (#2)
Там как раз с файлом сделано.
По аналогии и в этом коде напишите.
Заодно и попрактикуетесь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2015, 15:10   #7
Flocky
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
Смех

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Flocky, а Вы возьмите код из другой вашей задачи (#2)
Там как раз с файлом сделано.
По аналогии и в этом коде напишите.
Заодно и попрактикуетесь.
В итоге код перестал работать
Flocky вне форума Ответить с цитированием
Старый 11.12.2015, 15:45   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Flocky Посмотреть сообщение
В итоге код перестал работать
показывайте свой код, посмотрим...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2015, 21:42   #9
Flocky
Пользователь
 
Регистрация: 11.01.2013
Сообщений: 17
По умолчанию

Код:
uses crt;
type st=record
     surname:string[20];
     IO:string[2];
     subj:array[1..5] of byte;
     active:boolean;
end;
const N=5;
var a:array[1..100] of st;
	f: file of st;
procedure readdata;
var i,j:byte;
r:st;
begin
 assign(f,'fail.dat');
   rewrite(f);
  for i:=1 to N do
    begin
       with a[i] do
        begin
          writeln('==== ',i,'-j student ====');
          write('Familia : '); readln(surname);
          write('IO      : '); readln(IO);
          for j:=1 to 5 do
            begin
              write('ocenka z ',j,'-go predmeta : ');readln(subj[j]);
            end;
          active:=true;
        end;
write(f,r);
    end;
 close(f);
end;
procedure outdata;
var i,j,c:byte;
begin
 assign(f,'fail.dat');
   reset(f);
  c:=0;
  for i:=1 to n do
  begin
   with a[i] do
   if active = True then
   begin
    inc(c);
    writeln('==== ',c,'-j student ====');
    writeln('Familia : ',surname);
    writeln('IO : ',IO);
    for j:=1 to 5 do writeln('ocenka z ',j,'-go predmeta : ',subj[j]);
   end;
   writeln;
  end;
    close(f);
end;
procedure t1;
var i,j,S:byte;
begin
 writeln('   TASK1');
 for i:=1 to n do
  begin
   with a[i] do
    begin
     s := 0;
     if active = true then
     begin
       for j:=1 to 5 do s := s + subj[j];
       if s = 5*5 then writeln(Surname,' ',IO,' otlichnik');
     end;
    end;
  end;
end;
procedure t2;
var i,j:byte;
begin
 writeln('   TASK2');
 for i:=1 to n do
 begin
  with a[i] do
  begin
    if active = true then
     begin
       for j:= 1 to 5 do
        if subj[j] = 3 then
          begin
            writeln(Surname,' ',IO,' troechnik');
            break;
          end;
     end;
  end;
 end;
end;

procedure t3;
var i,j:byte;
begin
 writeln('   TASK3');
 for i:=1 to n do
 begin
   with a[i] do
    begin
     if active = true then
      begin
        for j := 1 to 5 do
         begin
           if subj[j] = 2 then
            begin
              writeln(Surname,' ',IO,' dvoechnik. Udalen so spiska');
              active:=false;
              break;
            end;
         end;
      end;
    end;
 end;
end;
BEGIN
Clrscr;
readdata;
writeln;
{writeln('Press ENTER');readln;}
outdata;
writeln;
writeln('Press ENTER');readln;
clrscr;
t1;
writeln;
writeln('Press ENTER');readln;
clrscr;
t2;
writeln;
writeln('Press ENTER');readln;
clrscr;
t3;
writeln;
writeln('Press ENTER');readln;
clrscr;
writeln('Novyi spisok');
clrscr;
writeln;
outdata;
readln;
END;
t2;
writeln;
writeln('Press ENTER');readln;
clrscr;
t3;
writeln;
writeln('Press ENTER');readln;
clrscr;
writeln('Novyi spisok');
clrscr;
writeln;
outdata;
readln;
END.
Flocky вне форума Ответить с цитированием
Старый 11.12.2015, 21:46   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
END;
t2;
writeln;
writeln('Press ENTER');readln;
clrscr;
t3;
writeln;
writeln('Press ENTER');readln;
clrscr;
writeln('Novyi spisok');
clrscr;
writeln;
outdata;
readln;
END.
Это что за дубляж? Поправь. И END лишний убери.
Код:
BEGIN
Clrscr;
readdata;writeln;outdata;writeln;
writeln('Press ENTER');readln;

t1;writeln;writeln('Press ENTER');readln;clrscr;
t2;writeln;writeln('Press ENTER');readln;clrscr;
t3;writeln;writeln('Press ENTER');readln;clrscr;

writeln('Novyi spisok');
clrscr;
writeln;outdata;readln;

t2;writeln;writeln('Press ENTER');readln;clrscr;
t3;writeln;writeln('Press ENTER');readln;clrscr;

readln;
END.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с записями Namyola Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2011 16:50
Работа с записями Intersap Помощь студентам 0 20.11.2010 18:01
работа с записями Андрей.12 Помощь студентам 0 20.12.2009 19:17
Работа с записями Viata Паскаль, Turbo Pascal, PascalABC.NET 3 24.06.2009 09:03
работа с записями Mango Помощь студентам 2 12.10.2008 23:54