Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21

В файле содержатся сведения об автомобилях

10.12.2019, 20:07. Показов 2008. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В файле содержатся сведения об автомобилях: марка, номер, фамилия владельца, величина пробега и даты последнего техосмотра (число, месяц, год). В новый файл переписать информацию о владельцах автомобилей, которые прошли техосмотр вовремя (техосмотр проводится один раз в году). В текстовый файл вывести марку, номер, фамилию владельца автомобилей, величина пробега которых превышает заданную величину.
К
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
uses crt;
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
a:array[1..3] of integer;
end;
tfcar = file of tcar;
procedure task;
begin 
  clrscr;
  writeln('автор');
end;
procedure inputRec(varst:tcar);
var i:integer;
begin
  writeln('Введитемарку авто');
  readln('st.brand');
  writeln('Введите номер');
  readln('st.nomer');
  writeln('Введите фамилию владельца');
  readln('st.name');
  writeln('Введитеданные о пробеге');
  readln('st.probeg');
  writeln('Введите год, когда проводился техосмотр');
  readln('st.god');
  writeln('Введите месяц, когда проводился техосмотр');
  readln('st.ms');
  writeln('Введите день, когда проводился техосмотр');
  readln('st.den');
end;
procedure addFile (var t:tfcar; st: tcar);
begin
reset(f);
seek(f, filesize(f));
write(f,st);
close(f);
end;
procedure delete(var f:tfcar; n:integer);//vopros
var st: tcar;
begin
  reset(f);
  if n<>filesize(f)-1 then begin
    seek (f, filesize(f)-1);
    read(f,st);
    seek(f,n);
    write(f,st);
  end;
  seek(f, filesize(f)-1);
  truncate(f);
  close(f);
  end;
Procedure ViewFileRec(var f: tfcar);
var st:tcar;
    i:integer;
begin
  write('Марка авто':10, 'Номер':10, 'Фамилия':15, 'Пробег':10, 'Дата проведения техосмотра':12);//voprosiki
     reset(f);
     while not eof(f) do begin
           read(f,st);
           write(st.brand:10, st.nomer:10, st.name:15, st.probeg:10);
           for i:=1 to 3 do
               write(st.a[i]:2);
           writeln; 
           end;
           close(f);
           end;
procedure ViewFileTxt(var f:text);
var s:string;
begin
  reset(f);
  while not eof(f) do begin
    readln(f,s);
    writeln(s);
  end;
  close(f);
end;
///// тут должен быть filetifilerec
procedure FileToFileTxt(var f1:tfCar;var f2:text; probeg:string);
var st:tCar; c:integer;i:integer;
begin    
  reset (f1);rewrite(f2);
  writeln(f2, 'Владельцы автомобилей, величина пробега которых превышает заданную величину.',probeg);
  while not eof(f1) do begin
  read (f1,st);
  if st.probeg>c then begin
   write (f2,st.brand:20, st.nomer:10, st.name:30);
     for i:=1 to 3 do write (f2,st.a[i]:2);
     writeln(f2);
   end;
  end;
      close (f1);close(f2);
end;
  
var f1,f2:tfCar;f3:text;
fn1,fn2,fn3:string; c:integer;
m1,m2:integer;st:tCar;n:integer;
begin
repeat   
clrscr;
writeln('Выберите действие:');
writeln('1-Задание');
writeln('2-Создание файла');
writeln('3-Работа с файлом');
writeln('4-Владельцы авто, которые прошли техосмотр вовремя');
writeln('5-Пробег');
writeln('6-Просмотр ТФ');
writeln('Удаление файла');
writeln('Ваш выбор..');
readln(m1);
case m1 of
         1: begin   // Задание
              writeln('..чмчсмчсммчмчсм.');
              readln;
            end;
         2: begin   // Создание ФЗ
              writeln('Введите имя файла');
              readln(fn1);
              if not FileExists(fn1) then begin
                assign(f1,fn1);
                rewrite(f1); close(f1);
              end
              else writeln('Файл с таким именем существует');
            end;
         3: begin   // Работа с файлом
              writeln('Введите имя файла');
              readln(fn1);
              if FileExists(fn1)then begin
                assign(f1,fn1);
                repeat
                  ViewRecFile(f1);
                  writeln('Меню работы с файлом');
                  writeln('1-добавить запись');
                  writeln('2-удалить запись');
                  writeln('3-редактировать запись');
                  writeln('0-выход');
                  writeln('Ваш выбор: ');
                  readln(m2);
                  case m2 of
                    1: begin  // Добавление ЗП
                         InputRec(st);
                         AddFile(f1,st);
                       end;
                    2: begin  // Удаление ЗП
                         writeln('Введите номер записи');
                         readln(n);
                         dec(n);
                         delete(f1,n);
                       end;
                    3: begin  // Редактирование ЗП
                         readln(n);
                         dec(n);
                         delete(f1,n);
                         inputRec(st);
                         addFile(f1,st);
                       end;
                  end;
                until m2=0;
              end
              else writeln('Файл не существует');
            end;
            4:begin
              
            end;
            5:begin
            write('Введите имя исходного файла..');readln(fn1);
            if fileexists(fn1) then begin
               assign (f1,fn1);
               write('Введите имя результирующего файла..');readln(fn3);
               assign(f3,fn3);
               writeln('Введите пробег автомобиля');readln(c);
               FileToFileTxt(f1,f3,c);
               end;
               writeln('Файл не существует');
           end;
           6:begin
           write ('Исходный файл..');
           readln(fn3);
           if fileexists(fn3) then begin
             assign(f3,fn3);
             ViewFileTxt(f3);
             end;
           writeln('Файл не существует');
           end;
           7: begin   // Удаление файла
               writeln('Введите имя файла');
               readln(fn3);
               if FileExists (fn3) then begin
                 assign(f3,fn3);
                 Erase(f3);
               end;
             end;
 
           end;
           end;
           until m1=0;
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2019, 20:07
Ответы с готовыми решениями:

