Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 22:08   #1
kametto
Пользователь
 
Аватар для kametto
 
Регистрация: 28.12.2011
Сообщений: 12
По умолчанию не могу отсортировать одномерный массив

я что то не могу сообразить. помогите пожалуйста отсортировать одномерный массив "ST" размерности i+1 по убыванию. ,,
kametto вне форума Ответить с цитированием
Старый 17.04.2012, 22:15   #2
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

метод сортировки какой?
Код:
//можно так
for i := 1 to n -1 do
  for j := i + 1 to n do
    if a[i] < a[j] then
    begin
      a[i] := a[i] xor a[j];
      a[j] := a[i] xor a[j];
      a[i] := a[i] xor a[j];
    end;

//можно так
repeat
  isSwap := false;
  for i := 1 to n - 1 do
    if a[i] < a[i+1] then
    begin
      a[i] := a[i] xor a[i+1];
      a[i+1] := a[i] xor a[i+1];
      a[i] := a[i] xor a[i+1];
    end;
until isSwap = false;
щя ещё вспомню как
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 22:17   #3
kametto
Пользователь
 
Аватар для kametto
 
Регистрация: 28.12.2011
Сообщений: 12
По умолчанию

а ничего что размерность не n а i+1?

Код:
begin
 SetLength(st,i+1);
 k:=pos(' ',s);
 st[i]:=(copy(s,1,k-1));
 delete(s,1,k);
 k:=pos(' ',s);
 i:=i+1;
 end;
   begin
    for j:=1 to i  do
    for p:=j+1   to i+1 do
     if st[j]<st[p-1] then
        begin
        v:=st[j];
        st[j]:=st[p-1];
        st[p-1]:=v;
        end;

        for j:=0 to i-1 do
        begin
        s2:=s2+' '+st[j];
        end;
я сделала так но там одна цифра постояянно выскакивает вперед. что тот неправильно

Последний раз редактировалось Stilet; 18.04.2012 в 08:20.
kametto вне форума Ответить с цитированием
Старый 17.04.2012, 22:22   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

дак у вас же динамика индексация другая
вот
подправлена сортировка
Код:
for j:=0 to i - 2 do
for p:=j+1 to i - 1 do
if st[j]<st[p] then
begin
v:=st[j];
st[j]:=st[p];
st[p]:=v;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 22:26   #5
kametto
Пользователь
 
Аватар для kametto
 
Регистрация: 28.12.2011
Сообщений: 12
По умолчанию

все равно что то не работает. мне нужно остортировать числа 6 15 75 74. а оно выбивает 75 74 6 15
kametto вне форума Ответить с цитированием
Старый 17.04.2012, 22:30   #6
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну так это потому что мы строки сортируем!так и будет помоему
так как код 6 больше кода 1 поэтому 6 больше 15
(хотя там сравнение длины ещё должно быть... хм.)
Ну попробуйте списывать это не в массив строк
а в массив чисел!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 22:34   #7
kametto
Пользователь
 
Аватар для kametto
 
Регистрация: 28.12.2011
Сообщений: 12
По умолчанию

так, у меня есть массив строк с этими четырьмя элементами, сама лаборатрная о работе с файлами. мне нужно открыть файл взять из него числа для массива. после этого у меня есть просто массив строк и отсортировать числа по убыванию.надо чтобы 6 было в конце)
kametto вне форума Ответить с цитированием
Старый 17.04.2012, 22:37   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

так перевиде же эти строки в числа! и работайте с ними как с числами
КОРОЧЕ Вот так
Код:
for j:=0 to i - 2 do
for p:=j+1 to i - 1 do
if StrToInt(st[j])<StrToInt(st[p]) then
begin
v:=st[j];
st[j]:=st[p];
st[p]:=v;
end;
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 17.04.2012, 22:50   #9
kametto
Пользователь
 
Аватар для kametto
 
Регистрация: 28.12.2011
Сообщений: 12
По умолчанию

Огромной спасибо!!! все получилось!!!!!!!! только можешь мне подробнее обьяснить чем масси строк отличается от обычного?
kametto вне форума Ответить с цитированием
Старый 17.04.2012, 22:54   #10
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

тем что строки это не числа(если вы про них)
числа сравниваются по их значению
строки как бе тоже
НО сравниваются строки посимвольно
по кодам символов!
ВОт и получается что 6 больше 15 так как
код 6 это 52 а код 1 это 49
Как - то так!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из N целых чисел. Получить из него массив чисел по модулю меньших 10 и отсортировать его(язык си++) mitja-zakelidis Помощь студентам 2 15.03.2012 03:10
отсортировать одномерный массив 0kcanka Помощь студентам 1 11.05.2011 10:35
Одномерный массив,не могу понять echelone Общие вопросы C/C++ 8 21.03.2011 16:02
Не могу найти ошибку.. одномерный массив, убывающая последовательность Malloperro Помощь студентам 1 23.12.2010 21:15
СРОЧно нужна помощь(одномерный массив)СРОЧНО, МОГУ заплатить. warsong Фриланс 12 11.01.2010 20:30