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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2009, 18:36   #1
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
Плохо Задача по матрицам. Поменять местами наименьший и второй по величине элементы

Поменять местами наименьший и второй по величине элементы в каждой строке матрицы Х(K,L), K<=10, L>=50. Помотите решить, я уде всю голову сломал да и курсачь скоро сдавать уже. Заранее благодарен )))
Иван 883 вне форума Ответить с цитированием
Старый 02.01.2009, 19:00   #2
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию вроде так

uses crt;
var
mas:array[1..10,1..50] of integer;
i,j,m,max,buf,k,l,n:integer;
begin
clrscr;
randomize;
for i:=1 to 10 do
begin
for j:=1 to 50 do
mas[i,j]:=random(8)+1;
end;
for i:=1 to 10 do
begin
for j:=1 to 50 do
begin
write(mas[i,j],' ');
end;
writeln;
end;
writeln;
writeln;
for i:=1 to 10 do
begin
max:=mas[i,1];
for j:=2 to 50 do
begin
if mas[i,j]>max then begin max:=mas[i,j]; n:=j; end;
end;
m:=mas[i,1];
for j:=2 to 50 do
begin
if (mas[i,j]>m) and (max>mas[i,j]) then begin m:=mas[i,j]; k:=j; end;
end;
buf:=mas[i,n];
mas[i,n]:=mas[i,k];
mas[i,k]:=buf;
end;
for i:=1 to 10 do
begin
for j:=1 to 50 do
begin
write(mas[i,j],' ');
end;
writeln;
end;
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 03.01.2009, 13:06   #3
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
По умолчанию

Спасибо так то оно так тока здесь матрица самогенерирующая, а должна вводиться пользователем
Иван 883 вне форума Ответить с цитированием
Старый 03.01.2009, 13:07   #4
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
По умолчанию

Такой вариант у меня был и препод его заброковал. Сказал иди переделывай...
Иван 883 вне форума Ответить с цитированием
Старый 03.01.2009, 14:13   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Попробуй так, работает нормально и понятно.
Код:
uses crt;
const nmax=10;
      mmax=50;
var x:array[1..nmax,1..mmax] of integer;
    n,m,i,j,k,min,jmin,max1,jmax1,max2,jmax2,bf:integer;
begin
clrscr;
repeat
write('Kolichestvo strok n=');readln(n);
until (n>0)and(n<=nmax);
repeat
write('Kolichestvo stolbcov m=');readln(m);
until (m>2)and(n<=mmax);
writeln('Vvedite ',n*m,' elementov matricy:');
for i:=1 to n do
for j:=1 to m do
read(x[i,j]);  //вводим элементы матрицы через пробел, можно строчками
readln;
clrscr;//очищаем экран
writeln('Ishodnaya matrica X:');//выводим матрицу
for i:=1 to n do
   begin
     for j:=1 to m do
     write(x[i,j]:4);
     writeln;
   end;
for i:=1 to n do
  begin
    min:=x[i,1];jmin:=1;max1:=x[i,1];jmax1:=1;
    for j:=1 to m do
    if x[i,j]<min then
      begin
        min:=x[i,j];//находим минимум
        jmin:=j;//его номер
      end
    else if x[i,j]>max1 then
      begin
        max1:=x[i,j];//находим первый максимум
        jmax1:=j; //его номер
      end;
    max2:=-maxint-1;jmax2:=1;//за максимум берем самое маленькое число типа integer
    for k:=1 to m do
    if (x[i,k]>max2)and(k<>jmax1)then//ищем максимум, но на другой позиции, оно или такое же или меньше, но второе
      begin
        max2:=x[i,k];//запоминаем
        jmax2:=k; //его номер
      end;
    bf:=x[i,jmin]; //меняем по условию местами
    x[i,jmin]:=x[i,jmax2];
    x[i,jmax2]:=bf;
  end;
writeln('Rezultat:');//выводим
for i:=1 to n do
  begin
    for j:=1 to m do
    write(x[i,j]:4);
    writeln;
  end;
readln
end.
Пример
исходная
1 2 3 4
1 2 3 4
1 2 3 4
результат
3 2 1 4
3 2 1 4
3 2 1 4
puporev вне форума Ответить с цитированием
Старый 03.01.2009, 16:04   #6
Иван 883
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 39
По умолчанию

Спасибо большое всё просто и понятно )))
Иван 883 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поменять местами научите Паскаль, Turbo Pascal, PascalABC.NET 13 08.01.2009 13:43
ПОменять значения местами qip2005 Паскаль, Turbo Pascal, PascalABC.NET 6 24.12.2008 23:38
Ввести двумерный массив и поменять в нём местами элементы Ku6ep Помощь студентам 3 23.12.2008 18:25
Поменять местами абзацы Иллидан Microsoft Office Word 1 16.09.2008 08:14
поменять местами столбцы veter_s_morya SQL, базы данных 4 29.06.2008 13:36