IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Сортировка по неубыванию
Tribunal
сообщение 6.06.2006 4:55
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


нужно отсортировать нечетные элементы массива по неубыванию методом выбора...
вот получившаяся программа...но что-то не так...только что?посмотрите,пожалуйста...

var
mas:array [1..20] of integer;
i,n,k:byte;

function GetMin (i1,i2:integer):integer;
var
j,min,jmin:integer;
begin
min:=mas[i1];
jmin:=i1;
for j:=i1+1 to i2 do
if mas[j]<min then begin
min:=mas[j];
jmin:=j;
end;
GetMin:=jmin;
end;

procedure change (i1,i2:integer);
var
i,t:integer;
begin
for i:=1 to n do
begin
t:=mas[i1];
mas[i1]:=mas[i2];
mas[i2]:=t;
end;
end;

begin
writeln('::: Sortirovka po neubivaniyu metodom vibora :::');
write('Vvedite kol-vo elementov v massive ');read(n);
writeln('Ishodniy massiv:');
randomize;
for i:=1 to n do
begin
mas[i]:=random(10)-10;
write(mas[i],' ');
end;
writeln;

for i:=1 to n-1 do
begin
k:=GetMin(i,n);
if (k<>i) and ((mas[k] mod 2)<>0) then
change(k,i);
end;

writeln('Otsortirovanniy massiv:');
for i:=1 to n do
write(mas[i],' ');
end.


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Romtek
сообщение 6.06.2006 12:38
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


Теперь сортирует.
Выставь ещё readln; smile.gif

Только не пойму куда делись чётные элементы. Их в расчёт не надо брать?


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tribunal
сообщение 6.06.2006 12:48
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 233
Пол: Женский
Реальное имя: Dasha

Репутация: -  0  +


Цитата(Romtek @ 6.06.2006 19:38) *

Теперь сортирует.
Выставь ещё readln; smile.gif

Только не пойму куда делись чётные элементы. Их в расчёт не надо брать?

=)

честно говоря,даже не знаю....
в задании сказано:отсортировать по неубыванию нечетные элементы массива

Сообщение отредактировано: Tribunal - 6.06.2006 12:52


--------------------
irreparabilium felix olivio rerum
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.06.2006 16:14
Сообщение #4


Гость






Цитата(Tribunal @ 6.06.2006 12:48)
в задании сказано:отсортировать по неубыванию нечетные элементы массива

yes2.gif А четные должны остаться на местах... Вот так, например (я оставил твой вывод ТОЛЬКО нечетных элементов, чтоб было легче контролировать результаты, хотя в принципе массив M здесь вообще не нужен...)
var
mas,m:array [1..20] of integer;
i,n,k,j,t:byte;
min:integer;
begin
writeln('::: Sortirovka massiva po neubivaniyu :::');
write('Vvedite kol-vo elementov v massive do 20 :');read(n);

writeln('Ishodniy massiv:');
randomize;
for i:=1 to n do
begin
mas[i]:=random(10)-10;
write(mas[i],' ');
end;
writeln;

writeln('Massiv nechetnix chisel:');
j:=0;
for i:=1 to n do
if (mas[i] mod 2)<>0
then begin
inc(j);
m[j]:=mas[i];
write(m[j],' ');
end;
t:=j;
writeln;

i:=1;
repeat
if odd(abs(mas[i])) then begin
min:=mas[i];
k:=i; j:=i;
repeat
if odd(abs(mas[j])) and (min>mas[j]) then begin
min:=mas[j]; k:=j;
end;
inc(j);
until j>n;
mas[k]:=mas[i];
mas[i]:=min;
end;
inc(i);
until i>n;


writeln('Otsortirovanniy massiv:');
for i:=1 to n do write(mas[i],' ');
writeln; readln;
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Tribunal   Сортировка по неубыванию   6.06.2006 4:55
Tribunal   вооот...алгоритм сортировки по-другому соорудила.....   6.06.2006 5:47
Tribunal   =( ну в чем же ошибка? помогите...никак не разберу...   6.06.2006 12:01
Tribunal   нечетность теперь проверяю в другом месте.... алго...   6.06.2006 12:15
Malice   until j<=t; until i<=t; В until ст...   6.06.2006 12:20
Tribunal   В until ставится условие [b]выхода из цикла, в св...   6.06.2006 12:27
Romtek   Ты сначала покажи сортировку массива выборомдля вс...   6.06.2006 12:16
Tribunal   Ты сначала покажи сортировку массива выборомдля в...   6.06.2006 12:18
volvo   Tribunal, Нет... Так не пойдет. Ты приведи ПОЛНУЮ,...   6.06.2006 12:23
Romtek   Теперь сортирует. Выставь ещё readln; :) Только ...   6.06.2006 12:38
Tribunal   Теперь сортирует. Выставь ещё readln; :) Только...   6.06.2006 12:48
volvo   в задании сказано:отсортировать по неубыванию нече...   6.06.2006 16:14
volvo   Задаться вопросом "А почему он не срабатывает...   6.06.2006 12:41
Romtek   При сортировке всё равно надо их учитывать, а сорт...   6.06.2006 13:21
Tribunal   логично)... спасибо... :)   7.06.2006 15:47


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 18:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"