Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 09.11.2018
Сообщений: 66

Типизированные файлы

16.12.2018, 18:07. Показов 1098. Ответов 0
Метки нет (Все метки)

Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Студворк — интернет-сервис помощи студентам
Помогите. Не могу выполнить операции, даже их посмотреть, программа запускается даже, если файл *.txt отсутствует. Мне главное исправить 5 пункт, а 3,4 всё равно, можете не смотреть его, только если нужны какие-то данные.
Условие: Написать программу обработки файла типа запись (record), содержащую следующие пункты меню:
1. Создание;
2. Просмотр;
3. Добавление новых данных;
4. Исправление данных;
5. Выполнение требуемых операций;
6. Выход.
Добавить в созданный файл не менее 3-х записей.
Условие программы(5): Список товаров, имеющихся на складе, включает:
* наименование товара;
* количество единиц товара;
* цену единицы товара;
* дату поступления товара на склад.
Вывести в алфавитном порядке список товаров, хранящихся более месяца, стоимость которых превышает 10000 рублей.
Вот код:
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
program zad_5; 
uses crt; 
Type Data=record 
name:string; 
instyear:integer; 
kolchmes:integer; 
tarif:string; // исправлял на integer, но не помогло в if, ошибка неприменимости "<"
End; 
 
var s: Data; 
Spisok:file; 
Name:string; 
a:real; 
b,n,i, count, count1:integer; 
c:char; 
 
begin 
assign(Spisok, 'tovari.txt'); 
repeat 
writeln('Операции: '); 
writeln('1: Создание'); 
writeln('2: Просмотр'); 
writeln('3: Добавление новых данных'); 
writeln('4: Исправление данных'); 
writeln('5: Выполнение требуемых операций'); 
writeln('6: Выход'); 
readln(n); 
case n of 
1: 
begin 
rewrite(Spisok); 
Writeln('Кол-во товара: '); 
Readln(count1); 
For i:=1 to count+count1 do 
Begin 
writeln('Наименование ', i,'-го товара : '); 
readln(s.name); 
writeln('Количество единиц ', i,'-го товара: '); 
readln(s.instyear); 
writeln('Цена единицы ', i,'-го товара: '); 
readln(s.kolchmes); 
writeln('Дата поступления ', i,'-го товара на склад: '); 
readln(s.tarif); 
write(Spisok, s); 
end; 
close(Spisok); 
writeln('Файл создан'); 
end; 
2: 
begin 
reset(Spisok); 
while not eof(Spisok) do 
begin 
read(Spisok, s); 
for i:=1 to count+count1 do 
begin 
writeln('Наименование товара: ', s.name); 
writeln('Количество единиц товара: ', s.instyear); 
writeln('Цена единицы товара: ', s.kolchmes); 
writeln('Дата поставления на : ', s.tarif); 
Writeln; 
end; 
end; 
close(Spisok); 
end; 
3: 
begin 
rewrite(Spisok); 
Writeln('Кол-во новых данных: '); 
Readln(count); 
For i:=count1+1 to count1+count do 
Begin 
writeln('Наименование ', i,'-го товара : '); 
readln(s.name); 
writeln('Количество единиц ', i,'-го товара: '); 
readln(s.instyear); 
writeln('Цена единицы ', i,'-го товара: '); 
readln(s.kolchmes); 
writeln('Дата поступления ', i,'-го товара на склад: '); 
readln(s.tarif); 
write(Spisok, s); 
end; 
close(Spisok); 
writeln('Новые данные добавлены'); 
end; 
4: 
begin 
Reset(Spisok); 
while not Eof(Spisok) do begin 
Read(Spisok,s); 
Seek(Spisok,FilePos(Spisok)); // возврат указателя назад 
Write(Spisok,s); 
end; 
close(Spisok); 
end; 
5: 
begin 
reset(Spisok); 
for i:=1 to count do 
if s.kolchmes>10000 then //and s.tarif>16.12(сегодняшняя дата) или 12(просто месяц), не больше месяца
writeln('Наименование: ',s.name,' Количество единиц: ',s.instyear,'Цена товара: ',s.kolchmes,'Дата поступления: ',s.tarif); 
close(Spisok); 
end; 
 
6: 
begin 
writeln('Программа завершена'); 
end; 
end; 
writeln; 
until n = 6; 
end.
Нужно как можно быстрее её исправить. Не знаю уже, что тут нужно исправлять.

