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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2013, 05:47   #1
vadimc
Пользователь
 
Регистрация: 13.10.2012
Сообщений: 30
По умолчанию Добавить процедуру GetMemory и указать сколько выделилось памяти

ПОМОГИТЕ ДОБАBИТЬ ПРОЦЕДУРУ GetMemory.Задание самой программы :дана матрица продублировать строку матрицы содержащую ее максимальный элемент Pascal ABC

Код:
const
 maxSize=10;
 type 
 Tmatrix=array[1..maxSize+1,1..maxSize] of integer;{учитываем новый размер матрицы}
 var
 a:Tmatrix;
 i,j,m,n,imax,max:integer;
 begin
 repeat
 write('Введите количество строк матрицы, не более ',maxSize,'=');
 readln(n);
 until (n>=1) and (n<=maxSize);
 repeat
 write('Введите количество столбцов матрицы, не более ',maxSize,'=');
 readln(m);
 until (m>=1) and (m<=maxSize);
 randomize;
 writeln('Исходная матрица');
 for i:=1 to n do
 begin
 for j:=1 to m do
 begin
 a[i,j]:=random(100);
 write(a[i,j]:4);
 end;
 writeln;
 end;
 writeln;
 {поиск номера строки с максимумом}
 imax:=1;
 max:=a[imax,1];
 for i:=1 to n do
 for j:=1 to m do
 if a[i,j]>max then
 begin
 max:=a[i,j];
 imax:=i;
 end;
 writeln('Максимум=',max,' находится в строке с номером=',imax);
 {дублирование строки со встреченным первым максимумом матрицы}
 inc(n);
 for i:=n downto imax+1 do
 for j:=1 to m do
 a[i,j]:=a[i-1,j];
 writeln('Полученная матрица');
 for i:=1 to n do
 begin
 for j:=1 to m do
 write(a[i,j]:4);
 writeln;
 end;
 readln;
 end.

Последний раз редактировалось Stilet; 13.06.2013 в 08:00.
vadimc вне форума Ответить с цитированием
Старый 13.06.2013, 08:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ДОБАBИТЬ ПРОЦЕДУРУ GetMemory
К чему??? У тебя массивы с фиксированной длиной.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2013, 08:54   #3
vadimc
Пользователь
 
Регистрация: 13.10.2012
Сообщений: 30
По умолчанию ПЕРЕДЕЛАЛ

ТОЛЬКО ПРОБЛЕМА В ТО ЧТО ПРИ ВВОДЕ РАЗМЕРА МАТРИЦИ 3*3 4*4 И ТД
НЕ ВЫВОДИТЬСЯ КОНЕЧНАЯ МАТРИЦА


Код:
uses crt;
const
  maxSize = 10;
type tip = real;
const max_stb = 65520 div sizeof(tip);
  max_str = 65520 div 4;
type
  pingvin = array[1..max_stb] of integer;
  matrix = array[1..max_str] of ^pingvin;
var
  a: ^matrix;
  i, j, m, n, imax, max: integer;

procedure GetMemory(var A: ^Matrix; K, L: Integer);
var
  i: Integer; sum: real;
begin
  getmem(A, K * sizeof(Integer));
  sum := K * sizeof(Integer);
  for i := 1 to L do begin
    getmem(A^[i], K * sizeof(Integer));
    sum := sum + K * sizeof(Integer);
  end;
  WriteLn('Количество выделенной памяти = ', sum);
end;

begin
  repeat
    write('Введите количество строк матрицы, не более ', maxSize, '=');
    readln(n);
  until (n >= 1) and (n <= maxSize);
  repeat
    write('Введите количество столбцов матрицы, не более ', maxSize, '=');
    readln(m);
  until (m >= 1) and (m <= maxSize);
  randomize;
  GetMemory(a, n, m);
  writeln('Исходная матрица');
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a^[i]^[j] := random(100);
      write(a^[i]^[j]: 4);
    end;
    writeln;
  end;
  writeln;
  imax := 1;
  max := a^[imax]^[1];
  for i := 1 to n do
    for j := 1 to m do
      if a^[i]^[j] > max then
      begin
        max := a^[i]^[j];
        imax := i;
      end;
  writeln('Максимум=', max, ' находится в строке с номером=', imax);
  inc(n);
  for i := n downto imax + 1 do
    for j := 1 to m do
      a^[i]^[j] := a^[i - 1]^[j];
  writeln('Полученная матрица');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a^[i]^[j]: 4);
    writeln;
  end;
  readln;
end.


___________
ЗАПОМНИТЕ: Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования сообщения с решёточкой #)

Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 13.06.2013 в 09:10.
vadimc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить процедуру Копировать ,вставить,вырезать Denis Black БД в Delphi 0 25.05.2011 18:59
Объясните как добавить процедуру в DLL nik-maximal Общие вопросы Delphi 2 29.03.2011 03:42
Для каждого из слов указать, сколько раз оно встречается в тексте.(paskal) INZA Помощь студентам 1 14.12.2010 10:25
Сколько памяти на удаленном компьютере? Stilet Операционные системы общие вопросы 4 02.09.2010 12:47
Как определить сколько памяти у видеокарты flug Общие вопросы Delphi 12 13.07.2010 08:13