0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
1

Создание и корректировка файла, содержащего сведения об абитуриентах

07.10.2016, 22:41. Показов 3253. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Цитата Сообщение от rossetta Посмотреть сообщение
Постановка задачи
Разработать программу создания и корректировки файла, содержащего сведения об абитуриентах, сдавших вступительные экзамены в институт. Каждый элемент этого файла должен содержать следующие данные: фамилию и инициалы абитуриента, специальность, на которую он поступает, полученные оценки по физике, математике и литературе. Предусмотреть создание текстового файла, содержащего информацию об абитуриентах, поступающих на указанную специальность.
Код 322 что означает, кто знает?

Добавлено через 21 минуту
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Program Prog;
Uses
 Classes, SysUtils;
type Zap=record
  fio: string[25];
  spec: string[25];
  ocfiz: string[1];
  ocmatem: string[1];
  ocliter: string[1];
end;
var f: file of string;
fio1: string; 
reg: integer;
q: Zap;
begin
assign(f,'d:\Proga\abitura.dat');
reset(f);
writeln ('Режим ввода – 1; режим корректировки - 2');
read(reg);
if reg=1 then 
begin
{Режим ввода}
Writeln(‘Режим ввода’);
Rewrite(f);
repeat
  writeln ('Фамилия и инициалы ');
  read(q.fio);
  writeln ('Специальность ');
  read (q.spec);
  writeln ('Оценка по физике ');
  read (q.ocfiz);
  writeln ('Оценка по математике ');
  read (q.ocmatem);
  writeln ('Оценка по литературе ');
  read (q.ocliter);
write(f);
until (q.fio<>’***);
end;
{Конец режима ввода}
if reg=2 then do
begin
 {Режим корректировки}
 Writeln(‘Режим корректировки’);
  writeln ('Фамилия и инициалы ');
  read(fio1);
 while ((fio1<>’***) and (not Eof(f))) do
  begin
    read(f);
     if q.fio=fio1 then do
     begin
       writeln(‘Fam ’q.fio,’Spec ’, q.spec,’Fiz ’,q.ocfiz,’Matem ’,q.ocmatem,’Liter ’, q.ocliter);
       write(f);
     end;
   end; {пока не конец файла f & фамилия #***}
end; {Конец режима 2-корректировки}
 
close(f); 
end.
При запуске на выполнение выдает код 322. Что означает, кто знает?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.10.2016, 22:41
Ответы с готовыми решениями:

Создание и корректировка файла, содержащего сведения о студентах.
еще 1 задача: Разработать программу создания и корректировки файла, содержащего сведения о...

Создание и корректировка файла, содержащего сведения о книгах, находящихся в библиотеке
Разработать программу создания и корректировки файла, содержащего сведения о книгах, находящихся в...

Создание текстового файла, содержащего информацию об абитуриентах, поступающих на указанную специальность
Добрый вечер. Помогите пожалуйста написать программу, с файлами не работала никогда. Разработать...

Создание файла, содержащего сведения о машинах на складе, и работа с ним
Задачка 2. Создать файл содержащий сведения о машинах на складе. Каждая запись файла должна...

27
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
07.10.2016, 23:08 2
Здесь до запуска дело не дойдет, оно не скомпилируется по причине ошибок -- неправильные апострофы, неверный синтаксис if, неправильные вызовы Write и Read, пропущенные запятые.
Исправляйте.
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
08.10.2016, 08:05  [ТС] 3
спасибо)

Добавлено через 21 минуту
вообще-то компиляция прошла успешно, кавычки те, остальных ошибок не вижу. Это free pascal.

Добавлено через 7 минут
if исправила, убрала do. Скомпилировалось успешно, а выполнение выдало ошибку 322.

Ошибки исправила, компиляция прошла успешно. Если версия Паскаля для 32 разрядного, а у меня 64 разрядный, из-за этого может быть?
close(f);
end.

Добавлено через 3 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Program Prog;
Uses
 Classes, SysUtils;
type Zap=record
  fio: string[25];
  spec: string[25];
  ocfiz: string[1];
  ocmatem: string[1];
  ocliter: string[1];
