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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2008, 23:37   #1
Максон
Новичок
Джуниор
 
Регистрация: 24.06.2008
Сообщений: 2
По умолчанию Помогите, пожалуйста доделать одну задачу!

Само условие выглядит так: Сформировать файл, содержащий сведения о сдаче студентами сессии: группа, фамилия студента, оценки по трём дисциплинам. Вывести на экран фамилии неуспевающих и количество задолженностей.
это задача на тему - файлы и работа с файлами в паскаль.
начало я сделал -
Program EM1p4copy;
uses CRT;
Var n,i: integer; F:text; fam,gr,p,m,is:string;
Begin CLRSCR;
Write('vvedite kolichestvo studentov'); readln(n);
assign(F,'C:\sessiya.dat'); rewrite(F);
CLRSCR;
For i:=1 to n do
Begin
Writeln('vvedite familiy studenta');
readln(fam); writeln;
Write('vvedite gruppu, gde obuchaetsya student ',fam,' ');
readln(gr); CLRSCR;
Write('vvedite ocenki studenta ',fam,' po matematike-');
readln(m); Writeln; Write('po programmirovaniu-');
readln(p); Writeln; Write('po istorii-'); readln(is);
writeln;
Write(F,fam,' '); write(F,gr,' '); write(F,'po matematike-',m,' ');
write(F,'po programmirovaniu-',p,' '); write(F,'po istorii-',is,' ');
Writeln(F);
CLRSCR; end; close(F);
Write(' Spisok neuspevaushih: '); writeln;
assign(F,'C:\sessiya.dat'); reset(F);
в этой части программы создается и открывается текстовый файл
затем пользователь вводит имя группу и оценки по предметам, это все записывается в файл.С этим всё нормально, а вот дальше надо вывести неуспевающих, т.е. двоечников и предметы по которым у них двойки.
Я пытался ставить условия и проверку файла но что-то не выходит.
У меня проверяется только последний студент и выводятся его оценки.
Вот моё условие:
For i:= 1 to n do
begin
readln(F,m);
readln(F,p);
readln(F,is);
For j:=1 to length(m) do
if (copy(m,j,1)='2') or (copy(m,j,1)='1') then begin
Write(fam,' ',gr,' po matematike-',m); WRITELN; end;
For j:=1 to length(p) do
if (copy(p,j,1)='2') or (copy(p,j,1)='1') then begin
Write(fam,' ',gr,' po programmirovaniu- ',p); WRITELN; end;
For j:=1 to length(is) do
if (copy(is,j,1)='2') or (copy(is,j,1)='1') then begin
Write(fam,' ',gr,' po istorii- ',is); WRITELN; end; end;
readln;
close(F);
end.
Пожалуйста помогите с решением.
Максон вне форума Ответить с цитированием
Старый 25.06.2008, 01:28   #2
OLEG'arh
Пользователь
 
Аватар для OLEG'arh
 
Регистрация: 23.11.2006
Сообщений: 42
По умолчанию

Код:
uses CRT;
Var
  n,i,j: integer;
  F:text;
  fam,gr,p,m,is:string;
Begin
  CLRSCR;
  Write('vvedite kolichestvo studentov');
  readln(n);
  assign(F,'C:\sessiya.dat');
  rewrite(F);
  CLRSCR;
  For i:=1 to n do
    Begin
      Writeln('vvedite familiy studenta');
      readln(fam);
      Writeln(F,fam);
      writeln;

      Write('vvedite gruppu, gde obuchaetsya student ',fam,' ');
      readln(gr);
      writeln(F,gr);
      CLRSCR;

      Write('vvedite ocenki studenta ',fam,' po matematike-');
      readln(m);
      writeln(F,m);
      Writeln;

      Write('po programmirovaniu-');
      readln(p);
      writeln(F,p);
      Writeln;

      Write('po istorii-');
      readln(is);
      writeln(F,is);
      writeln;
      CLRSCR;
    end;
  close(F);
  Write(' Spisok neuspevaushih: ');
  writeln;
  reset(F);
  For i:= 1 to n do
    begin
      readln(F,fam);
      readln(F,gr);
      readln(F,m);
      readln(F,p);
      readln(F,is);
      if (m='2') or (m='1') then
          begin
            Write(fam,' ',gr,' po matematike-',m);
            WRITELN;
          end;
      if (p='2') or (p='1') then
          begin
            Write(fam,' ',gr,' po programmirovaniu- ',p);
            WRITELN;
          end;
      if (is='2') or (is='1') then
         begin
           Write(fam,' ',gr,' po istorii- ',is);
           WRITELN;
         end;
    end;
  readln;
  close(F);
end.
я в файле данные хохраняю построчно. а так как ты пытался сделать, лучще было б с помощью типизированного файла, п не через текст(F:text
OLEG'arh вне форума Ответить с цитированием
Старый 25.06.2008, 09:00   #3
Максон
Новичок
Джуниор
 
Регистрация: 24.06.2008
Сообщений: 2
Хорошо

[QUOTE=OLEG'arh;117239]
Код:
uses CRT;
Var
  n,i,j: integer;
  F:text;
  fam,gr,p,m,is:string;
Begin
  CLRSCR;
  Write('vvedite kolichestvo studentov');
  readln(n);
  assign(F,'C:\sessiya.dat');
  rewrite(F);
  CLRSCR;
  For i:=1 to n do
    Begin
      Writeln('vvedite familiy studenta');
      readln(fam);
      Writeln(F,fam);
      writeln;

      Write('vvedite gruppu, gde obuchaetsya student ',fam,' ');
      readln(gr);
      writeln(F,gr);
      CLRSCR;

      Write('vvedite ocenki studenta ',fam,' po matematike-');
      readln(m);
      writeln(F,m);
      Writeln;

      Write('po programmirovaniu-');
      readln(p);
      writeln(F,p);
      Writeln;

      Write('po istorii-');
      readln(is);
      writeln(F,is);
      writeln;
      CLRSCR;
    end;
  close(F);
  Write(' Spisok neuspevaushih: ');
  writeln;
  reset(F);
  For i:= 1 to n do
    begin
      readln(F,fam);
      readln(F,gr);
      readln(F,m);
      readln(F,p);
      readln(F,is);
      if (m='2') or (m='1') then
          begin
            Write(fam,' ',gr,' po matematike-',m);
            WRITELN;
          end;
      if (p='2') or (p='1') then
          begin
            Write(fam,' ',gr,' po programmirovaniu- ',p);
            WRITELN;
          end;
      if (is='2') or (is='1') then
         begin
           Write(fam,' ',gr,' po istorii- ',is);
           WRITELN;
         end;
    end;
  readln;
  close(F);
end.
я в файле данные хохраняю построчно. а так как ты пытался сделать, лучще было б с помощью типизированного файла, п не через текст(F:text[/QUOT]
Огромное спасибо, очень вам признателен!
Максон вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите доделать задачу motaro Фриланс 3 09.06.2008 19:59
Помогите доделать задачу!!!! Vincenzo Паскаль, Turbo Pascal, PascalABC.NET 4 11.05.2008 09:35
помогите доделать задачу по массиву braza Паскаль, Turbo Pascal, PascalABC.NET 7 06.05.2008 09:37
помогите доделать(исправить) задачу по массиву braza Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 19:54
Помогите доделать задачу на класс molodzo Общие вопросы C/C++ 2 20.11.2007 09:31