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

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

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

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

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

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

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


Преподаватель упорно запрещает из матриц A и B сначала сделать матрицу С,и после матрицу С сортировать.
Прошу учесть что элементы в матрицу С вносятся по столбцам,т.е. в каждой матрице(А и B) находим минимальный элемент в первой строчке, сравниваем их и меньший заносится в матрицу С ,но с элементами стоящими под ним,т.е. в матрице А нашли минимальный элемент=1,затем в матрице B=-3,сравнили их и занесли в матрицу С столбец из B
-3
9
и так для всех следующих элементов.
Заранее спасибо за помощь.
valord вне форума Ответить с цитированием
Старый 01.06.2009, 22:37   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Где ваши наработки?
MaTBeu вне форума Ответить с цитированием
Старый 02.06.2009, 07:41   #3
valord
Новичок
Джуниор
 
Регистрация: 01.06.2009
Сообщений: 5
По умолчанию

Код:
uses crt;
var
k,t,m,z,h,x,i,j,mina,minb,kt,ka,kb,d,q,y:integer;
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:=k+t;
mina:=a[1,1];
minb:=b[1,1];
i:=1;
while i<=t do
begin
if mina>a[1,i] then
mina:=a[1,i]
else
i:=i+1;
end;
j:=1;
while j<=k do
begin
if minb>b[1,j] then
minb:=b[1,j]
else
j:=j+1;
end;
ka:=mina-10;
kb:=minb-10;
i:=1;
j:=1;
h:=1;
while z<=kt do
begin
while i<=t do
begin
d:=1;
while d<=t do
begin
if (mina>a[1,d]) and (mina>ka) then
begin
mina:=a[1,d];
x:=d;
end
else
d:=d+1;
end;
   while j<=k do
   begin
   q:=1;
while q<=k do
begin
if (minb>b[1,q]) and (minb>kb) then
begin
minb:=b[1,q];
y:=q;
end
else
q:=q+1;
end;

 if minb<mina then
 begin
  while h<=m do
  begin
  c[h,z]:=b[h,y];
  h:=h+1;
  end;
  end
  else
  while h<=m do
  begin
  c[h,z]:=b[h,x];
  h:=h+1;
  end;
  j:=j+1;
  end;
  i:=i+1;
  ka:=mina;
  kb:=minb;
  end;
  z:=z+1;
  end;
   for h:=1 to m do
  begin
   for z:=1 to kt do
   write(c[h,z]:3);
   writeln;
  end;
  writeln(mina,',',minb);
  readkey;
  end.
Вот.
valord вне форума Ответить с цитированием
Старый 02.06.2009, 07:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По башке бы твоему преподу за выхухольство...
Его вариант не просто неоптимален, но и непонятен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2009, 09:44   #5
valord
Новичок
Джуниор
 
Регистрация: 01.06.2009
Сообщений: 5
По умолчанию

Виталий скажите какой шаг вам не понятен попробую объяснить)а преподаватель это она,действительно странная тетка(
Я вот сам думаю сначала соединить две матрицы в одну,а потом на это соединение накладывать условие но чтото и с соединением у меня не особо получается.
Код:
kt:=k+t;
for i:=1 to kt do
begin
if i<=t then
for j:=1 to m do
begin
c[j,i]:=a[j,i];
end
else
for h:=1 to k do
for j:=1 to m do
begin
c[j,i]:=b[j,h];
end;
end;

Последний раз редактировалось valord; 02.06.2009 в 09:47.
valord вне форума Ответить с цитированием
Старый 02.06.2009, 11:05   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Мне не понравилось это:
Цитата:
Преподаватель упорно запрещает из матриц A и B сначала сделать матрицу С,и после матрицу С сортировать
Иначе код будет неоптимальным.
в принципе можно и как она хочет, но морочно.
Впрочем преподаватели любят стденту на шею хомут повесить...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2009, 11:13   #7
valord
Новичок
Джуниор
 
Регистрация: 01.06.2009
Сообщений: 5
По умолчанию

Да вот я и маюсь с этим морочно ток чтото не получается, а про соединение двух матриц и сортировку уже в последней ей совсем не понравилось говорит нельзя и все тут,если я так сделаю она мне программу не зачтет(
valord вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на двумерные массивы (Паскаль) Proffy69 Помощь студентам 2 17.05.2009 19:01
Двумерные массивы. Паскаль deceiver Помощь студентам 4 11.03.2009 18:28
Два одномерных массива,представляющие собой средние значения строк и столбцов исходного. Делфи 3 <DimonM@n> Помощь студентам 2 23.11.2008 21:51
Как объединить два массива в один. TheWanderer Общие вопросы C/C++ 2 10.11.2008 00:15
два запроса, которые нужно объединить в один. andrianov123 БД в Delphi 4 16.05.2008 16:06