Описать сведения об автомобилях
Создать файл, в котором есть таблица описывающая: 1) Порядковый номер 2) название 3) автор 4) шифр 5) Цена автомобиля используя...

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

Создать типизированный файл, который содержит сведения об автомобилях
program n1; type rec = record marka: string; firma: string; cost: integer; end; var

12
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.12.2019, 09:30
end; в 196 строке лишний, его нужно убрать.

Цитата Сообщение от dn1na Посмотреть сообщение
Pascal
1
2
3
4
  readln('st.brand');
  readln('st.nomer');
...
  readln('st.den');
неверно. в readln кавычки не нужны. кавычки - это так задаётся строка/символ в тексте.
а переменную для ввода нужно всегда писать без кавычек:
Pascal
1
2
3
4
  readln(st.brand);
  readln(st.nomer);
...
  readln(st.den);
но дальше опять будет ошибка.
ты пытаешься ввести поля st.god, st.ms, st.den
но таких полей в описании типа запись нет.

исправь эти ошибки. потом поговорим дальше.
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 11:46  [ТС]
mr-Crocodile, да, еще вчера все это сделал
и чуток поменял тему с датой
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
god:integer;
a:array[1..3] of integer;
end;
tfcar = file of tcar;
procedure task;
begin 
  clrscr;
  writeln('Гипиков Станислав Олегович, группа 6104');
end;
procedure inputRec(var st:tcar);
var i:integer;
begin
  writeln('Введите марку авто');
  readln(st.brand);
  writeln('Введите номер');
  readln(st.nomer);
  writeln('Введите фамилию владельца');
  readln(st.name);
  writeln('Введитеданные о пробеге');
  readln(st.probeg);
  writeln('Введите год, когда проводился техосмотр');
  readln(st.god);
end;
procedure addFile (var f:tfcar; st: tcar);
begin
reset(f);
seek(f, filesize(f));
write(f,st);
close(f);
end;
procedure delete(var f:tfcar; n:integer);//vopros
var st: tcar;
begin
  reset(f);
  if n<>filesize(f)-1 then begin
    seek (f, filesize(f)-1);
    read(f,st);
    seek(f,n);
    write(f,st);
  end;
  seek(f, filesize(f)-1);
  truncate(f);
  close(f);
  end;
Procedure ViewFileRec(var f: tfcar);
var st:tcar;
    i,j:integer;
begin
  write('Марка авто':40, 'Номер':10, 'Фамилия':15, 'Пробег':10, 'Дата проведения техосмотра':30);//voprosiki
     reset(f);
     j:=1;
     while not eof(f) do begin
           read(f,st);
           write(st.brand:10, st.nomer:10, st.name:15, st.probeg:10);
           for i:=1 to 3 do
               write(st.a[i]:2);
           writeln; 
           j:=j+1;
           end;
           close(f);
           end;
procedure ViewFileTxt(var f:text);
var s:string;
begin
  reset(f);
  while not eof(f) do begin
    readln(f,s);
    writeln(s);
  end;
  close(f);
end;
///// тут должен быть filetifilerec
procedure FileToFileTxt(var f1:tfCar;var f2:text; probeg:string);
var st:tCar; c:integer;
begin    
  reset (f1);rewrite(f2);
  writeln(f2, 'Владельцы автомобилей, величина пробега которых превышает заданную величину:',probeg);
  while not eof(f1) do begin
  read (f1,st);
  if st.probeg>c then begin
   write (f2,st.brand:20, st.nomer:10, st.name:30);
     
     writeln(f2);
   end;
  end;
      close (f1);close(f2);
end;
  
var f1,f2:tfCar;f3:text;
fn1,fn2,fn3:string; c:integer;
m1,m2:integer;st:tCar;n:integer;
begin
repeat   
clrscr;
writeln('Выберите действие:');
writeln('1-Задание');
writeln('2-Создание файла');
writeln('3-Работа с файлом');
writeln('4-Владельцы авто, которые прошли техосмотр вовремя');
writeln('5-Пробег');
writeln('6-Просмотр ТФ');
writeln('Удаление файла');
writeln('Ваш выбор..');
readln(m1);
case m1 of
         1: begin   // Задание
              writeln('..чмчсмчсммчмчсм.');
              readln;
            end;
         2: begin   // Создание ФЗ
              writeln('Введите имя файла');
              readln(fn1);
              if not FileExists(fn1) then begin
                assign(f1,fn1);
                rewrite(f1); close(f1);
              end
              else writeln('Файл с таким именем существует');
            end;
         3: begin   // Работа с файлом
              writeln('Введите имя файла');
              readln(fn1);
              if FileExists(fn1)then begin
                assign(f1,fn1);
                repeat
                  
                  writeln('Меню работы с файлом:');
                  writeln('1-добавить запись');
                  writeln('2-удалить запись');
                  writeln('3-редактировать запись');
                  writeln('0-выход');
                  
                  writeln('Ваш выбор: ');
                  readln(m2);
                  case m2 of
                    1: begin  // Добавление ЗП
                         InputRec(st);
                         AddFile(f1,st);
                       end;
                    2: begin  // Удаление ЗП
                         writeln('Введите номер записи');
                         readln(n);
                         dec(n);
                         delete(f1,n);
                       end;
                    3: begin  // Редактирование ЗП
                         readln(n);
                         dec(n);
                         delete(f1,n);
                         inputRec(st);
                         addFile(f1,st);
                       end;
                  end;
                until m2=0;
              end
              else writeln('Файл не существует');
            end;
            4:begin
              
            end;
            5:begin
            writeln('Введите имя исходного файла..');
            
            readln(fn1);
            if fileexists(fn1) then begin
               assign (f1,fn1);
               write('Введите имя результирующего файла..');
               readln(fn3);
               assign(f3,fn3);
               writeln('Введите пробег автомобиля');
               readln(c);
               FileToFileTxt(f1,f3,c);
               end;
               writeln('Файл не существует');
           end;
           6:begin
           write ('Исходный файл..');
           readln(fn3);
           if fileexists(fn3) then begin
             assign(f3,fn3);
             ViewFileTxt(f3);
             end;
           writeln('Файл не существует');
           end;
           7: begin   // Удаление файла
               writeln('Введите имя файла');
               readln(fn3);
               if FileExists (fn3) then begin
                 assign(f3,fn3);
                 Erase(f3);
               end;
             end;
           end;
           until m1=0;
