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

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

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

 
 Ответить  Открыть новую тему 
> Вывод массива, Вывод массива в порядке возрастания
сообщение
Сообщение #1


Новичок
*

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

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


Здрасти!!! Я здесь человек новый, но вы меня пожалуйста не игнаируете! Я самостоятель учусь программировать на Паскале. По учебникам... У меня возникла проблема. Надо написать программу которая читает массив чисел, а потом выводит в парядке возрастания. При этом сортировку мы ещё не учили. Помогите!! Мучиюсь уже неделю!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, то, что вы не учили сортировку, не значит, что без нее тут можно обойтись... В любом случае - тебе надо СОРТИРОВАТЬ массив по возрастанию, так?

Здесь: FAQ: Методы сортировок
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


В том-то и дело монимаете что я просмотрел весь учебник и там через несколько уроков приводится алгоритм пузырьковой сортировки. Но это только через несколько уроков. А так как учебник хороший (может кто знает Уроки от Дмитриева Эдуарда) и я немогу поверить что нет никакого другого решения. Я вот тут одну фишку придумал... Может конечно бред, но всё же..... Если числа вводить из какого-то определённого промежутка, например от 1 до 100? А массив у нас типа integer. Тогда ищем в массиве минимальный элемент, выводим его на экран, а потом значение этого элемента увеличиваем на 100 и снова ищем мин элемент. Как мне кажется таким способом можно вывести этот массив в порядке возрастания, не сортируя его. Если кто считает что я не прав объясните в чем. Если же мой алгаритм имеет место быть подскажите как его реализовать!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


Твой алгоритм верен, хотя и немного глуповат smile.gif... Только давай мы будем не прибавлять 100, а устанавливать в данный элемент значение MaxInt wink.gif. Если, конечно, ты уверен, что таких больших чисел введено не будет, и твой массив впоследствии не будет нужен. Определи количество элементов в массиве - этот показатель будет основой счетчика for.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Если не использовать второго массива , то значения элементов исходного массива изменяться(в твоем случае на +100).Если использовать второй массив, то это уже первый массив в отсортированном виде записанный во второй массив.

Сообщение отредактировано: RaV -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Извиняюсь за тупой вопрос но я с этим ещё не сталкивался. Как присваивать MaxInt и надо ли её объявлять?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Можно добавить массив из булевых значений, тогда можно решить задачу.
MaxInt является предопределенной константой (MaxInt=32 767).Объявлять её не надо.;
А использовать его вот так: a[i]:=maxInt;

Сообщение отредактировано: RaV -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

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

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


Понимаете, ребят. я присваиваю MaxInt элементу массива М М[Min], но почему-то
минимальный у меня всегда один и тот же. Что я не так делаю?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Пионер
**

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

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


Код
var a:array[1..10]of integer;
i,j,n:integer;
begin
writeln('размерность массива');
readln(n);
for i:=1 to n do readln(a[i]);

for i:=1 to n do
for j:=1 to n do
if (a[i]>a[j]) and (i<j) then
begin {прога просто сравнивает разные
элементы массива с учетом их порядка}
a[i]:=a[i]+a[j];
a[j]:=a[i]-a[j];
a[i]:=a[i]-a[j];
end;
for i:=1 to n do  writeln(a[i]);
end.


примерно так выглядит самая простая для понимания и объяснения сортировка, что-то похожее нам и писала учительница на доске (когда-то давно...)

Цитата
a[i]:=a[i]+a[j];
a[j]:=a[i]-a[j];
a[i]:=a[i]-a[j];

это просто перестановка двух переменных без использования третьей...

PS/насколько я понимаю, автору темы и нужен примерно такой алгоритм, так что вот...

Сообщение отредактировано: zZz -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Пионер
**

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

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


Прикольно, я в своё время до такого не додумался. Пришлось пузырьковую сортировку разбирать.
А парень сам почти до неё добрался.
Можно чуть усложнить, и будет почти как "пузырёк"
1. найти в массиве 1..n минимальный элемент.
2. поменять минимальный элемент с первым (это чтобы второй массив не заводить)
3. теперь "укоротить" массив на единицу и искать минимальный уже в диапазоне 2..n
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


Алексей_Рыженко, Покажи свой код
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

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

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


Program DomZadUr12;

var

M : Array [1 .. 10] of integer;

J,I : Byte;

MIN : integer;

begin

For I := 1 to 10 do

begin

Write('‚ўҐ¤ЁвҐ зЁб«® N',I,': ');

Readln(M[I]);

end;

For J := 1 to 10 do

begin

M[MIN] := M[1];

For I := 1 to 10 do

begin

If M[I] < M[MIN] then M[MIN] := M[I];

end;

Write(M[MIN],' ');

M[MIN] := MaxInt;

end;

Readln;

end.

Тегами пользуемся!

Сообщение отредактировано: volvo -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


Program DomZadUr12;

var

M : Array [1 .. 10] of integer;

J,I : Byte;

MIN : integer;

begin

For I := 1 to 10 do

begin

Write('‚ўҐ¤ЁвҐ зЁб«® N',I,': ');

Readln(M[I]);

end;

For J := 1 to 10 do

begin

MIN := M[1]; {<---изменено M[MIN] на MIN}

For I := 1 to 10 do

begin

If M[I] < MIN then MIN := M[I];

end;

Write(MIN,' ');

for i:=1 to 10 do if MIN=M[i] then m[i]:=maxint;{<---- Изменено M[MIN]:=MaxInt на эту строку}

end;

Readln;

end.



Сравни со воей программой, какие сделаны изменения.
Файл с кодомПрикрепленный файл  123.txt ( 421 байт ) Кол-во скачиваний: 206
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






RaV, если тебе доставляет удовольствие делать в программах лишние и никому не нужные циклы - тогда, боюсь, ты ошибся ресурсом...

Все гораздо проще:

{ ... } { Ввод массива }

For J := 1 to 10 do begin

min := 1; { <--- Работаем с индексами... }
For I := 1 to 10 do begin
if M[i] < M[min] then min := i;
end;

Write(M[min],' ');
M[min] := maxint; { <--- А это - вместо твоего цикла ...}

end;
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Всё работает! Спасибо, ребята, выручили!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 




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