Другие языки программирования и технологии

Помогите с программой на Паскаль! Деталь автомобиля описывается инвентарным номером (положительное целое число), весом..

Деталь автомобиля описывается инвентарным номером (положительное целое число),
весом (в килограммах), ценой и стоимостью (в рублях), датой начала производства (год,
месяц, день), статусом (имеет или не имеет знак качества) и объемом производства (в
штуках за смену). В заданной последовательности сведений о деталях найти
инвентарные номера деталей с минимальным весом среди деталей без знака качества. Вывести на экран инвентарный номер, объем производства, цену и стоимость деталей, выпускаемых с 1977 года.

Пыталась сделать что-то сама, но у меня не получается, я не знаю с какой стороны подойти..

type Tdate = record
y:integer;
m:1..12;
d:1..31;
end;
type Tdetail = record
Id:integer;
W:integer;
p:integer;
da:Tdate;
St:boolean;
V:integer;
end;
s:array[1..100] of Tdetail;
Buf_d:Tdetail;
i,n:integer;
Function Ves(v1,v2:real);
begin

if v2.st<v1.st then s:=v2
else s:=v1;

end;
Begin
Для начала нужно задать последовательность деталей.
Их данные можно запросить у пользователя:

Write('Сколько деталей вы хотите описать? ');
ReadLn(num);

for i:=1 to num do
begin
Write('Инвентарный номер: ');
ReadLn(s[i].Id);
Write('…');
{Дальше сообразишь}
end;

Чтобы найти деталь с минимальным весом, будем запоминать ее индекс.
Изначально такая деталь нам неизвестна:

minIndex:=0;

Запускаем цикл:

for i:=1 to num do
begin

В цикле надо прежде всего проверить, есть ли у детали знак качества или нет.
Сравнивать веса нужно только тогда, когда знака нет.

if not s[i].St then {я бы переименовал St в znak}
begin

Если знака нет, то есть два важных варианта:

1) minIndex = 0. Тогда s[i] — первая найденная нами деталь без знака, и можно запомнить ее индекс просто так:

if minIndex = 0 then
minIndex := i

2) minIndex <> 0. Тогда minIndex указывает на деталь без знака, которую мы нашли раньше. В этом случае надо сравнить веса и записать в minIndex индекс более легкой из двух деталей (если i-тая деталь легче, то пишем i, иначе ничего писать не надо):

else if s[i].V < s[minIndex].V then
minIndex := i;
end;
end;

Теперь надо вывести инвентарный номер детали с индексом minIndex (если только minIndex > 0, а то может и не быть деталей без знака качества, и тогда после цикла получим minIndex = 0).

Если может быть несколько деталей с минимальным весом — бежим еще одним циклом и проверяем веса: если вес i-той детали равен весу minIndex-ной детали, то выводим инв. номер i-той детали.

Дальше надо вывести данные о деталях, выпускаемых с 1977 года.
Это еще легче:
• перебираем циклом все детали
• сравниваем год i-той детали с 1977
• если год >= 1977, то выводим данные об i-той детали.

Попробуй написать этот кусок самостоятельно.
Успехов!
Евгений Туманов
Евгений Туманов
78 264
Лучший ответ
ты на паскальке не напишешь.
Саша Петренко
Саша Петренко
4 887