end.
но ошибка в этой строке
Pascal
1
FileToFileTxt(f1,f3,c);
нельзя преобразовать тип integer к string
у меня же везде c указан, как integer
что не так?
ну а с датой... можно же создать массив день/месяц/год
пользователь вводит это в файл
а потом пользователь вводит текущую дату
и типа программа будет переписывать в новый файл данные о владельцах тех авто, если, например, "год равен или год проведения техосмотра какой то машины меньше на единицу, чем текущий и месяц техосмотра больше, чем текущий или год меньше на единицу и месяцы равны и день больше или равен, чем текущий"
как это реализовать?

Добавлено через 25 минут
mr-Crocodile, сейчас у меня вот такой код, он чем то отличается от предыдущего, но я понять не могу, чем именно, ну разве что кроме фио, которые я забыл убрать
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
uses crt;
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
god:integer;
a:array[1..3] of integer;
end;
tfcar = file of tcar;
procedure task;
begin 
  clrscr;
  writeln('*');
end;
procedure inputRec(var st:tcar);
var i:integer;
begin
  writeln('Введите марку авто');
  readln(st.brand);
  writeln('Введите номер');
  readln(st.nomer);
  writeln('Введите фамилию владельца');
  readln(st.name);
  writeln('Введите данные о пробеге');
  readln(st.probeg);
  writeln('Введите год, когда проводился техосмотр');
  readln(st.god);
end;
procedure addFile (var f:tfcar; st: tcar);
begin
reset(f);
seek(f, filesize(f));
write(f,st);
close(f);
end;
procedure delete(var f:tfcar; n:integer);//vopros
var st: tcar;
begin
  reset(f);
  if n<>filesize(f)-1 then begin
    seek (f, filesize(f)-1);
    read(f,st);
    seek(f,n);
    write(f,st);
  end;
  seek(f, filesize(f)-1);
  truncate(f);
  close(f);
  end;
Procedure ViewFileRec(var f: tfcar);
var st:tcar;
    i,j:integer;
begin
  write('Марка авто':40, 'Номер':10, 'Фамилия':15, 'Пробег':10, 'Дата проведения техосмотра':30);//voprosiki
     reset(f);
     j:=1;
     while not eof(f) do begin
           read(f,st);
           write(st.brand:10, st.nomer:10, st.name:15, st.probeg:10);
           for i:=1 to 3 do
               write(st.a[i]:2);
           writeln; 
           j:=j+1;
           end;
           close(f);
           end;
procedure ViewFileTxt(var f:text);
var s:string;
begin
  reset(f);
  while not eof(f) do begin
    readln(f,s);
    writeln(s);
  end;
  close(f);
end;
///// тут должен быть filetifilerec
procedure FileToFileTxt(var f1:tfCar;var f2:text; probeg:string);
var st:tCar; c:integer;
begin    
  reset (f1);rewrite(f2);
  writeln(f2, 'Владельцы автомобилей, величина пробега которых превышает заданную величину:',probeg);
  while not eof(f1) do begin
  read (f1,st);
  if st.probeg>c then begin
   write (f2,st.brand:20, st.nomer:10, st.name:30);
     
     writeln(f2);
   end;
  end;
      close (f1);close(f2);
end;
  
var f1,f2:tfCar;f3:text;
fn1,fn2,fn3:string; c:integer;
m1,m2:integer;st:tCar;n:integer;
begin
repeat   
clrscr;
writeln('Выберите действие:');
writeln('1-Задание');
writeln('2-Создание файла');
writeln('3-Работа с файлом');
writeln('4-Владельцы авто, которые прошли техосмотр вовремя');
writeln('5-Пробег');
writeln('6-Просмотр ТФ');
writeln('Удаление файла');
writeln('Ваш выбор..');
readln(m1);
case m1 of
         1: begin   // Задание
              writeln('..чмчсмчсммчмчсм.');
              readln;
            end;
         2: begin   // Создание ФЗ
              writeln('Введите имя файла');
              readln(fn1);
              if not FileExists(fn1) then begin
                assign(f1,fn1);
                rewrite(f1); close(f1);
              end
              else writeln('Файл с таким именем существует');
            end;
         3: begin   // Работа с файлом
              writeln('Введите имя файла');
              readln(fn1);
              if FileExists(fn1)then begin
                assign(f1,fn1);
                repeat
                  
                  writeln('Меню работы с файлом:');
                  writeln('1-добавить запись');
                  writeln('2-удалить запись');
                  writeln('3-редактировать запись');
                  writeln('0-выход');
                  
                  writeln('Ваш выбор: ');
                  readln(m2);
                  case m2 of
                    1: begin  // Добавление ЗП
                         InputRec(st);
                         AddFile(f1,st);
                       end;
                    2: begin  // Удаление ЗП
                         writeln('Введите номер записи');
                         readln(n);
                         dec(n);
                         delete(f1,n);
                       end;
                    3: begin  // Редактирование ЗП
                         readln(n);
                         dec(n);
                         delete(f1,n);
                         inputRec(st);
                         addFile(f1,st);
                       end;
                  end;
                until m2=0;
              end
              else writeln('Файл не существует');
            end;
            4:begin
              
            end;
            5:begin
            writeln('Введите имя исходного файла..');
            
            readln(fn1);
            if fileexists(fn1) then begin
               assign (f1,fn1);
               write('Введите имя результирующего файла..');
               readln(fn3);
               assign(f3,fn3);
               writeln('Введите пробег автомобиля');
               readln(c);
               FileToFileTxt(f1,f3,c);
               end;
               writeln('Файл не существует');
           end;
           6:begin
           write ('Исходный файл..');
           readln(fn3);
           if fileexists(fn3) then begin
             assign(f3,fn3);
             ViewFileTxt(f3);
             end;
           writeln('Файл не существует');
           end;
           7: begin   // Удаление файла
               writeln('Введите имя файла');
               readln(fn3);
               if FileExists (fn3) then begin
                 assign(f3,fn3);
                 Erase(f3);
               end;
             end;
           end;
           until m1=0;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.12.2019, 12:03
