23.12.2012, 16:14 | #1 (permalink) |
Новичок
Регистрация: 23.12.2012
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Сортировка массива
program sort_2; const n=10; var x: array [1..n] of real; y: array [1..n] of real; k,i,j,n_min: integer; min,temp: real; begin writeln('Массив Х'); randomize; for i:=1 to n do begin x[i]:=random(100)-50; write(x[i]:4:0); end; writeln; writeln('Массив Y'); k:=1; for i:=1 to n do begin if x[i]>3 then begin y[k]:=x[i]; write('b[',k,']=',y[k],' '); k:=k+1; end; end; writeln; //------------------------------------ for j:=1 to n do begin min:=1000; for i:=j to n do begin if y[i]<min then begin min:=y[i]; n_min:=i; end; end; temp:=y[n_min]; y[n_min]:=y[j]; y[j]:=temp; end; writeln('после сортировки'); for i:=1 to n do write(' ',y[i]); writeln end. Результат: Массив Х -25 -24 -37 45 -25 -4 3 -17 42 26 Массив Y b[1]=45 b[2]=42 b[3]=26 после сортировки 0 0 0 0 0 0 0 26 42 45 |
23.12.2012, 16:14 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
На форуме найдены следующие темы, которые имеют схожее содержание с вашей темой Сортировка на C# Сортировка в Vista Сортировка по алфавиту |
23.12.2012, 17:26 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да... опять на те же грабли.
Прежде всего, необходимо зафиксировать длину нового массива Y. В том варианте, который предложил я, она равна k, в Вашем варианте это k-1. В следующей части программы всюду вместо n нужно поставить k-1. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|