Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 02.01.2011, 16:17   #1 (permalink)
Major_Pain
Новичок
 
Регистрация: 27.12.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Сортировка одномерного массива

Помогите решить задачу на сортировку одномерного массива, надо использовать метод, где надо найти сначало минимум и поставить его на 1 место и ....
задача:Дан массив с (n) . Переписать в мас¬сив х (n) все ненулевые элементы массива Затем упорядочить методом «выбора и перестановки» по возрастанию но¬вый массив

Вот моя версия, я хоть правильно думаю?

program o;const
n=10;
var
c,x:array[1..n] of Integer;
i,l,j,min,n_min,t,buf:integer;
begin
randomize;
for i:=1 to n do
begin
c[i]:=random(10);
write(c[i]);
end;
for i:=1 to n do
begin
for j:=1 to n do
if c[i]<>0 then
x[j]:=c[i];
writeln(x[j]);
end;
min:=100;
for j:=1 to n do
begin
if x[j]<min then
begin
min:=x[j];
n_min:=j;
end;
t:=x[n_min];
x[n_min]:=x[j];
x[j]:=t;
for j:=1 to n do
writeln('x=',x[j]);
end;
end.
Спасибо)
Major_Pain вне форума   Ответить с цитированием

Старый 02.01.2011, 16:17
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

По этим ссылкам содержится нужная вам информация

Сортировка по алфавиту
Сортировка по алфавиту(помогите)
Сортировка в Паскале
Сортировка в Pascal
Сортировка одномерного массива-метод выбора и перестановки

Старый 02.01.2011, 16:50   #2 (permalink)
shrek=)
Студент БГПУ
 
Аватар для shrek=)
 
Регистрация: 06.02.2010
Сообщений: 420
Записей в дневнике: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 470
По умолчанию

Программа может выглядеть вот так, использована сортировка выбором
Код:
const
n=10;
var
c,x:array[1..n] of Integer;
i,l,k,j:integer;
begin
randomize;
for i:=1 to n do
begin
c[i]:=random(10);
write(c[i],' ');
end;
writeln ('Исходный массив');
writeln;
for i:=1 to n do begin
if c[i]>0 then
x[i]:=c[i];
write(x[i],' ');
end;
writeln ('Новый массив X');
writeln;
writeln ('Отсортированный массив');
for i:=1 to n-1 do begin
l:=i;
for j:=i+1 to n do
if x[j]<x[l] then
l:=j;
k:=x[i];
x[i]:=x[l];
x[l]:=k;
end;
for i:=1 to n do
write (x[i],' ' );
readln 
end.
shrek=) вне форума   Ответить с цитированием
Старый 03.01.2011, 13:17   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Не моё, конечно, собачье дело, но так, вскользь... Касательно формирования массива Х.

В варианте от Major_Pain:
Цитата:
for i:=1 to n do
begin
for j:=1 to n do
if c[i]<>0 then
x[j]:=c[i];
writeln(x[j]);
end;
массив Х будет весь заполнен значением последнего ненулевого элемента массива С.

В варианте Shrek'а:
Цитата:
for i:=1 to n do begin
if c[i]>0 then
x[i]:=c[i];
write(x[i],' ');
end;
оба массива (Х и С) окажутся в итоге просто тождественными и никакого отбора не произойдет, потому что по умолчанию, как правило, объявленным переменным, включая элементы массивов, присваиваются нулевые значения.

Я уже давал полностью отлаженный вариант решения задачи: Сортировка одномерного массива-метод выбора и перестановки , но, поскольку это решение было проигнорировано и задача выложена повторно, я заключаю, что ко мне доверия нет. Ну ладно, как говорится, "насильно мил не будешь". Дело ваше.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:00.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.