Цитата Сообщение от dn1na Посмотреть сообщение
но ошибка в этой строке
Pascal
1
FileToFileTxt(f1,f3,c);
логично.
исправь описание функции FileToFileTxt

Pascal
1
procedure FileToFileTxt(var f1:tfCar;var f2:text; limit_probeg:integer);
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
procedure FileToFileTxt(var f1:tfCar;var f2:text;  limit_probeg:integer);
var st:tCar; c:integer;
begin    
  reset (f1);rewrite(f2);
  writeln(f2, 'Владельцы автомобилей, величина пробега которых превышает заданную величину: ',limit_probeg);
  while not eof(f1) do begin
      read (f1,st);
      if st.probeg>limit_probeg then 
          writeLn (f2,st.brand:20, st.nomer:10, st.name:30,' ', st,probeg);
  end;
  close (f1);close(f2);
end
Цитата Сообщение от dn1na Посмотреть сообщение
техосмотра какой то машины меньше на единицу, чем текущий и месяц техосмотра больше, чем текущий или год меньше на единицу и месяцы равны и день больше или равен, чем текущий"
у тебя нет даты техосмотра, только год. Ты или добавь ввод даты (кстати в Pascal ABC.NET есть тип DateTime )
либо ориентируйся только на год техосмотра.
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 12:53  [ТС]
mr-Crocodile, все то, что мы вводим, должно же быть стринг?
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
uses crt;
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:string;
dn: string[5];
ms: string[1];
god:string[1];
a:array[1..3] of integer;
end;
tfcar = file of tcar;
procedure task;
begin 
  clrscr;
  writeln('*');
end;
procedure inputRec(var st:tcar);
var i:integer;
begin
  writeln('Введите марку авто');
  readln(st.brand);
  writeln('Введите номер');
  readln(st.nomer);
  writeln('Введите фамилию владельца');
  readln(st.name);
  writeln('Введите данные о пробеге');
  readln(st.probeg);
  writeln('Введите день');
  readln (st.dn);
  writeln('Введите месяц');
  readln(st.ms);
  writeln('Введите год, когда проводился техосмотр');
  readln(st.god);
  
end;
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.12.2019, 13:18
Цитата Сообщение от dn1na Посмотреть сообщение
все то, что мы вводим, должно же быть стринг?
НЕТ!!!

Марка автомобиля, номер ГРЗ и ФИО владельца - да, это строки (хотя для Марки авто по хорошему нужен справочник, но это отдельная песня, в учебной задаче можно и строкой обойтись).

а вот пробег - это однозначно ЧИСЛО.
ну и год, месяц, день - однозначно тоже числа, причём целые.
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 15:40  [ТС]
mr-Crocodile, попытался сделать таким образом сравнение дат
во первых, все, что я записываю в файл, отображается так, как на первом скрине
во вторых, почему то день/месяц/год превращаются в нули, как на втором скрине
что нужно исправить?
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
uses crt;
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
gd:integer;
     ms:integer;
     dn:integer;
     gd2:integer;
     ms2:integer;
     dn2:integer;
a:array[1..3] of integer;
end;
tfcar = file of tcar;
procedure task;
begin 
  clrscr;
  writeln('*');
end;
procedure inputRec(var st:tcar);
var i:integer;
begin
  writeln('Введите марку авто');
  readln(st.brand);
  writeln('Введите номер');
  readln(st.nomer);
  writeln('Введите фамилию владельца');
  readln(st.name);
  writeln('Введите данные о пробеге');
  readln(st.probeg);
  writeln('Введите дату последнего техосмотра');
  readln(st.gd);
  readln(st.ms);
  readln(st.dn);
  end;
procedure addFile (var f:tfcar; st: tcar);
begin
reset(f);
seek(f, filesize(f));
write(f,st);
close(f);
end;
 
procedure delete(var f:tfcar; n:integer);
var st: tcar;
begin
  reset(f);
  if n<>filesize(f)-1 then begin
    seek (f, filesize(f)-1);
    read(f,st);
    seek(f,n);
    write(f,st);
  end;
  seek(f, filesize(f)-1);
  truncate(f);
  close(f);
  end;
function Data (st:tcar;var f1,f2:tfCar):boolean;
 
begin
  writeln('Введите сегодняшнюю дату');
  readln(st.dn2);
  readln(st.ms2);
  readln(st.gd2);
  
   reset(f1);rewrite(f2);
       while not eof(f1) do begin
         read (f1,st);
 
if (st.gd=st.gd2)or((st.gd<st.gd2)and(st.ms>st.ms2))
   or((st.gd<st.gd2)and(st.ms=st.ms2)and(st.dn>st.dn2))
then write (f2,st);
          end;
          close (f1);close(f2);
          end;
 
procedure ViewFileTxt(var f:text);
var s:string;
begin
  reset(f);
  while not eof(f) do begin
    readln(f,s);
    writeln(s);
  end;
  close(f);
end;
 
procedure FileToFileTxt(var f1:tfCar;var f3:text; probeg:integer);
var st:tCar; c:integer;
begin    
  reset (f1);rewrite(f3);
  writeln(f3, 'Владельцы автомобилей, величина пробега которых превышает заданную величину:',probeg);
  while not eof(f1) do begin
  read (f1,st);
  if st.probeg>c then 
   writeln (f3,st.brand:10, st.nomer:10, st.name:10);
   end;
      close (f1);close(f3);
