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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2013, 21:57   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

А почему бы не брать пузырек для одномерного массива (оформим его ввиде проц) и крутить его для строк?
Poma][a вне форума Ответить с цитированием
Старый 12.07.2013, 22:06   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А почему бы не брать пузырек для одномерного массива (оформим его ввиде проц) и крутить его для строк?
Если я правильно понял Ваше предложение, то этого не хватит. Нужно же не каждую строку отсортировать пузырьком, а все разом, выстроив мысленно все строки массива одну за другой.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.07.2013, 22:09   #13
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

не знаю что вы имеете в виду под словом крутить но разве я не так сделал ?)алгоритм смотрели вы думаю там особый трабл и задротство было при разрыве цикла опять таки если аналогия одномерного -сори не разрыва а просто пропускание каждого последнего элемента. типо так
http://ru.wikipedia.org/wiki/%D0%A1%...BA%D0%BE%D0%BC посмотрите там внизу пример и вы увидите для одномерного массива с каждой последующей итерацией необходимость проверять элементы выше с номером N-i теряется.N тут размер одномерного массива.


Цитата:
i:= 1 to n do
j:=1 to n-i do
это. то на двумерном я постаралься)

BDA,
вот весь код
Код:
var
i,j,z:integer; a:array[1..3,1..4] of integer;
n,x:integer;    check:boolean;
begin   randomize;
for i:=1 to 3 do    
for j:=1 to 4 do
a[i,j]:=random(12);
for n:=1 to 3 do              {n,z это то же что и n*m операций просто ради связи с пунктом (1) чтобы не затрудняться)) }
for z:=1 to 4 do   begin
check:=false;
for i:=1 to 3-n+1 do begin
   for j:=1 to 3 do  begin
  {!! (1) } if (i=3-n+1) and (j>3-z+1) then continue; { это случай где в одномерном по гуглу j=1 to k-i }
     if a[i,j]>a[i,j+1] then begin   check:=true;
      x:=a[i,j]; a[i,j]:=a[i,j+1]; a[i,j+1]:=x; end;
   end;
if (i<>3) {если последняя строка.то после a[3,4] нету a[4,1] например в моем случае чтобы менять их местами вот так --->} and (a[i,4]>a[i+1,1]) then begin
x:=a[i,4]; a[i,4]:= a[i+1,1]; a[i+1,1]:=x; end;
end;
if check=false then break;
end;
writeln;
for i:=1 to 3 do  begin writeln;
for j:=1 to 4 do
write(' ',a[i,j]);
end;
end.
сори за русский у мну не ахти))и трудности с объяснением)

Последний раз редактировалось Тамерлан Абилов; 12.07.2013 в 22:24.
Тамерлан Абилов вне форума Ответить с цитированием
Старый 12.07.2013, 22:49   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Код:
type
	TArr = array [1..100] of Integer;
	Matrix = array [1..100] of TArr;
	
procedure Swap (var a, b : Integer);

var
	t : LongInt;

begin
	t := a;
	a := b;
	b := t;
end;


procedure Sort (var a : TArr; const n : Integer);

var
	i, j : LongInt;

begin
	for i := 1 to n-1 do
		for j := 1 to n-i do
			if a[j] > a[j+1] then
				Swap (a[j], a[j+1]);
end;

var
	n, m, i, j : Integer;
	a : Matrix;
	

begin
	ReadLn (n, m);
	
	for i := 1 to n do
		for j := 1 to m do
			Read (a[i][j]);
			
	for i := 1 to m do
		Sort (a[i], n);
		
	for i := 1 to n do begin
		WriteLn;
		for j := 1 to m do
			Write (a[i, j], ' ')
	end
	
end.
Делает (вроде) то, что хочет ТС..
Poma][a вне форума Ответить с цитированием
Старый 12.07.2013, 23:12   #15
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

Poma][a,массив одномерный а печатаете a[i,j]?
и если не трудно можете объяснить это?ато в первый раз вижу)
Цитата:
Read (a[i][j]);
думаю он сортирует так:
ввод вывод
4 5 2> 2 4 5
7 8 9> 7 8 9
3 5 1> 1 3 5

мб и ошибаюсь но пардон в вашем коде нет признака где есть связь для полной построчной сортировки с каждой строкой или я просто не понимаю.
Тамерлан Абилов вне форума Ответить с цитированием
Старый 12.07.2013, 23:17   #16
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Poma][a:
1) Соглашусь с ТС - сортировка каждой строки отдельно;
2) Вроде напортачили с n и m (в цикле сортировки for i := 1 to n do Sort (a[i], m); ).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 12.07.2013, 23:20   #17
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

я не как не пойму(мой алгоритм не понятен я так понял постараюсь укоротить но думаю врядли получиться с пузырьком устроить что то другое подобное
Тамерлан Абилов вне форума Ответить с цитированием
Старый 12.07.2013, 23:31   #18
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Poma][a,массив одномерный а печатаете a[i,j]?
Не Не одномерный. Получается массив массивов (двухмерный массив).
Цитата:
2) Вроде напортачили с n и m (в цикле сортировки for i := 1 to n do Sort (a[i], m); ).
Ага. Мой косяк.
Цитата:
1) Соглашусь с ТС - сортировка каждой строки отдельно;
Ура. До меня дошел смысл задания!
Poma][a вне форума Ответить с цитированием
Старый 12.07.2013, 23:42   #19
Тамерлан Абилов
Пользователь
 
Регистрация: 03.03.2013
Сообщений: 70
По умолчанию

Poma][a ага теперь ты в теме)
думаю щас ты можешь сказать свое мнение
Тамерлан Абилов вне форума Ответить с цитированием
Старый 13.07.2013, 03:14   #20
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Я пока так и не понял Вашего решения.
Самый простой способ - написать тестирующую программу, которая генерирует случайный массив, делает 2 его копии и "скармливает" 2 процедурам (Ваше и мое решения; можете поискать еще решения этой задачи и также включить в тест), затем сравнивает на совпадения 2 отсортированных массива. Если не совпали, то сохраняем исходный массив и результаты работы процедур, а затем ищем, какая процедура сработала неверно (после теста смотрим лог его работы). Программу-тест можно запустить на полчасика, чтобы она провела пару сотен тысяч тестов. Если она не найдет расхождений, то с 90% вероятностью удастся удачно сдать программу.

Ну это практический путь. Теоретический сложнее - доказать корректность или некорректность решения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как определить наименьший нечетный элемент в двух мерном массиве ВДПУ Помощь студентам 13 27.05.2012 13:35
Добавление флага в алгоритм сортировки способом пузырька (С++) Johnny_Grunge Помощь студентам 0 23.01.2012 21:33
Задача на зачёт. Поиск элементов в 1-мерном массиве oRik24 Помощь студентам 7 16.06.2011 11:04
Алгоритм поиска в массиве elpilasgsm Помощь студентам 10 18.05.2011 17:30