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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2018, 14:33   #1
Genzal
Пользователь
 
Регистрация: 23.12.2017
Сообщений: 22
По умолчанию Массив.

Как это сделать, я не понимаю. Вот в массиве нашли в максимальные элементы каждой строки. Как сделать чтобы максимальные элементы встали в середину каждой своей строки. Ещё вопрос если я хочу добавить пределы для значение L чтобы не только было четное но и не больше 20(через repeat).
Вот так звучит задание: В каждой строке А(K,L), K <= 15, L <= 20 наибольший элемент расположить в середине строки.
Код:
Const K=15;
      L=20;
var
  A: array[1..K, 1..L] of integer;
  i, j, N, M: byte;
  MaxElem: integer;
begin
repeat
 write('Кол-во строк K = ');
 readln(M);
 until M in [2..L];
repeat
 write('Кол-во столбцов L = ');
 readln(N);
until Odd(N);
  randomize;
  writeln('Случайная матрица ', M, 'x', N, ':');
  for i := 1 to M do begin
    for j := 1 to N do begin
      a[i, j] := -100 + random(200);
      write(a[i, j]:4)
    end;
    writeln
  end;
  writeln;
  writeln('Максимальный элемент в каждой строке:');
  for i := 1 to M do begin
    MaxElem := a[i, 1];
    for j := 2 to N do 
      if a[i, j] > MaxElem then MaxElem := a[i, j];
    writeln(i, '-я строка: максимальный элемент = ', MaxElem)
  end;
  readln
end.
Genzal вне форума Ответить с цитированием
Старый 24.01.2018, 14:56   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
Как сделать чтобы максимальные элементы встали в середину каждой своей строки.
Запомнить индекс максимального элемента и поменять элемент с данным индексом и серединным.
p51x вне форума Ответить с цитированием
Старый 24.01.2018, 18:41   #3
Genzal
Пользователь
 
Регистрация: 23.12.2017
Сообщений: 22
По умолчанию

Не понял
Genzal вне форума Ответить с цитированием
Старый 24.01.2018, 20:22   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Обычно с такими задачами и дети справляются. Ладно, вот еще проще объяснение: Перед вами лежит ряд белых кубиков и один из них красный. Надо поместить красный по середине. Что делать? Ищем красный - нашли, например, 3-й. Теперь ищем середину - допустим у нас 9 элементов всего, середина - элемент с номером 5. Берем и меняем 3 и 5 кубик местами. Так понятнее?
p51x вне форума Ответить с цитированием
Старый 25.01.2018, 12:44   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,546
По умолчанию

И не лишним будет, видимо, напомнить, учитывая уровень ТС, что обмен типа
Код:
  a[i,j] := a[i,k] ;
  a[i,k] := a[i,j] ;
не прокатывает, придется делать так:
Код:
  tmp := a[i,k] ;
  a[i,k] := a[i,j] ;
  a[i,j] := tmp ;
digitalis вне форума Ответить с цитированием
Старый 02.02.2018, 03:38   #6
Genzal
Пользователь
 
Регистрация: 23.12.2017
Сообщений: 22
По умолчанию

Я просто тупой походу уже неделю сижу и не могу сделать.
Genzal вне форума Ответить с цитированием
Старый 02.02.2018, 09:36   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Genzal Посмотреть сообщение
уже неделю сижу и не могу сделать.
очень плохо. тут и полчаса нечего делать!


давайте вместе решим.

1) Вам нужно найти не сам максимальный элемент, а его номер (индекс в строке)
т.е.
Код:
  writeln('Максимальный элемент в каждой строке:');
  for i := 1 to M do begin
    MaxElemIndex := 1;
    for j := 2 to N do 
        if a[i, j] > a[i, MaxElemIndex] then MaxElemIndex := j;
    writeln(i, '-я строка: максимальный элемент = ', a[i, MaxElemIndex]);
    
    <а тут надо поменять средний элемент  i-й строки с элементом с индексом MaxElemIndex >

  end;
теперь нужно сделать "поменять средний элемент i-й строки с элементом с индексом MaxElemIndex"

для этого подумайте
1) какой индекс имеет средний элемент?
2) как можно применить код из #5 для обмена двух элементов массива
3) написать код, проверить. Если есть вопросы - выложить полученный код на форум и задать доп.вопрос.

так понятней?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.02.2018, 03:06   #8
Genzal
Пользователь
 
Регистрация: 23.12.2017
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
очень плохо. тут и полчаса нечего делать!
У меня получилось вывести индексы максимального элемента каждой строки, нашёл середину, но при переприсваивание я где-то ошибся. И не уверен, что так надо середину строки находить.
Код:
const
  L = 15; K = 20;
var
  a: array [1..L, 1..K] of integer;
  i, j,n,m: integer;
  jk, ik,tmp, max,F: integer;
  z:real;
begin
repeat
 write('Кол-во строк K = ');
 readln(M);
 until M in [2..L];
repeat
 write('Кол-во столбцов L = ');
 readln(N);
until Odd(N);
randomize;
  for i := 1 to m do
  begin
    max := 1;
    for j := 1 to n do
    begin
      a[i, j] :=random(50)+1;
      write(a[i, j]:4);
      if a[i, j] > a[i, max] then
      begin
        a[i, max] := a[i, j]; 
        ik := i;
        jk := j;
      end;
    end;
    write( '   |' ' max = ':8, a[ik, max]:4, ', строка: ':4, ik, ', столбец: ':8, jk);
    writeln;
  end;
  Z:=(N/2)+0.5;
  writeln ('Середина строки: ', Z);
   write('Введите значение Z = ');
 readln(F);
for i:=1 to n do
  begin
    tmp:=a[i,F];
    a[i,F]:=a[i,jk];
    a[i,jk]:=tmp;
 end;
   for j:=1 to m do
  begin
    tmp:=a[F,j];
    a[F,j]:=a[ik,j];
    a[ik,j]:=tmp;
  end;
  writeln('Полученный массив:');
  for i:=1 to n do
  begin
    for j:=1 to m do
      write(a[i,j]:5);
    writeln;
  end;
  readln;
end.

Последний раз редактировалось Genzal; 03.02.2018 в 03:09.
Genzal вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив A размером 3*3. Составить программу, записывающие положительные элементы этого массива A в одномерный массив B, а отрицательные - в одномерный массив C SkaNi Паскаль, Turbo Pascal, PascalABC.NET 1 02.06.2017 08:07
Программирование в VBA: двумерный массив M на N, нужно создать новый одномерный массив TheAnnihilyator Помощь студентам 1 04.06.2014 09:16
С# задан массив 5х5. сформировать массивы А и В. в массив А поместить элементы с четными индексами, в массив В с нечетны Koksa Помощь студентам 0 10.10.2011 11:26
Из массив А получить массив В, удвоив все нечётные элементы удвоены ( на Pascal) KARTER Помощь студентам 1 18.06.2011 19:58
Массив - Нужно написать массив и распечатать на экран с конца в начало(язык С++) econ Помощь студентам 1 29.05.2011 22:02