end;
procedure ViewFileRec(var f:tfCar);
   var st:tcar; i:integer;
   begin
    reset(f);
    writeln('Марка':10, 'Номер':10, 'Имя':10, 'Пробег':10,'Дата техосмотра':12);
     while not eof(f) do begin
      read(f,st);
     write (st.brand:10, st.nomer:10, st.name:10, st.probeg:10);
      for i:=1 to 3 do
       write (st.a[i]:2,'.');
       writeln;
       end;
       close(f);
       end;
var f1,f2:tfCar;f3:text;
fn1,fn2,fn3:string; c:integer;
m1,m2:integer;st:tCar;n:integer;
begin
repeat   
clrscr;
writeln('Выберите действие:');
writeln('1-Задание');
writeln('2-Создание файла');
writeln('3-Работа с файлом');
writeln('4-Владельцы авто, которые прошли техосмотр вовремя');
writeln('5-Пробег');
writeln('6-Просмотр ТФ');
writeln('Удаление файла');
writeln('Ваш выбор..');
readln(m1);
case m1 of
         1: begin   // Задание
              writeln('..чмчсмчсммчмчсм.');
              readln;
            end;
         2: begin   // Создание ФЗ
              writeln('Введите имя файла');
              readln(fn1);
              if not FileExists(fn1) then begin
                assign(f1,fn1);
                rewrite(f1); close(f1);
              end
              else writeln('Файл с таким именем существует');
            end;
         3: begin   // Работа с файлом
              writeln('Введите имя файла');
              readln(fn1);
              if FileExists(fn1)then begin
                assign(f1,fn1);
                repeat
                  ViewFileRec(f1);
                  writeln('Меню работы с файлом:');
                  writeln('1-добавить запись');
                  writeln('2-удалить запись');
                  writeln('3-редактировать запись');
                  writeln('0-выход');
                  
                  writeln('Ваш выбор: ');
                  readln(m2);
                  case m2 of
                    1: begin  // Добавление ЗП
                         InputRec(st);
                         AddFile(f1,st);
                       end;
                    2: begin  // Удаление ЗП
                         writeln('Введите номер записи');
                         readln(n);
                         dec(n);
                         delete(f1,n);
                       end;
                    3: begin  // Редактирование ЗП
                         readln(n);
                         dec(n);
                         delete(f1,n);
                         inputRec(st);
                         addFile(f1,st);
                       end;
                  end;
                until m2=0;
              end
              else writeln('Файл не существует');
            end;
            4:begin
              writeln('Введите имя файла');
              readln(fn1);
              if fileexists(fn1) then begin
                 writeln('Введите имя результирующего файла');
                 readln(fn2);
                 assign(f1,fn1);
                 assign(f2,fn2);
                 Data (st,f1,f2);
                 end
              else writeln('Файл не существует');
             end;
 
           
            5:begin
            writeln('Введите имя исходного файла..');
            
            readln(fn1);
            if fileexists(fn1) then begin
               assign (f1,fn1);
               write('Введите имя результирующего файла..');
               readln(fn3);
               assign(f3,fn3);
               writeln('Введите пробег автомобиля');
               readln(c);
               FileToFileTxt(f1,f3,c);
               end;
               writeln('Файл не существует');
           end;
           6:begin
             writeln('Введите имя файла');
              readln(fn3);
              if FileExists(fn3) then begin
                assign(f3,fn3);
                clrscr;
                ViewFileTxt(f3);
                readln;
              end
              else writeln('Файл не существует');
              end;             
           7: begin   // Удаление файла
               writeln('Введите имя файла');
               readln(fn3);
               if FileExists (fn3) then begin
                 assign(f3,fn3);
                 Erase(f3);
               end;
             end;
           end;
           until m1=0;
end.
Миниатюры
В файле содержатся сведения об автомобилях   В файле содержатся сведения об автомобилях  
0
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 15:51  [ТС]
mr-Crocodile, а, я забыл кое что удалить из кода и вписать переменные дат, чтобы они отображались
но проблема с отображением введенного в файле все равно осталась, шо делать то
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.12.2019, 16:06
Цитата Сообщение от dn1na Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
gd:integer;
     ms:integer;
     dn:integer;
     gd2:integer;
     ms2:integer;
     dn2:integer;
a:array[1..3] of integer;
end;
неверно.
сегодняшняя дата нужна в каждой записи? Очевидно, что нет, она к записи об автомобиле отношения не имеет.
и выкинь непонятный массив a

пример 1
Pascal
1
2
3
4
5
6
7
8
9
type tcar=record
    brand: string[15];
    nomer: string[10];
    name:  string [50];
    probeg:integer;
    gd:integer;
    ms:integer;
    dn:integer;
end;
вместо отдельного хранения года, месяца и дня, я бы рекомендовал либо ввести свой тип
Pascal
1
2
3
4
5
type myDateRec = 
  gd : 1900..2100;
  ms : 1..12;
  dn: 1..31;
end;
или, ещё лучше, можно взять готовый системный тип DateTime http://pascalabc.net/stati-po-... ipy-klassy

Дальнейшие исследования можно продолжить с типом DateTime. Для этого, правда, придется, подключить пространство имен System:

Pascal
1
uses System;
DateTime.Now вернет текущие дату и время, их можно присвоить переменной типа DateTime, а потом вычленить из нее день, месяц, год, часы, минуты и секунды с помощью свойств Day, Month, Year, Hour, Minute, Second:

Pascal
1
2
3
4
5
begin
  var d: DateTime := DateTime.Now;
  writeln(d.Day,'.',d.Month,'.',d.Year);
  writeln(d.Hour,':',d.Minute,':',d.Second);
end.
но ты, если это для тебя сложно, не парься.
просто оставь так, как написано в пример 1

Цитата Сообщение от dn1na Посмотреть сообщение
все, что я записываю в файл, отображается так, как на первом скрине
типизированный файл file of tcar - НЕ ТЕКСТОВЫЙ. Его нельзя смотреть обычными просмотрщиками текста или загружать в Блокнот.
Его можно читать/писать только программным способом, написав программу. Этот файл двоичный. Ты там ничего видеть и не должен (хотя, конечно, можно посмотреть, если умеешь смотреть бинарные файлы и знаешь его формат )

