IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Массив записей
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Дан массив записей, содержащий сведения о деталях на складе: номер детали, название детали, стоимость детали, план выпуска, дата выпуска (год), признак прохождения ОТК. Подсчитать стоимость деталей 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Правильно делает. Массив должен быть не var sklad: array[1..5] of integer; , а
var sklad: array[1..5] of TSklad;


P.S. Напрасно ты сравниваешь g со строкой. Это целое число, апострофы - лишние...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


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. Надо как-то прописать что бы он суммировал результаты, но как?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Сам себе удивляюсь, я уже ответы даю 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.01.2025 17:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name