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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 20:41   #1
valord
Новичок
Джуниор
 
Регистрация: 01.06.2009
Сообщений: 5
Вопрос Двумерные массивы,создание новой матрицы путем сортровки поочередно двух матриц.

Здравствуйте уважаемые господа разбирающиеся в паскале прошу вас помочь с программой над которой бьюсь уже несколько дней.
Даны два массива чисел размером М*К(матрица А) и М*Т(матрица B). Объединить их столбцы так, чтобы в массиве-результате (M*(K+T))(матрица С) в первой строке элементы получились упорядоченными по возрастанию.Числа вводятся с клавиатуры.
Пример:


Метод решения:
1 шаг.Берем первый столбец из матрицы А и первый столбец из матрицы B,заносим их в матрицу С с условием, что первым должен стоять столбец той матрицы у которой первый эелемент в первой строчке меньше чем первый элемент в первой строчке другой матрицы.
В примере мы взяли 1 столбец из А и первый столбец из B,занесли их в С отсортировав и получив в результате в С на этом шаге следующую матрицу
-3 1
9 7
2 шаг.Дальше мы сравниваем элементы из 1 строки матрицы А с первой строкой матрицы С и в зависимости от результата сравнения заносим столбец из А в матрицу С.После этого сравнения в С на этом шаге должна получится матрица
-3 1 2
9 7 8
3 шаг.Проделываем те же действия но уже для B и для С,в итоге должна получится результирующая матрица С показанная на картинке.
Код:
uses crt;
var
h,y,k,t,m,z,x,i,j,mina,minb,kt,ka,kb:integer;
pa,pb:string;
a:array [1..6,1..6] of integer;
b:array [1..6,1..6] of integer;
c:array [1..6,1..12] of integer;
begin
clrscr;
writeln('kolichestvo strok v matricax a i b - celoe chislo<=6');
read(m);
writeln('kolichestvo stolbcov v matrice a - celoe chislo<=6');
read(t);
writeln('chislo strok v oboix matricax = ',m);
writeln('chislo stolbcov v matrice a = ',t);
 if (m>=1) and (m<=6) and (t>=1) and (t<=6) then
 begin
 writeln('znachenie elementov matrici - celie chisla');
  for i:=1 to m do
  begin
   for j:=1 to t do
   begin
   write('a[',i,',',j,']=');
   read(a[i,j]);
   end;
  end;
  for i:=1 to m do
  begin
   for j:=1 to t do
   write(a[i,j]:3);
   writeln;
  end;
 end
 else
writeln('oshibka!chislo strok ili stolbcov matrici menshe 1 ili bolshe 6');
writeln('kolichestvo stolbcov v matrice b - celoe chislo<=6');
read(k);
writeln('chislo strok v oboix matricax = ',m);
writeln('chislo stolbcov v matrice a = ',k);
 if (m>=1) and (m<=6) and (k>=1) and (k<=6) then
 begin
 writeln('znachenie elementov matrici - celie chisla');
  for i:=1 to m do
  begin
   for j:=1 to k do
   begin
   write('b[',i,',',j,']=');
   read(b[i,j]);
   end;
  end;
  for i:=1 to m do
  begin
   for j:=1 to k do
   write(b[i,j]:3);
   writeln;
  end;
  end
  else
writeln('oshibka!chislo strok ili stolbcov matrici menshe 1 ili bolshe 6');
writeln('matr c');
kt:=2;




if a[1,1]<=b[1,1] then
begin
for h:=1 to m do

begin
c[h,1]:=a[h,1];
c[h,2]:=b[h,1];
end;
end
else
begin
for h:=1 to m do
begin
c[h,1]:=b[h,1];
c[h,2]:=a[h,1];
end;
end;

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
kt:=kt+t-1;
for i:=2 to t do
for z:=1 to kt do
if (a[1,i]<=c[1,z]) and (a[1,i]<=c[1,kt]) then
begin
for j:=1 to m do
begin
c[j,kt+1]:=c[j,kt];                                  
c[j,z+1]:=c[j,z];                                    
c[j,z]:=a[j,i];                                      
kt:=kt+1;                                            
end;                                                 
end                                                  
else                                                 
for j:=1 to m do                                     
begin                                                
c[j,kt+1]:=a[j,i];                                   
kt:=kt+1;                                            
end;                                                 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  y:=k+t;
   for i:=1 to m do
  begin
   for j:=1 to y do
   write(c[i,j]:3);
   writeln;
  end;

  readkey;
  end.
Прошу найти и исправить ошибку в коде программы представляющем второй шаг достижения конечного результата(кусок кода выделен восклицательными знаками).
Заранее спасибо за помощь.
valord вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ДВУМЕРНЫЕ МАССИВЫ. ОБРАБОТКА МАТРИЦ maloy-rom Помощь студентам 3 12.12.2009 17:34
Двумерные массивы-матрицы.Задачка на Си STS_1991 Помощь студентам 1 02.03.2009 13:54
Ввод векторов и матриц, умножение матрицы на вектор и вычисление скалярного призведения двух векторов zverushka Помощь студентам 18 20.02.2009 15:25
Меня волнуют двумерные массивы (матрицы)! Маськ@ Помощь студентам 3 17.02.2009 23:11
двумерные массивы(матрицы) dunvegan Помощь студентам 4 05.11.2007 14:32