Добавлено через 3 минуты
Цитата Сообщение от dn1na Посмотреть сообщение
во вторых, почему то день/месяц/год превращаются в нули
потому что вместо них выводишь данные из массива a
ты уж определись, где у тебя дата - в переменных gd, ms, dn или в массиве A array[1..3] of integer
(массив тоже можно использовать - но надо однозначно выбрать или так или так, но не вместе).
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 16:43  [ТС]
mr-Crocodile, спасибо за пояснение насчет файла)00
сделал так, было в примере 1, но теперь ошибка в 191 строке
неизвестное имя dr
что я опять сделал не так?
я еще очень удивлен, что ты до сих пор отвечаешь)00))
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
uses crt;
type tcar=record
brand: string[15];
nomer: string[10];
name:  string [50];
probeg:integer;
gd:integer;
     ms:integer;
     dn:integer;
end;
tfcar = file of tcar;
type myDateRec=record
  gd: 1900..2100;
  ms: 1..12;
  dn: 1..31;
end;
 
procedure task;
begin 
  clrscr;
  writeln('*');
end;
procedure inputRec(var st:tcar);
var i:integer;
begin
  writeln('Введите марку авто');
  readln(st.brand);
  writeln('Введите номер');
  readln(st.nomer);
  writeln('Введите фамилию владельца');
  readln(st.name);
  writeln('Введите данные о пробеге');
  readln(st.probeg);
  writeln('Введите дату последнего техосмотра');
  readln(st.dn);
  readln(st.ms);
  readln(st.gd);
  end;
procedure addFile (var f:tfcar; st: tcar);
begin
reset(f);
seek(f, filesize(f));
write(f,st);
close(f);
end;
 
procedure delete(var f:tfcar; n:integer);
var st: tcar;
begin
  reset(f);
  if n<>filesize(f)-1 then begin
    seek (f, filesize(f)-1);
    read(f,st);
    seek(f,n);
    write(f,st);
  end;
  seek(f, filesize(f)-1);
  truncate(f);
  close(f);
  end;
function Data (st:tcar;var f1,f2:tfcar;dr:myDateRec):boolean;
 
begin
  writeln('Введите сегодняшнюю дату');
  readln(dr.dn);
  readln(dr.ms);
  readln(dr.gd);
  
   reset(f1);rewrite(f2);
       while not eof(f1) do begin
         read (f1,st);
if (st.gd=dr.gd)or((st.gd<dr.gd)and(st.ms>dr.ms))
   or((st.gd<dr.gd)and(st.ms=dr.ms)and(st.dn>dr.dn))
then write (f2,st);
          end;
          close (f1);close(f2);
          end;
 
procedure ViewFileTxt(var f:text);
var s:string;
begin
  reset(f);
  while not eof(f) do begin
    readln(f,s);
    writeln(s);
  end;
  close(f);
end;
 
procedure FileToFileTxt(var f1:tfCar;var f3:text; probeg:integer);
var st:tCar; c:integer;
begin    
  reset (f1);rewrite(f3);
  writeln(f3, 'Владельцы автомобилей, величина пробега которых превышает заданную величину:',probeg);
  while not eof(f1) do begin
  read (f1,st);
  if st.probeg>c then 
   writeln (f3,st.brand:10, st.nomer:10, st.name:10);
   end;
      close (f1);close(f3);
end;
procedure ViewFileRec(var f:tfCar);
   var st:tcar; i:integer;
   begin
    reset(f);
    writeln('Марка':10, 'Номер':10, 'Имя':10, 'Пробег':10,'Дата техосмотра':20);
     while not eof(f) do begin
      read(f,st);
     write (st.brand:10, st.nomer:10, st.name:10, st.probeg:10, st.dn:6, '.', st.ms:1,'.', st.gd:1);
      
       writeln;
       end;
       close(f);
       end;
var f1,f2:tfCar;f3:text;
fn1,fn2,fn3:string; c:integer;
m1,m2:integer;st:tCar;n:integer;
begin
repeat   
clrscr;
writeln('Выберите действие:');
writeln('1-Задание');
writeln('2-Создание файла');
writeln('3-Работа с файлом');
writeln('4-Владельцы авто, которые прошли техосмотр вовремя');
writeln('5-Пробег');
writeln('6-Просмотр ТФ');
writeln('Удаление файла');
writeln('Ваш выбор..');
readln(m1);
case m1 of
         1: begin   // Задание
              writeln('..чмчсмчсммчмчсм.');
              readln;
            end;
         2: begin   // Создание ФЗ
              writeln('Введите имя файла');
              readln(fn1);
              if not FileExists(fn1) then begin
                assign(f1,fn1);
                rewrite(f1); close(f1);
              end
              else writeln('Файл с таким именем существует');
            end;
         3: begin   // Работа с файлом
              writeln('Введите имя файла');
              readln(fn1);
              if FileExists(fn1)then begin
                assign(f1,fn1);
                repeat
                  ViewFileRec(f1);
                  writeln('Меню работы с файлом:');
                  writeln('1-добавить запись');
                  writeln('2-удалить запись');
                  writeln('3-редактировать запись');
                  writeln('0-выход');
                  
                  writeln('Ваш выбор: ');
                  readln(m2);
                  case m2 of
                    1: begin  // Добавление ЗП
                         InputRec(st);
                         AddFile(f1,st);
                       end;
                    2: begin  // Удаление ЗП
                         writeln('Введите номер записи');
                         readln(n);
                         dec(n);
                         delete(f1,n);
                       end;
                    3: begin  // Редактирование ЗП
                         readln(n);
                         dec(n);
                         delete(f1,n);
                         inputRec(st);
                         addFile(f1,st);
                       end;
                  end;
                until m2=0;
              end
              else writeln('Файл не существует');
            end;
            4:begin
              writeln('Введите имя файла');
              readln(fn1);
              if fileexists(fn1) then begin
                 writeln('Введите имя результирующего файла');
                 readln(fn2);
                 assign(f1,fn1);
                 assign(f2,fn2);
                 Data (st,dr,f1,f2);
                 end
              else writeln('Файл не существует');
             end;
 
           
            5:begin
            writeln('Введите имя исходного файла..');
            
            readln(fn1);
            if fileexists(fn1) then begin
               assign (f1,fn1);
               write('Введите имя результирующего файла..');
               readln(fn3);
               assign(f3,fn3);
               writeln('Введите пробег автомобиля');
               readln(c);
               FileToFileTxt(f1,f3,c);
               end;
               writeln('Файл не существует');
           end;
           6:begin
             writeln('Введите имя файла');
              readln(fn3);
              if FileExists(fn3) then begin
                assign(f3,fn3);
                clrscr;
                ViewFileTxt(f3);
                readln;
              end
              else writeln('Файл не существует');
              end;             
           7: begin   // Удаление файла
               writeln('Введите имя файла');
               readln(fn3);
               if FileExists (fn3) then begin
                 assign(f3,fn3);
                 Erase(f3);
               end;
             end;
           end;
           until m1=0;