end;
var f: file of string;
fio1: string; 
reg: integer;
q: Zap;
begin
assign(f,’d:\Proga\abitura.dat);
writeln (‘Режим ввода – 1; режим корректировки – 2);
read(reg);
if reg=1 then 
begin
{Режим ввода}
Writeln('Режим ввода');
Rewrite(f);
While (q.fio<>’***) do
  writeln (‘Фамилия и инициалы ‘);
  read(q.fio);
  writeln (‘Специальность ‘);
  read (q.spec);
  writeln (‘Оценка по физике ‘);
  read (q.ocfiz);
  writeln (‘Оценка по математике ‘);
  read (q.ocmatem);
  writeln (‘Оценка по литературе ‘);
  read (q.ocliter);
write(f);
until (q.fio<>’***);
end;
end;
{Конец режима ввода}
if reg=2 then do
begin
 {Режим корректировки}
 reset(f);
Writeln(‘Режим корректировки’);
  writeln (‘Фамилия и инициалы ‘);
  read(fio1);
 while ((fio1<>’***) and (not Eof(f))) do
  begin
    read(f);
     if q.fio=fio1 then 
     begin
       writeln(‘Fam ’q.fio,’Spec ’, q.spec,’Fiz ’,q.ocfiz,’Matem ’,q.ocmatem,’Liter ’, q.ocliter);
       write(f);
     end;
   end; {пока не конец файла f & фамилия #***}
end; {Конец режима 2-корректировки}
 
close(f); 
end.
Ошибки исправила, компиляция прошла успешно, здесь не тот текст, что в программе, из Паскаля не удается скопировать. Из-за несоответствия 32 и 64 разрядности может быть?
0
617 / 937 / 150
Регистрация: 10.08.2015
Сообщений: 4,983
08.10.2016, 10:49 4
сохрани файл и в проводнике скопируй его содержимое и вставь последний свой вариант, в этом слишком много ошибок, например не совпадает количество begin и end, путаница с while until... По чтению/записи... есть три режима: запись, чтение и добавление. Процедура чтения требует инфо откуда и куда читать, процедура записи, что и куда писать... а у тебя
write(f);
Это никоим образом не может скомпилироваться ни в каком паскале, ни при какой разрядности... Как работать с файлами ищи в гугле, там все есть и 100500 вариантах
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.10.2016, 11:11 5
Начни с того что не
Pascal
1
f: file of string;
а
Pascal
1
f: file of Zap;
Добавлено через 2 минуты
В разделе Паскаль куча программ, написанных в том числе и мной, на тему записи и типизированные файлы. Воспользуйтесь поиском по форуму (раздел Pascal).
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
08.10.2016, 13:04  [ТС] 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
program Prog;
type
Zap=record
 fio: string[25];
 spec: string[25];
 ocfiz, ocmatem, ocliter: 1..5;
end;  {10}
var
f: file of Zap;
fio1,spec1: string[25];
ocfiz1,ocmatem1,ocliter1: integer;
reg: integer;
q: Zap;
usl: boolean;
begin
Assign(f,'d:\Proga\abitura.dat');
reset(f);
writeln('ђҐ¦Ё¬ ўў®¤* - 1, PҐ¦Ё¬ Є®ppҐЄвЁ®ўЄЁ - 2, ‚лў®¤ ”€Ћ Ї® бЇҐж-вЁ - 3');
read(reg);
if reg=1 then  {2}
begin
{ђҐ¦Ё¬ ўў®¤*}
usl:=true;
while usl do
begin    {22}
 readln;
 writeln('”*¬Ё«Ёп Ё Ё*ЁжЁ*«л ');
 readln(fio1);
 {if fio1='***' then usl:=false;  }
 writeln('‘ЇҐжЁ*«м*®бвм ');
 readln(spec1);
 writeln('ЋжҐ*Є* Ї® дЁ§ЁЄҐ ');
 readln(ocfiz1);
 writeln('ЋжҐ*Є* Ї® ¬*⥬*вЁЄҐ ');
 readln(ocmatem1);
 writeln('ЋжҐ*Є* Ї® «ЁвҐа*вгॠ');
 readln(ocliter1);
 q.fio:=fio1;q.spec:=spec1;
 q.ocfiz:=ocfiz1;q.ocmatem:=ocmatem1;q.ocliter:=ocliter1;
 [COLOR="Red"]Write(f,q);           [/COLOR]{36}
end;
end;
{Љ®*Ґж ०Ё¬* ўў®¤*}
if reg=2 then
begin   {40}
{ђҐ¦Ё¬ Є®а४вЁа®ўЄЁ}
 writeln('”*¬Ё«Ёп Ё Ё*ЁжЁ*«л ');
 read(fio1);
 with q do
 while ((fio1<>'***') and (not Eof(f))) do   {45}
   begin
   Read(f,q);
   if fio=fio1 then
    begin
     writeln('”*¬Ё«Ёп €Ћ ',q.fio,'‘ЇҐж-вм ',q.spec,'Ћж. Ї® дЁ§ЁЄҐ ',q.ocfiz,'Ћж.Ї® ¬*⥬ ',q.ocmatem,'Ћж.«Ёв-ॠ',q.ocliter);
     Write(f,q);
   end;
  end; {Ї®Є* *Ґ Є®*Ґж д*©«* f & д*¬Ё«Ёп # ***}
 end; {Љ®*Ґж pҐ¦Ё¬* 2 Є®ppҐЄвЁp®ўЄЁ}
 
close(f);
end.
Выдает ошибку на выводе в файл "Ошибка записи на диск". В чем ошибка?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
08.10.2016, 15:37 7
vlisp,
вы типизированные файлы с текстовыми попутали. Ничего, бывает.
Типизированный файл открывается для чтения/записи (точнее в том режиме, что задан в FileMode, там по умолчанию 2).
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
08.10.2016, 16:15  [ТС] 8
И как типизированные читают-пишут?

Добавлено через 24 секунды
ошибка на 39 строке.
0
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.10.2016, 16:19 9
rossetta, Вот если нечего почитать, так наберите Гугле Типизированные файлы Паскаль.
0
617 / 937 / 150
Регистрация: 10.08.2015
Сообщений: 4,983
08.10.2016, 22:28 10
Цитата Сообщение от bormant Посмотреть сообщение
вы типизированные файлы с текстовыми попутали. Ничего, бывает.
а типизированный файл как текстовый нельзя открыть? дело не в типах файлов а в понимании принципов работы с ними...

Любить нужно то, чем занимаетесь, иначе последующая практика превратится в преисподнюю...

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
program Prog;
 
type
  Zap=record
    fio  : string[25];
    spec : string[25];
    ocfiz, ocmatem, ocliter : 1..5;
  end; {10}
 
 
var
  f   : file of Zap;
  fio1, spec1 : string[25];
  ocfiz1, ocmatem1, ocliter1 : integer;
  reg : integer;
  q   : Zap;
  usl : boolean;
 
begin
 
  WriteLn('Режим ввода - 1, Pежим коppектиовки - 2, Вывод ФИО по спец-ти - 3');
  ReadLn(reg);
 
  FileMode := 2;
 
  Assign(f,'d:\Proga\abitura.dat');
 
  If IOResult <> 0 then
  begin
   WriteLn ('Проблемы с файлом');
   Exit;
  end else
    WriteLn ('Работа с файлом...');
 
  Reset(f);
 
 
  if reg = 1 then  {2}
  begin
 
    {Режим ввода}
 
    usl := True;
 
    while usl <> False do
    begin    {22}
 
      writeln('Фамилия и инициалы << ');
      ReadLn(fio1);
 
      if fio1 = '***' then
        usl := False
      else
      begin
 
        writeln('Специальность << ');
        ReadLn(spec1);
 
        Writeln('Оценка по физике << ');
        Readln(ocfiz1);
 
        Writeln('Оценка по математике << ');
        Readln(ocmatem1);
 
        Writeln('Оценка по литературе << ');
        Readln(ocliter1);
 
       with q do
       begin
           fio     := fio1;
           spec    := spec1;
           ocfiz   := ocfiz1;
           ocmatem := ocmatem1;
           ocliter := ocliter1;
       end;
 
       Write(f,q);          {36}
 
    end;
  end;
 
  end; {Конец режима ввода}
 
  {Режим корректировки}
  if reg = 2 then
    writeln('Еще не готово ');
 
  if reg = 3 then
  begin   {40}
 
     ReadLn(fio1);
 
     with q do
       while ((fio1 <> '***') and (not Eof(f))) do   {45}
       begin
         Read(f,q);
         if fio = fio1 then
         begin
             Writeln('Фамилия ИО ',       fio,
                     ' ~ Спец-ть ',       spec,
                     ' ~ Оц. по физике ', ocfiz,
                     ' ~ Оц.по матем ',   ocmatem,
                     ' ~ Оц.лит-ре ',     ocliter);
             Write(f,q);
         end;
      end; {пока не конец файла f & фамилия # ***}
  end; {Конец pежима 2 коppектиpовки}
 
  close(f);
 
  ReadLn;
 
end.
Добавлено через 1 минуту
Этот код далеко не идеален, но я оставлю будущим поколениям право найти ошибки в нем
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
08.10.2016, 22:36 11
vlisp,
перестаньте, пожалуйста, писать глупости:
1) Assign() не изменяет InOutRes, проверять IOResult после вызова Assign() не имеет смысла.
2) FileMode и так по умолчанию 2, не нужно присваивать заново, масло масляное.
3) дополнительные переменные, дублирующие поля, вряд ли нужны.
4) файлы обычно нужны, чтобы хранить данные между запусками программы, критерий готовности к поиску и корректировке выбран неудачно.
Цитата Сообщение от vlisp Посмотреть сообщение
а типизированный файл как текстовый нельзя открыть?
Обычно в этом мало смысла.
0
617 / 937 / 150
Регистрация: 10.08.2015
Сообщений: 4,983
09.10.2016, 02:01 12
Цитата Сообщение от bormant Посмотреть сообщение
1) Assign() не изменяет InOutRes, проверять IOResult после вызова Assign() не имеет смысла.
Я и не ставил такой задачи, так как Reset крашит программу, если файла нет, так что до проверки дело не дойдет.
Суть в том, что нужно быть уверенным, что файл готов для работы с ним.
А код взят с какого-то паскалевского ресурса и как-то вставлен...

