Использование динамических массивов

Задача: 

Десять раз генерировать ряд случайных чисел от 0 до 99.
Каждый ряд также должен иметь произвольную длину.
В каждом ряде следует найти максимальное число.
Сохранить только максимальные числа и вывести их на экран.

Описание переменных: 

arrmax – обычный массив, где будут сохраняться максимальные значения рядов;
row – динамический массив для текущего ряда чисел;
n – длина текущего ряда чисел.

Алгоритм решения задачи: 

Переменной j будет играть роль индекса элементов массива arrmax. В конце цикла for, который сделает 10 итераций, j будет увеличиваться на единицу, что будет означать переход к следующей ячейке массива.

Длина очередного ряда чисел случайна. Получив значение n, выделяем память под динамический массив с помощью процедуры getmem.

Заполняем динамический массив случайными числами.

Записываем в очередную ячейку массива arrmax первое значение динамического массива. Если какое-либо последующее значение массива, на который указывает row, будет больше arrmax[j], то производится перезапись значения.

После нахождения максимума память можно освободить (freemem).

Программа на языке Паскаль: 

type
    arrdinamic = array[1..50] of integer;
 
var
    arrmax: array[1..10] of integer;
    row: ^arrdinamic;
    n, i, j, k: integer;
 
begin
    randomize;
 
    j := 1;
    for i := 1 to 10 do begin
        n := random(50) + 1;
        getmem(row,n*sizeof(integer));
        for k := 1 to n do
            row^[k] := random(100);
        arrmax[j] := row^[1];
        for k := 1 to n do
            if row^[k] > arrmax[j] then
                arrmax[j] := row^[k];
        freemem(row,n*sizeof(integer));
        j := j + 1
    end;
 
    for i := 1 to 10 do
        write(arrmax[i], ' ');
 
readln
end.

Комментарии

Помогите найти ошибку!

uses crt;
const nmax=20;
type
  Tmas=^TTmas;
  TTmas=array[1..1] of integer;
  Tmatr=^TTmatr;
  TTmatr=array[1..1] of Tmas;
var
  a:Tmatr;
  n,m,i,j,x:integer;
  f:boolean;
begin
clrscr;
randomize;
repeat
write('vvedite kolichestvo strok ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('vvedite kolichestvo stolbtsov ',nmax,' m=');
readln(m);
until m in [1..nmax];
getmem(a,sizeof(TTmatr)*n);
for i:=1 to m do
getmem(a^[i],sizeof(integer)*m);
writeln ('mu poluchili takuy matristy:');
for i:=1 to n do
 begin
  for j:=1 to m do
   begin
    repeat
    a^[i]^[j]:=random(20);
    until a^[i]^[j]<>0;
    write(a^[i]^[j]:4);
   end;
  writeln;
 end;
writeln;
 
end.

freemem(row,n*sizeof(integer)

freemem(row,n*sizeof(integer)); - ошибка, должно быть freemem(row);
И произвольный массив - это не до 50, а любое число, включая числа больше 50

А зачем здесь вообще массив

А зачем здесь вообще массив row? Ведь можно срзу сравнивать случайные числа с максималными в данной итерации.

getmem(row,n*sizeof(integer));

Каким образом getmem(row,n*sizeof(integer)) выделяет память?

n - количество элементов

n - количество элементов массива
sizeof(integer) - размер одного элемента
row - ссылка на область памяти, куда записываются данные

Помогите . пожалуйста решить задачу.

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

ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ!!!!

Определить сумму и количество отрицательных элементов, находящихся под главной диагональю матрицы.
Число столбцов = 7
Число рядков = 7
базовый тип REAL
не могу никак решить!!!
помогите, умоляю, а то у меня уже голова не соображает как эту задачу решить....:(

Решение:

program z1;
var a:array[1..7,1..7] of real;
    i,j,k:integer;
    sum:real;
begin
 for i:=1 to 7 do
  for j:=1 to 7 do
   read (a[i,j]);
 
 
  for i:=1 to 7 do
   for j:=1 to 7 do
    if i>j then {если элемент находиться под главной диагональю}
     if a[i,j]<0 then begin
                       inc(k); {увеличить k на 1}
                       sum:=sum+a[i,j];
                      end;
 
 writeln('-------------------');
 writeln('Количество отрицательных элементов под главной диагональю: ',k);
 writeln('Их сумма: ',sum);
end.

вроде как работает (проверял только на целых числах)

Добрый день,помогите пожалуиста с решением данной задачи.

Вы посетили магазин и купили 10 видов товара. В таблицу T[1:10] вы записали количество купленного товара каждого вида. В таблицу C[1:10] записали цены единиц каждого вида товара соответственно. Составьте на Паскале программу вычисления общей стоимости всех покупок.

Прошу,пожалуйста,умоляю

а лучше так

так можно к пример дописать функцию подсчета цены товара выборочно(по наименованию) и т.п.
-------------------------------------------------------------------------

const 
  n = 3;// константа определяющая количество видов купленного товара
 
type korzina = record
      name:   string[15];//вид товара
      numb:   integer;//количество шт. товара
      price:  real;//цена за единицу товара
     end;
 
type 
  massive = array[1..n] of korzina;
 
var 
  arr:massive;
  summa:real;
  i:integer;
 
// процедура наполнения корзины товаром
procedure zapolnenie_korzini(var arr:massive);
var
  i:integer;
begin
  for i:=1 to n do
    begin
      writeln('введите наименование продукта');
        readln(arr[i].name);
      writeln('введите количество продукта');
        readln(arr[i].numb);
      writeln('введите цену продукта');
        readln(arr[i].price);
    end;
end;
 
//функция нахождения суммарной цены
function summ_price(arr:massive):real;
var
  i:integer;
begin
  for i:=1 to n do
    Result:= Result + arr[i].numb * arr[i].price;
end;
 
// ----- основная программа -----\\
begin
  zapolnenie_korzini(arr);
  writeln(summ_price(arr)); 
end.

думаю через двумерный массив будет более корректно

program Project1;
const
  n = 2;// константа, указывающая количество видов купленного товара
 
type
 mas = array [1..n,1..2] of integer;
 
var
  massive:mas;
  i:integer;
 
  // процедура задания кличества и цены товара
  // arr[i,1] -- количество; arr[i,2] -- цена, где и номер товара
  procedure zadanie(var arr:mas);
  var
    i:integer;
  begin
  for  i := 1 to n do
    begin
    writeln('Укажите количество товара',i);
      readln(arr[i,1]);
    writeln('Укажите цену товара',i);
      readln(arr[i,2]);
    end; 
  end;
 
 // функция нхождения сумарной стоимости товара
 Function summa_tovara(m:mas):integer;
 var i: integer;
 begin
  Result:=0;
  for i := 1 to n do
    Result:= Result + m[i,1] * m[i,2];
 end;
 
//----- основная программа -----\\
begin
  zadanie(massive);
  Writeln('сумма всего товара: ', summa_tovara(massive));
      readln;
end.

Решение похожей задачи.

Решение похожей задачи.

//блок обьявления переменных,

//блок обьявления переменных, ввода данных и т. д. пропущен.
 
for i:=1 to length(t) do //можно до 10 если гарантируеться что длина масива равна 10
begin
  sum:=sum + t[i] * c[i];
end;
 
write(sum); //sum - ответ.

Разве для решения такой

Разве для решения такой задачи должны использоваться динамические массивы?
Таблицы - это одномерные массивы типа [1..10]? И их элементы нужно перемножить между собой? Или имеется ввиду что-то другое?