Добавлено через 2 часа 39 минут
Уже не нужно. Нашел решение сам, но код от другой программы. Кому нужно: Для полного списка:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
writeln('Полный список товаров'); 
writeln('-----------------------------------------------------------'); 
writeln('| Название |Количество| Цена |Дата поступления|'); 
writeln('-----------------------------------------------------------'); 
for i:=1 to n do 
with a[i] do 
begin 
write('|',naz:20,'|',kol:6,' |',cen:8:2,'|'); 
if dat.d<10 then 
write('0':7,dat.d,'.0',dat.m,' |') 
else write(dat.d:8,'.',dat.m,' |'); 
writeln; 
end; 
writeln('-----------------------------------------------------------');
Полный код:
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
uses crt;
type data=record
          m,d:integer;
          end;
     tovar=record
           naz:string[20];
           kol:integer;
           cen:real;
           dat:data;
           end;
 
function pr_data(dt:data):boolean;
begin
pr_data:=(dt.m in [1..12])and
         ((dt.m in [1..12])and(dt.d in [1..31]))or
         ((dt.m in [1,3,5,7,8,10,12])and(dt.d in [1..31])) or
         ((dt.m in [4,6,9,11])and(dt.d in [1..30])) or
         ((dt.m=2)and(dt.d in [1..29]))
end;
 
function bolshe(d1,d2:data):boolean;
begin
 
bolshe:=(d1.m-d2.m>1)or((d1.m-d2.m=1)and(d1.d>d2.d))
end;
var a:array[1..50] of tovar;
    n,i,j,k:integer;
    x:tovar;
    d1:data;
    s:string;
begin
ClrScr ;
repeat
write('Введите количество товаров(до 50)= ');
readln(n);
until n in [1..50];
writeln('Введите информацию о товарах');
for i:=1 to n do
 begin
  writeln('Товар ',i);
  with a[i] do
   begin
    write('Название: ');readln(naz);
    repeat
    write('Количество: ');readln(s);
    val(s,kol,k);
    if(k<>0)or(kol<1) then writeln('Введите натуральное число');
    until(k=0)and(kol>0);
    repeat
    write('Цена: ');readln(s);
    val(s,cen,k);
    if (k<>0)or(cen<=0) then writeln('Введите пложительное действительное число');
    until(k=0)and(cen>0);
    repeat
    writeln('Введите день и месяц поступления от 01.01 до 31.12');
    readln(dat.d,dat.m);
    if not pr_data(dat) then writeln('Дата введена неверно, повторите');
    until pr_data(dat);
   end;
  end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i].naz>a[j].naz then
 begin
  x:=a[i];
  a[i]:=a[j];
  a[j]:=x;
 end;
ClrScr ;
// сюда код для полного списка(между ними)
writeln;
writeln('Товары сроком больше 1 месяца или стоимостью больше 10000 рублей');
d1.m:=12; // наша дата: 12 месяц
d1.d:=16; // наша дата: 16 число
k:=0;
writeln('-----------------------------------------------------------');
writeln('|      Название      |Количество|  Цена  |Дата поступления|');
writeln('-----------------------------------------------------------');
for i:=1 to n do
if bolshe(d1,a[i].dat)and(a[i].cen>10000) then
 begin
  k:=1;
  with a[i] do
   begin
    write('|',naz:20,'|',kol:6,'    |',cen:8:2,'|');
    if dat.d<10 then 
    write('0':7,dat.d,'.0',dat.m,'     |')
    else write(dat.d:8,'.',dat.m,'     |');
    writeln;
   end;
 end;
if k=0 then write('Таких товаров нет')
else write('-----------------------------------------------------------');
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2018, 18:07
Ответы с готовыми решениями:

Типизированные файлы
Написать программу обработки файла типа запись (record), содержащую следующие пункты меню: 1. Создание; 2. Просмотр; 3. Добавление...

Типизированные файлы
К заданию сделать по три программы: 1. Должна вводить данные в файл (если это необходимо). 2. Обрабатывать введенные данные по условию...

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.12.2018, 18:07
Помогаю со студенческими работами здесь

Типизированные файлы
Найти произведение чисел из файла, меньших заданного числа b.

Типизированные файлы
Само задание: Ввести файл F1. В файле кратные трем компоненты увеличить на значение максимума этого файла. Файл вывести после...

Типизированные файлы
На диске имеется файл данных STUDENT.DAT. В нем записана информация о студентах в следующем формате: фамилия (строка до 12 символов), имя...

Типизированные файлы
Написать программу обработки файла типа запись (record), содержащую следующие пункты меню: 1. Создание; 2. Просмотр; 3. Добавление...

Списки и типизированные файлы
program lab_journal; //uses System; type journal = record projectName: string; task: string; //DataStart:...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru