Помощь - Поиск - Пользователи - Календарь
Полная версия: Массив записей
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
swe-4a
Дан массив записей, содержащий сведения о деталях на складе: номер детали, название детали, стоимость детали, план выпуска, дата выпуска (год), признак прохождения ОТК. Подсчитать стоимость деталей 2008 года выпуска.
Program Examlpe3;

type Tsklad = record
nd : integer; // Номер детали
im : string; // имя детали
c : integer; // стоимость детали
k : integer; // план выпуска
g : integer; // год выпуска
otk : integer; // отк
end;
var sklad: array[1..5] of integer;
i,n,s:integer; // s- сумма деталей

begin
write('Введите кол-во ltnfktq n,n<5: '); Readln(n);
//Ввод данных
for i:=1 to n do
begin
writeln('sklad ',i);
write('Номер детали : '); readln(sklad[i]. nd);
write('имя детали : '); readln(sklad[i]. im );
write('стоимость детали : '); readln(sklad[i]. c );
write('план выпуска : '); readln(sklad[i]. k );
write('год выпуска : '); readln(sklad[i]. g );
write('отк : '); readln(sklad[i]. otk);
writeln;
end;
for i:=1 to n do
with sklad[i] do begin
if (g = '2008') then begin
s:=0;
s:=c*k;
writeln(' = ',s:7:2);
end;
readln;
end;
end.


компилятор выдает не объявлен nd не объявлен в типе integer!!!!!! ПОМОГИТЕ!!!!!!

Теги используй, без них программа нечитабельная...
volvo
Правильно делает. Массив должен быть не var sklad: array[1..5] of integer; , а
var sklad: array[1..5] of TSklad;


P.S. Напрасно ты сравниваешь g со строкой. Это целое число, апострофы - лишние...
swe-4a
Program Examlpe3;

type Tsklad = record
nd : integer; // Номер детали
im : string; // имя детали
c : integer; // стоимость детали
k : integer; // план выпуска
g : integer; // год выпуска
otk : integer; // отк
end;
var sklad: array[1..5] of TSklad;
i,n,s:integer; // s- сумма деталей

begin
write('Введите кол-во деталей n,n<5: '); Readln(n);
//Ввод данных
for i:=1 to n do
begin
writeln('sklad ',i);
write('Номер детали : '); readln(sklad[i]. nd);
write('имя детали : '); readln(sklad[i]. im );
write('стоимость детали : '); readln(sklad[i]. c );
write('план выпуска : '); readln(sklad[i]. k );
write('год выпуска : '); readln(sklad[i]. g );
write('отк : '); readln(sklad[i]. otk);
writeln;
end;
for i:=1 to n do
with sklad[i] do begin
if (g =2008) then begin
s:=0;
s:=c*k;
writeln(' = ',s);
end;
readln;
end;
end.

Исправила спасибо теперь работает, но выдает только одной детали за 2008 год. даже если все детали забить 2008. Надо как-то прописать что бы он суммировал результаты, но как?
Евгений
Сам себе удивляюсь, я уже ответы даю lol.gif .
Вообщем как то так:
s:=0;
for i:=1 to n do
begin
if sklad[i].g=2008 then
s:=s+sklad[i].c;
end;
writeln(' = ',s);
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.