Цитата Сообщение от bormant Посмотреть сообщение
FileMode и так по умолчанию 2, не нужно присваивать заново, масло масляное.
Не обязательно, например в скулпаке он по умолчанию = 0, да и мало ли чудаков, способных что-нибудь изменить и забыть...
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
09.10.2016, 09:30  [ТС] 13
Спасибо за участие и помощь, как-то понемногу пошло. еще раз спасибо.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
09.10.2016, 10:25 14
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

vlisp,
Киберфорум отличный паскалевский ресурс, стоило поискать здесь.

Ок, будем есть слона по частям.
Начнём с открытия файла, "Reset крашит программу" и "нужно быть уверенным".
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const
  fName='D:\Proga\abitura.dat';
var
  f: file of Zap;
...
begin
  Assign(f,fName);
  {$I-}
  Reset(f); { пробуем открыть }
  if IOResult<>0 then begin
    Rewrite(f); { пробуем создать }
    if IOResult<>0 then begin
      WriteLn('Ошибка: сбой создания файла ',fName);
      Exit;
    end;
  end;
  {$I+}
   ...
   Close(f);
end.
Пока никаких космических технологий. Для учебной задачи вполне годится.
Тут, безусловно, тоже есть недостатки: невозможность открытия файла не всегда связана с его отсутствием, это может быть нехватка прав доступа, а также блокировка другой программой, что можно отличать по коду ошибки (InOutRes, IOResult), но в случаях, когда это важно, обычно достаточно просто отдать решение о Rewrite пользователю.

