Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление ошибок подсчета итогов в программе на Pascal: вертикали и горизонтали в таблицах продукции

Delphi , Синтаксис , Массивы

Объяснение проблемы и её решение в программе на Pascal

Рассмотрим проблему, с которой столкнулся разработчик в программе на Pascal. Суть проблемы заключается в том, что при подсчете итогов в двумерном массиве, который представляет собой таблицу продукции, итоговые значения по вертикали и горизонтали вычисляются некорректно. В частности, по вертикали (по машинам) итог всегда показывает 10 вместо 0, а при добавлении единицы к значению, итог становится 9 вместо 1. Проблема также заключается в отсутствии подсчета итогов по горизонтали (по продуктам).

Программа принимает от пользователя информацию о продуктах, произведенных на фабрике, и разделяет её на две таблицы: для хороших и плохих продуктов. Каждая таблица представляет количество каждого из 10 продуктов, произведенных каждой из 7 машин. Необходимо вывести итоги по вертикали (общее количество продуктов, произведенных каждой машиной) и по горизонтали (общее количество каждого продукта по всем машинам).

Ошибка в исходном коде

В исходном коде процедура ShowTable содержит ошибку в логике подсчета итогов. Переменная total не обновляется корректно, так как в ней не суммируются значения из массива myTable. Вместо этого, total инициализируется значением 10 и уменьшается при каждом добавлении единицы.

Исправление ошибки

Для исправления ошибки необходимо изменить логику подсчета итогов. В процедуре ShowTable следует инициализировать массив для хранения итогов по горизонтали (totaly) и переменную для хранения итогов по вертикали (totalx). Подсчет итогов должен производиться по фактическим значениям элементов массива myTable, а не по условию равенства элемента 1.

Пример исправленного кода

procedure ShowTable(pQuality: integer; pTitle: string);
var
  totalx, total: integer;
  totaly: array[0..9] of integer;
begin
  // инициализация массива totaly
  for j:= 0 to 9 do
    totaly[j] := 0;

  // вывод заголовка
  writeln(pTitle);
  writeln('  0   1   2   3   4   5   6   7   8   9   T');

  // перебор машин
  for i := 0 to 6 do
  begin
    totalx := 0;
    write(CHR(65+i), ' ');

    for j := 0 to 9 do
    begin
      write(myTable[i,j,pQuality], '   ');

      if myTable[i,j,pQuality] > 0 then
      begin
        totalx := totalx + myTable[i, j, pQuality];
        totaly[j] := totaly[j] + myTable[i, j, pQuality];
      end;

      if j = 9 then
      begin
        write(totalx, ' ');
      end;
    end;

    writeln('');
  end;

  write('T ');
  total := 0;

  for j := 0 to 9 do
  begin
    total := total + totaly[j];
    write(totaly[j], '   ');
  end;
  write(total);
end;

Комментарии пользователя

Пользователь отметил, что после исправления условия в цикле подсчета итогов (if myTable[i,j,pQuality] > 0 then) программа начала работать корректно. Также было отмечено, что комментарии на сайте сложно вставлять, но это не вопрос к коду.

Заключение

В данной статье был рассмотрен пример программы на Pascal, который работает с двумерными массивами для хранения и обработки данных о продукции. Была выявлена и исправлена ошибка в логике подсчета итогов, что позволило корректно выводить итоги по вертикали и горизонтали в таблицах продукции.

Создано по материалам из источника по ссылке.

Проблема в программе на Pascal связана с некорректным подсчетом итогов в двумерном массиве, представляющем таблицу продукции, что приводит к ошибочному отображению итоговых значений по вертикали и горизонтали.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Массивы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 10:33:37/0.0035469532012939/0