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

Что не так с кодом. не запускается в PascalABC NET

29.01.2024, 13:47. Показов 764. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, которая создает файл, содержащий сведения о поставках на оптовый склад: № накладной, код товара, наименование товара, поставщик, дата поступления, срок хранения. Ввод данных о поступившем товаре.
Упорядочить данные по наименованию товара в лексикографическом порядке сортировкой простыми вставками.
Вывести список поставщиков по заданному наименованию товара.
Вывести информацию по номеру накладной.
Вывести список товаров, у которых срок хранения близится к концу.
Удалить товар по номеру накладной и коду товара.
Данные хранятся в типизированном файле. Список товаров, у которых срок хранения близится к концу, вывести в текстовый файл.

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
program WholesaleWarehouse;
 
 
 
type
  TDelivery = record
    InvoiceNumber: Integer;
    ProductCode: string;
    ProductName: string;
    Supplier: string;
   
    StoragePeriod: Integer;
  end;
 
var
  WarehouseFile: file of TDelivery;
  Delivery: TDelivery;
  TempDelivery: array of TDelivery;
  TempFileName: string;
  ProductNameToSearch: string;
  InvoiceNumberToSearch: Integer;
  ExpiryThreshold: TDateTime;
  ExpiringProductsFile: TextFile;
  RemoveInvoiceNumber: Integer;
  RemoveProductCode: string;
 
procedure InsertionSort(var Arr: array of TDelivery);
var
  I, J: Integer;
  Temp: TDelivery;
begin
  for I := 1 to High(Arr) do
  begin
    Temp := Arr[I];
    J := I - 1;
    while (J >= 0) and (CompareText(Arr[J].ProductName, Temp.ProductName) > 0) do
    begin
      Arr[J + 1] := Arr[J];
      Dec(J);
    end;
    Arr[J + 1] := Temp;
  end;
end;
 
procedure SearchSuppliersByProductName(const Arr: array of TDelivery; const ProductName: string);
var
  I: Integer;
begin
  Writeln('Список поставщиков для товара "', ProductName, '":');
  for I := 0 to High(Arr) do
  begin
    if CompareText(Arr[I].ProductName, ProductName) = 0 then
      Writeln(Arr[I].Supplier);
  end;
end;
 
procedure PrintDeliveryInfo(const Delivery: TDelivery);
begin
  Writeln('Номер накладной: ', Delivery.InvoiceNumber);
  Writeln('Код товара: ', Delivery.ProductCode);
  Writeln('Наименование товара: ', Delivery.ProductName);
  Writeln('Поставщик: ', Delivery.Supplier);
  Writeln('Дата поступления: ', DateToStr(Delivery.DeliveryDate));
  Writeln('Срок хранения: ', Delivery.StoragePeriod, ' дней');
end;
 
procedure SearchExpiringProducts(const Arr: array of TDelivery; const ExpiryThreshold: TDateTime);
var
  I: Integer;
  ExpiringProductsCount: Integer;
begin
  ExpiringProductsCount := 0;
  AssignFile(ExpiringProductsFile, 'expiring_products.txt');
  Rewrite(ExpiringProductsFile);
  
  Writeln(ExpiringProductsFile, 'Список товаров, у которых срок хранения близится к концу:');
  
  for I := 0 to High(Arr) do
  begin
    if Arr[I].DeliveryDate + Arr[I].StoragePeriod >= ExpiryThreshold then
    begin
      Inc(ExpiringProductsCount);
      Writeln(ExpiringProductsFile, '---');
      Writeln(ExpiringProductsFile, 'Товар ', ExpiringProductsCount, ':');
      PrintDeliveryInfo(Arr[I]);
    end;
  end;
  
  CloseFile(ExpiringProductsFile);
  
  if ExpiringProductsCount = 0 then
    Writeln('Нет товаров, у которых срок хранения близится к концу.')
  else
    Writeln('Список товаров, у которых срок хранения близится к концу, сохранен в файле "expiring_products.txt".');
end;
 
procedure RemoveDelivery(var Arr: array of TDelivery; const InvoiceNumber: Integer; const ProductCode: string);
var
  I, J: Integer;
begin
  for I := 0 to High(Arr) do
  begin
    if (Arr[I].InvoiceNumber = InvoiceNumber) and (CompareText(Arr[I].ProductCode, ProductCode) = 0) then
    begin
      for J := I to High(Arr) - 1 do
        Arr[J] := Arr[J + 1];
      SetLength(Arr, Length(Arr) - 1);
      Exit;
    end;
  end;
end;
 
begin
  AssignFile(WarehouseFile, 'warehouse.dat');
  Rewrite(WarehouseFile);
 
  // Ввод данных о поступившем товаре
  repeat
    Write('Введите номер накладной (0 для выхода): ');
    Readln(Delivery.InvoiceNumber);
    if Delivery.InvoiceNumber <> 0 then
    begin
      Write('Введите код товара: ');
      Readln(Delivery.ProductCode);
      Write('Введите наименование товара: ');
      Readln(Delivery.ProductName);
      Write('Введите поставщика: ');
      Readln(Delivery.Supplier);
      Write('Введите дату поступления (в формате ДД.ММ.ГГГГ): ');
      Readln(Delivery.DeliveryDate);
      Write('Введите срок хранения (в днях): ');
      Readln(Delivery.StoragePeriod);
      WriteLn(WarehouseFile, Delivery);
    end;
  until Delivery.InvoiceNumber = 0;
 
  CloseFile(WarehouseFile);
 
  Reset(WarehouseFile);
 
  // Упорядочить данные по наименованию товара в лексикографическом порядке сортировкой простыми вставками
  SetLength(TempDelivery, FileSize(WarehouseFile));
  for I := 0 to High(TempDelivery) do
    Read(WarehouseFile, TempDelivery[I]);
  CloseFile(WarehouseFile);
 
  InsertionSort(TempDelivery);
 
  Rewrite(WarehouseFile);
  for I := 0 to High(TempDelivery) do
    Write(WarehouseFile, TempDelivery[I]);
  CloseFile(WarehouseFile);
 
  // Вывод списка поставщиков по заданному наименованию товара
  Write('Введите наименование товара для поиска поставщиков: ');
  Readln(ProductNameToSearch);
  SearchSuppliersByProductName(TempDelivery, ProductNameToSearch);
 
  // Вывод информации по номеру накладной
  Write('Введите номер накладной для поиска информации: ');
  Readln(InvoiceNumberToSearch);
  for I := 0 to High(TempDelivery) do
  begin
    if TempDelivery[I].InvoiceNumber = InvoiceNumberToSearch then
    begin
      Writeln('Информация по номеру накладной ', InvoiceNumberToSearch, ':');
      PrintDeliveryInfo(TempDelivery[I]);
      Break;
    end;
  end;
 
  // Вывод списка товаров, у которых срок хранения близится к концу
  Write('Введите количество дней до истечения срока хранения: ');
  Readln(Delivery.StoragePeriod);
  ExpiryThreshold := Date + Delivery.StoragePeriod;
  SearchExpiringProducts(TempDelivery, ExpiryThreshold);
 
  // Удаление товара по номеру накладной и коду товара
  Write('Введите номер накладной для удаления: ');
  Readln(RemoveInvoiceNumber);
  Write('Введите код товара для удаления: ');
  Readln(RemoveProductCode);
  RemoveDelivery(TempDelivery, RemoveInvoiceNumber, RemoveProductCode);
 
  Rewrite(WarehouseFile);
  for I := 0 to High(TempDelivery) do
    Write(WarehouseFile, TempDelivery[I]);
  CloseFile(WarehouseFile);
 
  Writeln('Товар с номером накладной ', RemoveInvoiceNumber, ' и кодом товара ', RemoveProductCode, ' успешно удален.');
 
  Readln;
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.01.2024, 13:47
Ответы с готовыми решениями:

Ребят подскажите что не так с кодом, не запускается
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;ctime&gt; using namespace std; //...

нужен кодом программ PascalABC.NET. если не сложно )
1. Имеется файл, в котором содержится размерность массива и его элементы. Вычислить: A. количество элементов массива, меньших С; ...

Не запускается PascalABC.NET
Доброго времени суток. Не запускается PascalABC.NET. Выдает эту ошибку. Пробовал переустанавливать. Не помогло. Система Windows 10 64-bit....

5
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
29.01.2024, 14:23
Вам компилятор написал, что именно не так: TDelivery не может быть элементом типизированного файла.
Отвечу на незаданный вопрос "почему не может?" (ведь чтобы задать вопрос обычно нужно знать более половины ответа). Поскольку TDelivery содержит поля ссылочных типов, в данном случае String. Замените полям String тип на короткие строки (строки с явным указанием длины -- String[сколько_надо]).
2
 Аватар для agvego5
45 / 37 / 9
Регистрация: 18.09.2023
Сообщений: 254
29.01.2024, 20:03
Цитата Сообщение от andreikaryukin Посмотреть сообщение
ExpiryThreshold: TDateTime;
1) .pas(22) : Неизвестное имя 'TDateTime'

2) ExpiringProductsCount: Integer;
перед поставить Var

3) : Неизвестное имя 'CompareText'


4): Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
29.01.2024, 20:19
Цитата Сообщение от agvego5 Посмотреть сообщение
ExpiringProductsCount: Integer;
перед поставить Var
На кой ляд еще один var?

Добавлено через 4 минуты
.pas(22) : Неизвестное имя 'TDateTime'
DateTime кличут его тут.
Параметр цикла for в PascalABC.NET должен описываться в заголовке цикла
перетопчется.

Добавлено через 1 минуту
.pas(36) : Неизвестное имя 'CompareText'
CompareStr кличут его тут.
1
 Аватар для agvego5
45 / 37 / 9
Регистрация: 18.09.2023
Сообщений: 254
29.01.2024, 20:30
Цитата Сообщение от bormant Посмотреть сообщение
На кой ляд еще один var?
ой ... это я случайно удалил Var
подредактируйте

а DateToStr ?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
29.01.2024, 21:54
Цитата Сообщение от agvego5 Посмотреть сообщение
а DateToStr ?
а DateToStr не к чему применять, в TDelivery поле DeliveryDate: DateTime отсутствует

Добавлено через 3 минуты
Цитата Сообщение от andreikaryukin Посмотреть сообщение
Что не так с кодом. не запускается в PascalABC NET
С точки зрения PascalABC.NET код кривой как турецкая сабля...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2024, 21:54
Помогаю со студенческими работами здесь

Не запускается среда PascalABC.NET
PascalABC.NET проблема запуском

Не могу понять что не так с кодом (сжатие кодом Хэмминга)
Написали код по заданию &quot;Считать картинку bmp по пикселям: R 8 бит, G 8 бит, B 8 бит. Старший бит в каждом байте оставить без...

Не запускается PascalABC .net framework 4.0 на Windows CHIP
Не запускается PascalABC .net framework 4.0 на Windows CHIP - говорит: &quot;для работы нужен Framework 4.0!&quot;, но у меня ведь и так ОН...

Что не так с кодом? ( пытаюсь понять, что не так? )
Есть исходный код. Hook, работает хорошо, но есть минус огромный - перестаёт писать в лог, при открытии программы\игры Фуллскрином. т.е...

Что не так с кодом? не срабатывает код, может так вообще не пишется просто хочу узнать мнения опытных
&lt;div class=&quot;slider&quot;&gt; &lt;img src=&quot;g1.jpg&quot; class=&quot;g5&quot;&gt; &lt;img src=&quot;g2.jpg&quot; class=&quot;g55&quot;&gt; &lt;img src=&quot;g3.jpg&quot; class=&quot;g555&quot;&gt; &lt;img...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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