Переход к записи по номеру:
Pascal
1
2
3
4
  Write('Номер записи (1..',FileSize(f),'): ');
  ReadLn(n);
  if (n>0) and (n<=FileSize(f)+1) then Seek(f,n-1)
  else WriteLn('Ошибка: Неправильный номер');
Если нужно добавить записи в конец, нужно туда перейти (несуществующая запись за концом файла):
Pascal
1
  Seek(f,FileSize(f));
Чтение с консоли данных нескольких записей и сохранение в файл, например, могло быть таким:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
WeiteLn('Ввод данных, завершение - ***');
repeat
  with q do begin
    WriteLn('*** Запись ',FilePos(f)+1);
    Write('Фамилия И.О.: ');
    ReadLn(fio);
    if fio='***' then Break;
    Write('Специальность: ');
    ReadLn(spec);
    Write('Оценки (физика, математика, литература): ');
    ReadLn(ocFiz,ocMatem,ocLiter);
    Write(f,q);
  end;
until False;
Вывод всех записей файла мог быть таким:
Pascal
1
2
3
4
5
6
  Seek(f,0);
  while not EoF(f) do with q do begin
    Read(f,q);
    WriteLn(fio,'':30-Length(fio), spec,'':30-Length(spec),
      ocFiz:6, ocMatem:6, ocLiter:6);
  end;
