Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Pascal, задача (http://www.tehnari.ru/f43/t92949/)

MAXI 09.12.2013 00:16

Pascal, задача
 
Сведения о деталях, хранящихся на складе, содержат следующие данные: название, кол-во, стоимость одной детали. Вычислить, какие детали имеются в наибольшем кол-ве на складе.

Код:

Program Detali;
Type
 detal=record
          nazvanie:string;
          kolichestvo:integer;
          stoimost:integer;
          end;
Var
 B:array [1..100] of detal;
 i:integer;
 max:integer;
Begin
 for i:=1 to 100 do
 with B[i] do
  Begin
  writeln('vvedite nazvanie');
  readln(nazvanie);
  writeln('vvedite kolichestvo');
  readln(kolichestvo);
  writeln('vvedite stoimost');
  readln(stoimost);
  end;
 max:=0;
 for i:=1 to 100 do
 with B[i] do
 If B[i] > max then max:=i
 writeln(max);
end.


MAXI 09.12.2013 00:22

Помогите с задачей, пожалуйста. В чем ошибка?

Vladimir_S 09.12.2013 09:33

Цитата:

Сообщение от MAXI (Сообщение 978637)
Помогите с задачей, пожалуйста. В чем ошибка?

Здесь:
у Вас
Код:

If B[i] > max then max:=i
а надо
Код:

If kolichestvo > max then max:=kolichestvo;
И даже не одна ошибка, а целых три:
1. Вместо имени поля записи ("kolichestvo") поставлено имя записи ("B[i]").
2. Переменной max следует присваивать количество деталей, а не значение переменной цикла.
3. Отсутствует разделитель ; в конце строки.

Но это еще не всё. Для того, чтобы программа решала поставленную задачу, там следует ко-что изменить. Прежде всего: Вы не устанете вводить с клавиатуры данные по 100 видам деталей? Нет? Тогда - в добрый путь! Но я бы всё же ограничил номенклатурный перечень. Ниже дан исправленный вариант, исправления выделены красным:
Код:

Program Detali;
Type
 detal=record
          nazvanie:string;
          kolichestvo:integer;
          stoimost:integer;
          end;
Var
 B:array [1..100] of detal;
 i,Imax,Nnom:integer;
 max:integer;
Begin
 write('Kolichestvo vidov detaley: ');
 readln(Nnom);

 for i:=1 to Nnom do
 with B[i] do
  Begin
  writeln('vvedite nazvanie');
  readln(nazvanie);
  writeln('vvedite kolichestvo');
  readln(kolichestvo);
  writeln('vvedite stoimost');
  readln(stoimost);
  end;
 max:=0;
 for i:=1 to Nnom do
  with B[i] do
  If kolichestvo > max then
    begin
    max:=kolichestvo;
    Imax:=i;
    end;
 writeln('Max:');
 with B[Imax] do
  begin
  writeln(nazvanie);
  writeln(kolichestvo);
  writeln(stoimost);
  end;

end.


MAXI 09.12.2013 22:51

Спасибо за помощь и ответ!


Часовой пояс GMT +4, время: 14:54.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.