end.
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
11.12.2019, 17:39
Лучший ответ Сообщение было отмечено dn1na как решение

Решение

я немного поправил твой код
посмотри:
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
uses crt;
 
type
  tcar = record
    brand: string[15];
    nomer: string[10];
    name: string[50];
    probeg: integer;
    gd: integer;
    ms: integer;
    dn: integer;
  end;
 
  tfcar = file of tcar;
 
  myDateRec = record
    gd: 1900..2100;
    ms: 1..12;
    dn: 1..31;
  end;
 
 
procedure task;
begin
  clrscr;
  writeln('*');
  writeln('..чмчсмчсммчмчсм.');
  readln;  
end;
 
procedure inputRec(var st: tcar);
var
  i: integer;
begin
  write('Введите марку авто: ');
  readln(st.brand);
  write('Введите номер авто: ');
  readln(st.nomer);
  write('Введите фамилию владельца: ');
  readln(st.name);
  write('Введите данные о пробеге (целое число): ');
  readln(st.probeg);
  write('Введите дату последнего техосмотра  ( день месяц год ):');
  readln(st.dn, st.ms, st.gd );
end;
 
procedure addFile(var f: tfcar; st: tcar);
begin
  reset(f);
  seek(f, filesize(f));
  write(f, st);
  close(f);
end;
 
procedure delete(var f: tfcar; n: integer);
var
  st: tcar;
begin
  reset(f);
  if n <> filesize(f) - 1 then begin
    seek(f, filesize(f) - 1);
    read(f, st);
    seek(f, n);
    write(f, st);
  end;
  seek(f, filesize(f) - 1);
  truncate(f);
  close(f);
end;
 
function Data(var f1, f2: tfcar): boolean;
var
  st: tcar;
  dr: myDateRec;
begin
  writeln('Введите сегодняшнюю дату ( день месяц год ): ');
  readln(dr.dn, dr.ms, dr.gd);
  
  reset(f1); rewrite(f2);
  while not eof(f1) do
  begin
    read(f1, st);
    if (st.gd = dr.gd) or ((st.gd < dr.gd) and (st.ms > dr.ms))
         or ((st.gd < dr.gd) and (st.ms = dr.ms) and (st.dn > dr.dn))
              then
      write(f2, st);
  end;
  close(f1); close(f2);
end;
 
procedure ViewFileTxt(var f: text);
var
  s: string;
begin
  reset(f);
  while not eof(f) do
  begin
    readln(f, s);
    writeln(s);
  end;
  close(f);
end;
 
procedure FileToFileTxt(var f1: tfCar; var f2: text; c: integer);
var
  st: tCar;
begin
  reset(f1); rewrite(f2);
  writeln(f2, 'Владельцы автомобилей, величина пробега которых превышает заданную величину:', c);
  while not eof(f1) do
  begin
    read(f1, st);
    if st.probeg > c then 
      writeln(f2, st.brand:10, st.nomer:10, st.name:10, ' ',st.probeg:5);
  end;
  close(f1); close(f2);
end;
 
procedure ViewFileRec(var f: tfCar);
var
  st: tcar;
  i: integer;
begin
  reset(f);
  writeln('Марка':10, 'Номер':10, 'Имя':10, 'Пробег':10, 'Дата техосмотра':20);
  writeln('-----------------------------------------------------------------');
  while not eof(f) do
  begin
    read(f, st);
    writeln(st.brand:10, st.nomer:10, st.name:10, st.probeg:10, st.dn:6, '.', st.ms:1, '.', st.gd:1);
  end;
  writeln('-----------------------------------------------------------------');  
  close(f);
end;
 
var
  f1, f2: tfCar;
  f3: text;
  fn1, fn2, fn3: string;
  c: integer;
  m1, m2: integer;
  st: tCar;
  n: integer;
 