Собрать целую программу из этих кирпичиков не составит труда.

А про злую любовь есть хорошая поговорка к месту

Добавлено через 35 минут
rossetta,
еще можете посмотреть там Поиск данных по Ф. И. О. работника
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
09.10.2016, 11:02  [ТС] 15
Спасибо еще раз, ваша помощь мне пригодилась! Хорошо, что есть такой форум!
0
617 / 937 / 150
Регистрация: 10.08.2015
Сообщений: 4,983
09.10.2016, 21:54 16
Цитата Сообщение от bormant Посмотреть сообщение
Ок, будем есть слона по частям.
Собственно этого было достаточно:
Pascal
1
2
3
  {$I-}
  Reset(f);
  {$I+}
Странно, но вчера proga крашилась даже с этой директивой. А, вот, теперь понял, крашилась в режиме ТР...
Собственно алгоритм только доступа к файлу не так тривиален, как кажется
1) Узнать есть ли файл
1.1) Если файла нет спросить создать ли его
1.1.1) если не создавать, то сказать адьо и выйти
1.1.2) Если создавать, то создать
1.1.2.1) Если не получилось создать, сказать адьо и выйти
1.1.2.2) Если получилось создать, сказать ок и продолжить
1.2) Если файл есть, сказать ок и продолжить
2) Проверить файл на доступность для чтения
2.1) Если файл не доступен для чтения, сказать адьо и выйти
2.2) Если файл доступен для чтения, продолжить
3) Проверить файл на доступность для записи
3.1) Если файл не доступен для записи сказать хм... убрать из меню пункты редактирования и продолжить
3.2) Если файл доступен для записи, сказать хелло и продолжить

А насчет этого...
ReadLn(ocFiz,ocMatem,ocLiter);
представьте себе слипшиеся пельмени или ячейку в экселе, в которую нужно внести имя фамилию возраст пол специальность зарплату.

Насчет поиска по номеру записи вы когда-нибудь видели в реальных приложениях такое?

Впрочем, это уже не по теме
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
09.10.2016, 22:49  [ТС] 17
вроде почти все получилось, выкладываю конечный вариант. не получился только ввод в режиме добавления записей, почему-то выдает ошибку на записи в файл.

Постановка задачи
Разработать программу создания и корректировки файла, содержащего сведения об абитуриентах, сдавших вступительные экзамены в институт. Каждый элемент этого файла должен содержать следующие данные: фамилию и инициалы абитуриента, специальность, на которую он поступает, полученные оценки по физике, математике и литературе. Предусмотреть создание текстового файла, содержащего информацию об абитуриентах, поступающих на указанную специальность.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Program Prog;
type 
Zap=record
  fio: string[25];
  spec: string[25];
  ocfiz, ocmatem, ocliter: 1..5;
end;
var f,f1: file of Zap;
f2: text;
fio1,spec1: string[25]; 
q2: string;
reg, vv: integer;
q: Zap;
usl: boolean;
begin
 
procedure Vvod; {Режим ввода}
Writeln('Режим ввода');
rewrite(f);
Usl:=true;
While usl do
 begin
   readln;  
   writeln ('Фамилия и инициалы ');
   readln(q.fio);
   if q.fio<>'***' then 
   begin
     writeln ('Специальность ');
     readln (q.spec);
     writeln ('Оценка по физике ');
     readln (q.ocfiz);
     writeln ('Оценка по математике ');
     readln (q.ocmatem);
     writeln ('Оценка по литературе ');
     readln (q.ocliter);
    writeln(q.fio,q.spec,q.ocfiz,q.ocmatem,q.ocliter);
    write(f,q);
    vv:=vv+1;  {подсчет числа записанных записей}
  end else usl:=false;
end;
writeln('число записей-',vv);
end; {Конец режима ввода proc Vvod}
 
