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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2015, 12:09   #1
Юля23
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 20
По умолчанию максимальный элемент

Составить процедуру определения адресов элементов значения которых лежат в пределах от p до q в одномерном массиве A. с помощью этой процедуры определить и вывести на экран адреса соответствующих элементов в строках двумерной матрицы B.Вывести адрес максимального элемента из тех, которые были выведены.Как найти этот максимальный элемент?
Код:
program adress;
  uses
    crt;
  const
    L=10;
  type
    mas=array[1..l] of integer;
    matr=array[1..l] of mas;
  var
    Adr:mas;
    M:matr;
    i,j,p,q,n, maxn, maxi:integer;
  procedure Adress(a:mas; p,q:integer; var b:mas);
    var
      i,j:integer;
    begin
      j:=1;
    for i:=1 to n do
      if (a[i]>=p) and (a[i]<=q) then
        begin
          b[j]:=i;
          j:=j+1;
        end;
    end;
  begin
    clrscr;
    randomize;
    writeln('vvedite razmer matrici');
    readln(n);
    writeln('Ishodniy massiv:');
    for i:=1 to n do
      begin
        for j:=1 to n do
          begin
            M[i,j]:=random(100);
            write(M[i,j]:4);
          end;
          writeln;
      end;
    writeln('vvedite granici:');
    readln(p,q);
    writeln('adresa iscomih elementov [',p,',',q,'],');
    for i:=1 to n do
      begin
        Adress(M[i],p,q,Adr);
        j:=1;
        while adr[j]<>0 do
          begin
            writeln('(',i,',',adr[j],')');
            Adr[j]:=0;
            j:=j+1;
          end;
            end;
  readln;
end.
Юля23 вне форума Ответить с цитированием
Старый 07.06.2015, 12:25   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Подправил:
Код:
program adress;
uses
    crt;
const
    L=10;
type
    mas=array[1..l] of integer;
    matr=array[1..l] of mas;
var
    Adr:mas;
    M:matr;
    i,j,p,q,n, maxn, maxi:integer;

procedure Adress(a:mas; p,q:integer; var b:integer);
var
      i:integer;
begin
    b:=1;
    for i:=2 to n do
      if (a[i]>=p) and (a[i]<=q) and (a[b]<a[i]) then
          b:=i;//здесь только адрес
end;

begin
    clrscr;
    randomize;
    writeln('vvedite razmer matrici');
    readln(n);
    writeln('Ishodniy massiv:');
    for i:=1 to n do
      begin
        for j:=1 to n do
          begin
            M[i,j]:=random(100);
            write(M[i,j]:4);
          end;
          writeln;
      end;
    writeln('vvedite granici:');
    readln(p,q);
    writeln('adresa iscomih elementov [',p,',',q,'],');
    for i:=1 to n do
      begin
        Adress(M[i],p,q,Adr[i]);
        writeln('(',i,',',Adr[i],') = ',M[i,Adr[i]]);
      end;
  readln;
end.
Сойдет?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 08.06.2015 в 04:56.
newerow1989 вне форума Ответить с цитированием
Старый 07.06.2015, 13:23   #3
Юля23
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 20
По умолчанию

не выводит максимальный адрес(выдает ошибку 201:ошибка проверки диапазона
Юля23 вне форума Ответить с цитированием
Старый 07.06.2015, 13:32   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

На какой строчке?
Я вводил n=9, p,q=1 и 5 - все работало
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 07.06.2015, 21:58   #5
Юля23
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 20
По умолчанию

нужно вводить 2 числа, а вы вроде номер строк вводите 1 и 5 да?вот почему ошибка диапазона...
123
456
789
при вводе 4 и 6 должен вывести адреса
[2,1],[2,2],[2,3]
а потом адрес максимального [2,3]
моя прога все правильно делает, но я не знаю как максимальный адрес найти и вывести

Последний раз редактировалось Юля23; 07.06.2015 в 22:05.
Юля23 вне форума Ответить с цитированием
Старый 08.06.2015, 04:44   #6
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Подправил в процедуре - сойдет?

И ниже дописать:
Код:
   for i:=1 to n do
       Adr[i]:=M[i,Adr[i]];
    Adress(Adr,0,100,maxn);
   Writeln(Adr[maxn]);
  readln;
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 08.06.2015 в 04:57.
newerow1989 вне форума Ответить с цитированием
Старый 08.06.2015, 11:46   #7
Юля23
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 20
По умолчанию

что то не то...почему когда я ввожу границы например 20 и 30 он мне пишет числа больше и меньше этой границы? 62 80 и тд?
Юля23 вне форума Ответить с цитированием
Старый 08.06.2015, 12:33   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Юля23 Посмотреть сообщение
нужно вводить 2 числа, а вы вроде номер строк вводите 1 и 5 да?вот почему ошибка диапазона...
123
456
789
при вводе 4 и 6 должен вывести адреса
[2,1],[2,2],[2,3]
а потом адрес максимального [2,3]
моя прога все правильно делает, но я не знаю как максимальный адрес найти и вывести
Получается что вам нужно найти элемент сумма индексов которого больше остальных.


Код:
procedure Adress(a:mas; p,q:integer; var b:integer);
var
      i,maxp, maxq :integer;
begin
    b:=-1;
    maxp=-1; // максимальные индексы, сами выведете наружу из процедуры
    maxq =-1;
    for i:=2 to n do
      if (a[i]>=p) and (a[i]<=q) then
          begin 
             if(p+q>b) then 
                begin
                  b := p+q;
                  maxp = p;
                  maxq = q;
                 end;
          end;
end;
Вот как то так наверное.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 08.06.2015 в 12:42.
WorldMaster вне форума Ответить с цитированием
Старый 08.06.2015, 13:32   #9
Юля23
Пользователь
 
Регистрация: 23.03.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Юля23 Посмотреть сообщение
нужно вводить 2 числа, а вы вроде номер строк вводите 1 и 5 да?вот почему ошибка диапазона...
123
456
789
при вводе 4 и 6 должен вывести адреса
[2,1],[2,2],[2,3]
а потом адрес максимального [2,3]
моя прога все правильно делает, но я не знаю как максимальный адрес найти и вывести
Получается что вам нужно найти элемент сумма индексов которого больше остальных.
там выводится адрес [2,3] потому что 6 число больше чем 4 и 5...
Юля23 вне форума Ответить с цитированием
Старый 08.06.2015, 13:43   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Блин.. только сейчас заметил. В общем ваша функция работает со строками. Значит нужен еще один массив равный количеству строк.
Далее в каждой строке находите максимальный индекс и заносите в массив. Если в строке нету подходящих элементов то вписываете -1.
Затем из полученного массива выбираете максимальный элемент.

Но тут же не очень понятно по какому правилу определять максимальный индекс.
Вот например какой индекс больше [2,7] или [7,2].
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Максимальный элемент. Liky Паскаль, Turbo Pascal, PascalABC.NET 1 20.02.2014 22:21
создать массив по формуле,найти максимальный элемент. отсортировать по уменьшению,последний отрицательн элемент заменить наиболшим сергей-верига Помощь студентам 2 16.01.2014 15:25
Матрица. Максимальный элемент АлександрМих Общие вопросы C/C++ 3 21.04.2012 19:56
Максимальный чётный элемент vrtp Общие вопросы C/C++ 2 07.12.2011 17:00
Максимальный элемент матрицы gessi Паскаль, Turbo Pascal, PascalABC.NET 2 14.09.2009 09:23