begin
  repeat
    clrscr;
    writeln('Выберите действие:');
    writeln('1-Задание');
    writeln('2-Создание файла БД');
    writeln('3-Работа с файлом БД');
    writeln('4-просмотр файла БД');
    writeln('5-Владельцы авто, которые прошли техосмотр вовремя');
    writeln('6-Отчёт в текстовый файл с превышенным пробегом');
    writeln('7-Просмотр ТФ');
    writeln('8-Удаление файла');
    writeln('0-выход');
    write('Ваш выбор: ');
    readln(m1);
    case m1 of
      1:
        begin// Задание
          Task();
        end;
      2:
        begin// Создание ФЗ
          write('Введите имя файла БД: ');
          readln(fn1);
          if not FileExists(fn1) then begin
            assign(f1, fn1);
            rewrite(f1); close(f1);
          end
          else begin 
            writeln('Файл с таким именем существует.');
            readln;
          end;  
        end;
      3:
        begin// Работа с файлом
          write('Введите имя файла БД: ');
          readln(fn1);
          if FileExists(fn1) then begin
            assign(f1, fn1);
            repeat
              clrscr;
              ViewFileRec(f1);
              writeln('Меню работы с файлом:');
              writeln('1-добавить запись');
              writeln('2-удалить запись');
              writeln('3-редактировать запись');
              writeln('0-выход');
              
              write('Ваш выбор: ');
              readln(m2);
              case m2 of
                1:
                  begin// Добавление ЗП
                    InputRec(st);
                    AddFile(f1, st);
                  end;
                2:
                  begin// Удаление ЗП
                    writeln('Введите номер записи');
                    readln(n);
                    dec(n);
                    delete(f1, n);
                  end;
                3:
                  begin// Редактирование ЗП
                    readln(n);
                    dec(n);
                    delete(f1, n);
                    inputRec(st);
                    addFile(f1, st);
                  end;
              end;
            until m2 = 0;
          end
          else begin writeln('Файл не существует'); ReadLn end          
        end;
 
       4: // просмотр файла с записями
        begin
          write('Введите имя файла БД для просмотра: ');          
          readln(fn1);
          if fileexists(fn1) then begin
              assign(f1, fn1);
              clrscr;
              ViewFileRec(f1);
              WriteLn; Write('Нажмите ENTER для возврата в меню');         
              ReadLn;
          end
          else begin writeln('Файл не существует'); ReadLn end
        end;
 
      5:
        begin// вывести в отдельный файл записи,кто вовремя прошёл техосмотр
          write('Введите имя файла БД: ');
          readln(fn1);
          if fileexists(fn1) then begin
            write('Введите имя результирующего файла БД: ');
            readln(fn2);
            assign(f1, fn1);
            assign(f2, fn2);
            Data(f1, f2);
          end
          else begin writeln('Файл не существует'); ReadLn end
        end;
      
      
      6:
        begin
          write('Введите имя исходного файла: ');          
          readln(fn1);
          if fileexists(fn1) then begin
            assign(f1, fn1);
            write('Введите имя результирующего файла: ');
            readln(fn3);
            assign(f3, fn3);
            writeln('Введите пробег автомобиля');
            readln(c);
            FileToFileTxt(f1, f3, c);
          end
          else begin writeln('Файл не существует'); ReadLn end
        end;
 
      7:
        begin
          write('Введите имя текстового файла для просмотра: ');
          readln(fn3);
          if FileExists(fn3) then begin
            assign(f3, fn3);
            clrscr;
            ViewFileTxt(f3);
            readln;
          end
          else begin writeln('Файл не существует'); ReadLn end
        end;             
 
      8:
        begin// Удаление файла
          write('Введите имя файла для удаления: ');
          readln(fn3);
          if FileExists(fn3) then begin
            assign(f3, fn3);
            Erase(f3);
          end
          else begin writeln('Файл не существует'); ReadLn end          
        end;
    end;
  until m1 = 0;
end.
Добавлено через 7 минут
да. просматривая и исправляя твой код я заметил,
что тебе надо подучить/подтянуть, какие пробелы в знаниях у тебя есть.

1) ты не знаешь, чем отличаются формальные параметры в процедурах/функциях от фактических.
2) похоже, что ты не знаешь, чем параметры функции/процедуры отличаются от локальных переменных
(ты передаёшь переменную st - которую передавать не нужно - а нужно объявить локальную переменную и с ней работать)
3) чем отличаются Write от WriteLn (ну и попутно можешь узнать, чем отличаются Read от ReadLn
4) что ReadLn может вводить несколько переменных (см. пример в коде)
5) что сегодняшнюю дату можно легко получить стандартными функциями и не заставлять её вводить пользователя

ну и последнее.
удобнее задавать имя БД один раз. хранить его в глобальной переменной и не заставлять вводить каждый раз при каждом выборе действия из меню.
это просто для пользователя удобнее. Да и тебе кода меньше писать.
1
0 / 0 / 0
Регистрация: 27.09.2019
Сообщений: 21
11.12.2019, 18:24  [ТС]
mr-Crocodile, большое спасибо за помощь)0)0)
и да, насчет моих знаний, 1, 2 и 5 пункты я действительно не знаю
0
 Аватар для mr-Crocodile
3053 / 1672 / 657
Регистрация: 19.03.2019
Сообщений: 5,380
12.12.2019, 09:58
dn1na, пожалуйста.

Цитата Сообщение от dn1na Посмотреть сообщение
и да, насчет моих знаний, 1, 2 и 5 пункты я действительно не знаю
ну так бери любую книжку или уроки/статьи и читай. Там всё очень просто, но нужно понимать.
будут вопросы - можешь задавать.

да, 5-й пункт - это вообще простота простейшая:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
Uses System;
 
var d1: DateTime; // Объект для хранения даты и времени
 
begin
  // Получение текущей даты - вызов статического метода
  d1 := DateTime.Now;
  
  Writeln('сегодня: ',d1);
  
  WriteLn('Год: ',d1.Year,' месяц: ',d1.Month,' день ',d1.Day);
  
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.12.2019, 09:58
Помогаю со студенческими работами здесь

В службе социального обеспечения (СОБЕС) имеется список пенсионеров. О каждом пенсионере содержатся сведения:
В службе социального обеспечения (СОБЕС) имеется список пенсионеров. О каждом пенсионере содержатся сведения: фамилия, имя, отчество, адрес...

Файл содержит сведения об автомобилях: марка, год выпуска, фамилия владельца и номер. Выведите сведения об автомобилях задаваемой марки и определите их средний возраст. Среди всех автомобилей найдите
Файл содержит сведения об автомобилях: марка, год выпуска, фамилия владельца и номер. Выведите сведения об автомобилях задаваемой марки и...

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

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Сведения об автомобилях
помогите решить задачу... Пожалуйста... Сведения об автомобилях: - марка; - государство производитель; - год выпуска; - цена. ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru