Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2008, 19:33   #1
GUnt
 
Регистрация: 27.12.2008
Сообщений: 4
По умолчанию Пожалуйста помогите найти ошибку в коде решения задачи на записи

дана задача:
В аптечном складе хранятся лекарства. Сведения о лекарствах содержатся в специальной ведомости: наименование лекарственного препарата; количество; цена; срок хранения (в месяцах). Выяснить, сколько стоит самый дорогой и самый дешевый препарат: сколько препаратов хранится на складе; какой препарат имеет срок хранения более 3 месяцев; сколько стоят все препараты, хранящиеся на складе.
мой код:
Program SKLAD_LEKARSTV;
type sklad = record
name: string;
kol: integer;
cena:integer;
srok:integer;
end;
const n=3;
var a: array [1..100] of sklad;
s,k, i,y,max,min:integer;
begin
for i:=1 to n do begin
writeln('imya tovara?');
readln(a[i].name);
writeln('kolichestvo na sklade');
readln(a[i].kol);
writeln('tsena tovara?');
readln(a[i].cena);
writeln('srok godnosti tovara?');
readln(a[i].srok);
end;
for i:=1 to n do begin
k:=k+1;
write(k,' ');
writeln('tovar',' ',a[i].name,' ','kolichestvo',' ',a[i].kol,' ','tsena',' ',a[i].cena,' ','srok godnosti',' ',a[i].srok);
end;

for i:=1 to n do begin
y:=3;
if a[i].srok>y then
writeln ('nujniy srok godnosti' , a[i].name ,'kolichestvo', a[i].kol ,'tsena', a[i].cena ,'srok godnosti', a[i].srok);
end;
s:=0;
for i:=1 to n do begin
s:=s+a[i].kol;
end;
writeln ('summa lekarstv na sklade', s);

max:=a[1].cena;
for i:=2 to n do
if a[i].cena>max then

max:=a[i].cena;

writeln ('tovar s maximalnoi tsenoi', a[i].name ,'kolichestvo', a[i].kol ,'tsena', a[i].cena ,'srok godnosti', a[i].srok );

min:=a[1].cena;
for i:=2 to n do
if a[i].cena<min then

min:=a[i].cena;
writeln ('tovar s minimalnoi tsenoi', a[i].name ,'kolichestvo', a[i].kol ,'tsena', a[i].cena ,'srok godnosti', a[i].srok );

readln;
end.

проблема в том что не правильно находятся товары с минимальной и максимальной ценой.Заранее спасибо.
GUnt вне форума Ответить с цитированием
Старый 27.12.2008, 20:41   #2
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

держи:
Код:
Program SKLAD_LEKARSTV;
type sklad = record
 name: string;
 kol: integer;
 cena:integer;
 srok:integer;
end;
const n=3;
var a: array [1..100] of sklad;
s,k, i,y,max,min,nomer:integer;
 begin
   for i:=1 to n do begin
     writeln('imya tovara?');
     readln(a[i].name);
     writeln('kolichestvo na sklade');
     readln(a[i].kol);
     writeln('tsena tovara?');
     readln(a[i].cena);
     writeln('srok godnosti tovara?');
     readln(a[i].srok);
 end;
    for i:=1 to n do begin
      k:=k+1;
      write(k,' ');
      writeln('tovar ',' ',a[i].name,' ','kolichestvo',' ',a[i].kol,' ','tsena',' ',a[i].cena,' ',
      'srok godnosti',' ',a[i].srok);
    end;

   for i:=1 to n do begin
     y:=3;
      if a[i].srok>y then
        writeln ('nujniy srok godnosti ' , a[i].name ,'kolichestvo ', a[i].kol ,'tsena ', a[i].cena ,'srok godnosti ', a[i].srok);
     end;

  s:=0;
  for i:=1 to n do begin
   s:=s+a[i].kol;
  end;
  writeln ('summa lekarstv na sklade ', s);

  nomer:=1;
  max:=a[1].cena;
   for i:=2 to n do
    if a[i].cena>max then
      begin
       max:=a[i].cena;
       nomer:=i;
      end;
  writeln ('tovar s maximalnoi tsenoi ', a[nomer].name ,' kolichestvo ', a[nomer].kol ,' tsena ', a[nomer].cena
  ,' srok godnosti ', a[nomer].srok );

  nomer:=1;
  min:=a[1].cena;
   for i:=2 to n do
    if a[i].cena<min then
     begin
      min:=a[i].cena;
      nomer:=i;
     end;
 writeln ('tovar s minimalnoi tsenoi ', a[nomer].name ,' kolichestvo ', a[nomer].kol
 ,' tsena ', a[nomer].cena ,' srok godnosti ', a[nomer].srok );

readln;
end.
Викдон вне форума Ответить с цитированием
Старый 27.12.2008, 20:42   #3
Викдон
Форумчанин
 
Аватар для Викдон
 
Регистрация: 11.11.2008
Сообщений: 161
По умолчанию

ОШИБКА-writeln ('tovar s maximalnoi tsenoi', a[i].name ,'kolichestvo', a[i].kol ,'tsena', a[i].cena ,'srok godnosti', a[i].srok ); - здесь просто выводится последний элемент массива))
Викдон вне форума Ответить с цитированием
Старый 27.12.2008, 21:09   #4
GUnt
 
Регистрация: 27.12.2008
Сообщений: 4
Радость

спасибо большое Викдон
GUnt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в коде! alex2008ean Паскаль, Turbo Pascal, PascalABC.NET 1 27.12.2008 18:31
Помогите найти ошибку в коде, пожалуйста Gobl1n Паскаль, Turbo Pascal, PascalABC.NET 3 30.11.2008 17:44
Помогите найти ошибку в коде C++ Жека:) Помощь студентам 15 29.10.2008 11:32
помогите найти ошибку в коде плиз Айат Помощь студентам 2 01.10.2008 17:43
помогите найти ошибку в коде Joker88 Помощь студентам 1 04.03.2008 12:43