procedure Korr; {Режим корректировки}
begin
 Writeln('Режим корректировки 2');
 Usl:=true;
 Reset(f);
 While usl do
  Begin
   Assign(f1,'d:\Proga\abitura1.dat');
   Rewrite(f1);
   Readln;
   writeln ('Фамилия и инициалы ');
   readln(fio1);
   if fio1='***' then usl:=false;
   while ((fio1<>'***') and (not Eof(f))) do
     begin
       read(f,q);
        if q.fio=fio1 then 
        begin
            writeln('Фамилия ИО ',q.fio);
             readln(q.fio);
             writeln('Spec ', q.spec);
             readln(q.spec);
             writeln('Spec ', q. ocfiz);
             readln(q.ocfiz);
             writeln('Spec ', q.ocmatem);
             readln(q.matem);
             writeln('Spec ', q.ocliter);
             readln(q.ocliter);
             vv:=vv+1; 
              writeln('korr ',q.fio,q.spec,q.ocfiz,q.ocmatem,q.ocliter);
            end else;
            write(f1,q); 
            writeln(q.fio,q.spec,q.ocfiz,q.ocmatem,q.ocliter);
            vv:=vv+1;
            writeln('vv-',vv);
        end; {пока не конец файла f & фамилия #***}
if usl=true then begin
close(f); 
close(f1);
erase(f);
rename(f1,'d:\Proga\abitura.dat');
writeln('переименовано');
reset(f); seek(f,0); end;
end;  {цикл while usl}
end; {Конец режима 2-корректировки proc Korr}
 
procedure Vivod; {Режим 3 – вывод абитуриентов по спец-ти}
begin
 reset(f);
seek(f,0);
 assign(f2,'d:\Proga\abitura2.txt');
 rewrite(f2); 
 readln;
 writeln('Режим вывода абитуриентов по спец-ти');
 writeln('Введите специальность ');
 readln(spec1);
 while not eof(f) do begin
   read(f,q);
     if q.spec=spec1 then begin
      writeln(f2,q.fio,q.spec,q.ocfiz,q.ocmatem,q.ocliter); {вывод в файл}
      writeln(q.fio,q.spec,q.ocfiz,q.ocmatem,q.ocliter);      {вывод на печать}
      vv:=vv+1; end; 
 end;
close(f2); 
end; {regim 3 proc Vivod}
 
begin
assign(f,'d:\Proga\abitura.dat');
reset(f);
writeln ('Режим ввода – 1; режим корректировки – 2, Вывод ФИО по спец-ти - 3');
vv:=0;
read(reg); 
if reg=1 then Vvod;
if reg=2 then Korr;
if reg=3 then Vivod;
close(f);
writeln('Конец программы, число записей -',vv);
end.
ВСЕМ СПАСИБО ЗА ПОМОЩЬ!
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
09.10.2016, 22:50 18
vlisp,
bBase, FoxBase, FoxPro вы, пожалуй, не застали...
Бывает так, что если чего-то не знаете, то это все равно есть.
0
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
09.10.2016, 22:50  [ТС] 19
насчет слипшихся пельменей - это отладочная печать, для себя)
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7769 / 4598 / 2823
Регистрация: 22.11.2013
Сообщений: 13,076
Записей в блоге: 1
09.10.2016, 23:30 20
rossetta,
просто беда, на первый взгляд.

Добавлено через 9 минут
vlisp,
объясните, как связан ReadLn и слипшиеся пельмени. Вас совершенно невозможно понять.
Вы не подозревали, что ReadLn(a,b,c) тождественно Read(a); Read(b); ReadLn(c); ? Или дело в чем-то другом?

Добавлено через 2 минуты
А по поводу перехода по номеру, так тут не до жиру, быть бы живу. Пока и с этим минимумом у ТС не вышло.
0
09.10.2016, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2016, 23:30
Помогаю со студенческими работами здесь

Создание и обработка типизированного файла, содержащего сведения о месте жительства студента
Разработать программу решение задачи, в которой реализовать создание и обработку типизированного...

Редактирование текстового файла, содержащего сведения о студентах
Привет. Нужна помощь с решением задачи. Знаю как решить логически но по программному коду че-то...

Обработка текстового файла, содержащего сведения о студентах
Дан текстовый файл, содержащий сведения о студентах. Need help , может кто может помочь? Как это...

Разработать программу формирования файла, содержащего сведения о школьниках
помогите пожалуйста решить задачи в делфи очень надо 3.Разработать программу формирования файла,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru