Помощь - Поиск - Пользователи - Календарь
Полная версия: Сортировка символьного массива по числ. значениям
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
natka
Дан одномерный массив, каждый элемент которого является строкой, состоящий из одних цифр. Упорядочить массив в порядке убывания их числовых значений.
После стандартного упорядочивания массива получается, например, такое: 567, 45, 345, 1111, т.е. массив упорядочивается как строковые данные, а не как числовые. Что можно сделать?
мисс_граффити
пользоваться ф-цией val
klem4
Именно туда, в FAQ, тебе и надо, он пишется не для красоты : Функции для работы с символьными данными
volvo
Чтобы массив упорядочивался как числовые данные, нужно:
1) или массив сделать числовым
2) или при сравнении элементов массива делать так:
Function ConvToInt(s: String): Integer;
Var V, Err: Integer;
begin
Val(S, V, Err);
ConvToInt := V; { Возвращаем число, хранящееся в строке }
end;

{ Кусок сортировки пузырьком }
If ConvToInt(ar[Pred(j)]) > ConvToInt(ar[j]) Then { Сравниваешь числовые значения }
Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T { А перемещаешь - строковые }
End


To мисс_граффити:
Если уж Вы, уважаемая, отвечаете, то я попрошу НЕ отвесать одним словом, а хотя бы дать идею программы. Это понятно? Вам самой такой ответ бы понравился? mad.gif

klem4, тебя это тоже касается! Ты хорошо подумал? Вот попробуй БЕЗ написания своей функции сделать то же, что сделал я, НЕ усложняя программу...

"Никогда не опережай действием мысль!" (С) "Диверсант"...
natka
Спасибо большое, все понятно ;-)
мисс_граффити
Цитата(volvo @ 19.02.2006 13:59) *

To мисс_граффити:
Если уж Вы, уважаемая, отвечаете, то я попрошу НЕ отвесать одним словом, а хотя бы дать идею программы. Это понятно? Вам самой такой ответ бы понравился? mad.gif

я обычно задаю конкретные вопросы, на которые односложного ответа вполне хватает.

идею программы?
стандартная сортировка, примеров которой море. если воспользоваться поиском...
klem4
Цитата
Вот попробуй БЕЗ написания своей функции сделать то же, что сделал я, НЕ усложняя программу...


val(s[i], _pred, e);
val(s[succ(i)], _succ, e);
if _pred > _succ then // {меняем местами arr[i], arr[succ(i)]}

?
no online order prescription via
Propecia Side Effects Custom
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.