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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2020, 19:22   #1
MaidDragon
 
Регистрация: 14.05.2020
Сообщений: 8
Восклицание Не работает код

Код:
program project1;
 
const
  n = 10;
 
type
  Tmas = ^TTmas;
  TTmas = array[1..1] of integer;
  Tmatr = ^TTmatr;
  TTmatr = array[1..1] of Tmas;
var
  a: Tmatr;
  max, min, i, j: integer;
  x: integer;
begin
  randomize;
  getmem(a, sizeof(TTmas) * n * 2);
  for i := 1 to n do
    getmem(a^[i], sizeof(integer) * n);
  writeln(' Ishodnaya matrica:');
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      a^[i]^[j] := random(n);
      Write(a^[i]^[j]: 4);
      if max > a^[i]^[j] then
        max := a^[i]^[j];
      if min < a^[i]^[j] then
        min := a^[i]^[j];
    end;
    writeln;
  end;
  max := a^[1]^[1];
  min := a^[1]^[1];
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      if max < a^[i]^[j] then
        max := a^[i]^[j];
      if min > a^[i]^[j] then
        min := a^[i]^[j];
    end;
  end;
  writeln('Max: ', max);
  writeln('Min: ', min);
  writeln('Srednee arifm: ',(max+min)/2);
  for i := 1 to n do
    freemem(a^[i], sizeof(integer) * n);
 
  freemem(a, sizeof(TTmas) * n * 2); 
  Write('Press Enter...');
  readln;
end.
Turbo Pascal
Не работает , ошибка 201 и говорят есть ещё косяки, но какие не понял
Делал по задаче: В динамической памяти задана действительная матрица размера n&m.
Найти среднее арифметическое наибольшего и наименьшего значений ее
элементов.
MaidDragon вне форума Ответить с цитированием
Старый 23.05.2020, 00:53   #2
netpolice
Форумчанин
 
Аватар для netpolice
 
Регистрация: 14.02.2013
Сообщений: 222
По умолчанию

Жесть... Давно в Паскале не писал, но как по мне память ты начал терять здесь

Код:
TTmas = array[1..1] of integer;
...
TTmatr = array[1..1] of Tmas;
Вот ни разу у них размер не integer и не Tmas, соответственно обращение a^[i]^[j] (а так можно в Паскале? ) это пальцем в кучу.

А почему еще на 2? getmem(a, sizeof(TTmas) * n * 2);

А почему int? getmem(a^[i], sizeof(integer) * n);

Еще раз перечитайте тему про указатели.
netpolice вне форума Ответить с цитированием
Старый 23.05.2020, 11:25   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

...

Последний раз редактировалось digitalis; 23.05.2020 в 11:34. Причина: удаление
digitalis на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QUdpSocket работает только при локальном IP. Не работает если указан динамичесский айпи kook163 Qt и кроссплатформенное программирование С/С++ 5 09.05.2018 22:40
Не работает анимация. Механизм работает лишь при изменения числа в едит1. Студент ММИ Помощь студентам 1 18.05.2015 07:39
Программа на Visual C# работает при запуске руками, но не работает при попытки автоматического запуска Bug$ Помощь студентам 18 21.10.2013 16:22
не работает relese версия проги и debug работает тока на моем компе D][mon C# (си шарп) 2 04.05.2012 20:21
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56