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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2011, 00:54   #1
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию Вложенные циклы + массивы

Помогите пожалуйста с нописанием програмы:

Заданная: матрица целых чисел M x N, компоненты которой могут быть и нулями. Сделать контрольное вывода матрицы на экран в естественном виде. Матрицу инициалиазуваты как константу (двумерный массив).

Поменять местами строки матрицы (4х3), которые содержат наименьший и наибольший элементы, вывести новую матрицу на экран.
kuy вне форума Ответить с цитированием
Старый 11.10.2011, 01:35   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

поможем) покажыте наработки)
Pein95 вне форума Ответить с цитированием
Старый 11.10.2011, 18:52   #3
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
Сообщение

Код правельный?? и что дальше делать??
Код:
program masiv;

{$APPTYPE CONSOLE}
    {11.	Поміняти місцями стовпці матриці (5х2), яки містять найменший
    і  найбільший елементи, вивести нову матрицю на екран.}

uses
  SysUtils;

var
  mas        : array[1..5,1..2] of integer;
  i,j,maxI,maxJ,minI,minJ  : integer;
begin
  randomize;
  Writeln('Random matrix 5x2:');
  for j:=1 to 5 do
    begin
      for i:=1 to 2 do
        begin
          mas[i,j] := - 10 + random(21);
          Write(mas[i,j],'   ');
        end;
      Writeln;
    end;
maxI:=1;
maxJ:=1;
minI:=1;
minJ:=1;
  for j:=1 to 5 do
   for i:=1 to 2 do
   begin
     if mas[i,j]>mas[maxI,maxJ] then
      begin
       maxI:=i;
       maxJ:=j;
      end;
     if mas[minI,minJ]>mas[i,j] then
      begin
       minI:=i;
       minJ:=j;
      end;
    end;
  Writeln('min = ',mas[minI,minJ]);
  Writeln('max = ',mas[maxI,maxJ]);
readln;
end.
kuy вне форума Ответить с цитированием
Старый 11.10.2011, 20:05   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В задании же
Цитата:
Матрицу инициалиазуваты как константу
а не заполнять случайными числами.
Цитата:
Код:
maxI:=1;
maxJ:=1;
minI:=1;
minJ:=1;
  for j:=1 to 5 do
   for i:=1 to 2 do
   begin
     if mas[i,j]>mas[maxI,maxJ] then
      begin
       maxI:=i;
       maxJ:=j;
      end;
     if mas[minI,minJ]>mas[i,j] then
      begin
       minI:=i;
       minJ:=j;
      end;
    end;
Не понял, что вы тут хотите сделать. Поиск макс и мин и их строк?
Как-то так тогда:
Код:
max:=mas[1,1]; min:=max[1,1]; //предположим, что элемент [1,1] являются макс и мин
maxi:=1; mini:=1; //номера строк
for i:=1 to 5 do
    for j:=1 to 2 do
    begin
       if mas[i,j]>max then begin max:=mas[i,j]; maxi:=i; end;
       if max[i,j]<min then begin min:=max[i,j]; mini:=i; end;
    end;
ну и дальше останется только поменять местами строку maxi с mini
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2011, 21:35   #5
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

ничего не получается.., подставляю
Код:
max:=mas[1,1]; min:=max[1,1]; //предположим, что элемент [1,1] являются макс и мин
maxi:=1; mini:=1; //номера строк
for i:=1 to 5 do
    for j:=1 to 2 do
    begin
       if mas[i,j]>max then begin max:=mas[i,j]; maxi:=i; end;
       if max[i,j]<min then begin min:=max[i,j]; mini:=i; end;
    end;
и столбики неверные вриди выходят. Да и как матрицу инициалиазувать как константу??
kuy вне форума Ответить с цитированием
Старый 11.10.2011, 21:42   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так не столбики же, а строки нужны.
строка: ———————————————
столбик:
_
_
_
_
_

Цитата:
Да и как матрицу инициалиазувать как константу??
Код:
const
 mas: array[1..4, 1..4] of integer = (
    (8,9,1,3),
    (21,6,7, 5),
    (0, 2, 8, 7),
    (15, 16, 5, 2)
    );
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 11.10.2011, 23:32   #7
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Вроди бы всё сделал, только ошибку выдаёт на этапе когда пытаюсь строки менять местами(красненим)
Код:
program massive;

{$APPTYPE CONSOLE}


uses
  SysUtils;
const
 mas: array[1..4, 1..3] of integer =
    (
    (8, 9, 1),
    (5, 6, 7),
    (0, 2, 8),
    (3, 7, 9)
    );
var
  i,j,max,min,maxi,mini,temp  : integer;
begin
writeln('original matrix 4*3:');
for i:=1 to 4 do
 begin
 for j:=1 to 3 do
   write(mas[i,j]:4);
   writeln;
  end;


max:=mas[1,1]; min:=mas[1,1]; //предположим, что элемент [1,1] являются макс и мин
maxi:=1; mini:=1; //номера строк
for i:=1 to 4 do
    for j:=1 to 3 do
    begin
       if mas[i,j]>max then begin max:=mas[i,j]; maxi:=i; end;
       if mas[i,j]<min then begin min:=mas[i,j]; mini:=i; end;
    end;
writeln('max line = ',maxi);
writeln('min line = ',mini);


writeln('new matrix:');
for i:=1 to 4 do
 begin
 temp := mas[maxi,j];
 mas[maxi,j] := mas[mini,j];
 mas[mini,j] := temp;
 end;
for i:=1 to 4 do
 begin
 writeln;
 for j:=1 to 3 do
   write(mas[i,j]:4);
  end;
readln;
end.
kuy вне форума Ответить с цитированием
Старый 11.10.2011, 23:37   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
mas[maxi,j]
А откуда j?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.10.2011, 00:08   #9
kuy
Форумчанин
 
Аватар для kuy
 
Регистрация: 05.09.2011
Сообщений: 109
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А откуда j?
Я по примерам делал.. незнаю.. Как правильно записать??
kuy вне форума Ответить с цитированием
Старый 12.10.2011, 00:12   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну так у вас в цикле i
Цитата:
for i:=1 to 4 do
а используете какую-то j.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы. Вложенные циклы Usefur Помощь студентам 4 27.12.2010 22:48
Блок схема для «Двумерные массивы. Вложенные циклы» MariKa-91 Паскаль, Turbo Pascal, PascalABC.NET 8 27.05.2010 19:03
двумерные массивы.вложенные циклы Горящее сердце Помощь студентам 2 26.05.2010 20:29
массивы и вложенные циклы cobrita24 Помощь студентам 10 03.12.2009 15:22
Двумерные массивы, вложенные циклы, матрицы denis12345 Паскаль, Turbo Pascal, PascalABC.NET 1 15.06.2009 03:09