• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Pascal, задача

  • Автор темы Автор темы MAXI
  • Дата начала Дата начала

MAXI

Новые
Регистрация
22 Авг 2013
Сообщения
22
Реакции
0
Баллы
0
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.
 
Помогите с задачей, пожалуйста. В чем ошибка?
 
Помогите с задачей, пожалуйста. В чем ошибка?
Здесь:
у Вас
Код:
If B[i] > max then max:=i
а надо
Код:
If kolichestvo > max then max:=kolichestvo;
И даже не одна ошибка, а целых три:
1. Вместо имени поля записи ("kolichestvo") поставлено имя записи ("B").
2. Переменной max следует присваивать количество деталей, а не значение переменной цикла.
3. Отсутствует разделитель ; в конце строки.

Но это еще не всё. Для того, чтобы программа решала поставленную задачу, там следует ко-что изменить. Прежде всего: Вы не устанете вводить с клавиатуры данные по 100 видам деталей? Нет? Тогда - в добрый путь! Но я бы всё же ограничил номенклатурный перечень. Ниже дан исправленный вариант, исправления выделены красным:
Код:
Program Detali;
Type
 detal=record
           nazvanie:string;
           kolichestvo:integer;
           stoimost:integer;
          end;
Var
 B:array [1..100] of detal;
 i[COLOR=Red][B],Imax,Nnom[/B][/COLOR]:integer;
 max:integer;
Begin
 [COLOR=Red][B]write('Kolichestvo vidov detaley: ');
 readln(Nnom);[/B][/COLOR]
 for i:=1 to [COLOR=Red][B]Nnom[/B][/COLOR] 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 [COLOR=Red][B]Nnom[/B][/COLOR] do
  with B[i] do
   [COLOR=Red][B]If kolichestvo > max then 
    begin
     max:=kolichestvo;
     Imax:=i;
    end;
 writeln('Max:');
 with B[Imax] do
  begin
   writeln(nazvanie);
   writeln(kolichestvo);
   writeln(stoimost);
  end;[/B][/COLOR]
end.
 
Спасибо за помощь и ответ!
 
Назад
Сверху