2013-06-13 4 views
0

Извините за то, что открыла еще одну тему, прежде чем я разрешил свою другую проблему. Этот вопрос больше. Я не знаю, поймет ли кто-нибудь мой код, потому что я перевел его на английский. Программа работает как список заказов из Интернета или что-то в этом роде. Вы можете добавлять заказы, удалять их, сортировать по идентификатору или дате, вы можете их сохранять и загружать. Сортировка по дате - моя проблема. Например, я добавляю такие даты, как 2013, 2011 и 2012 годы. Когда я пытаюсь их сортировать, ничего не происходит, они остаются в том же порядке. Если кто-то понимает этот вопрос, скажите мне, в чем проблема? Это школьный проект, и я должен его исправить до завтра. Может ли кто-нибудь помочь мне с этим?Сортировка по дате выпуска

// according = 1 (Date) 2 = (Price) 
void sort(int accor) 
{ 
    int i,j,replace=0; 
    ORDER *Pom; 

    for(i=0;i<Piece-1;i++){ 
     for(j=0;j<Piece-1;j++){ 
      if(according == 1){ 
       if(strcmp(Item[j]->Date, Item[j+1]->Date) > 0) 
        replace = 1; 
       else 
        replace = 0; 
      }else if(according == 2){ 
       if(Item[j]->Price > Item[j+1]->Price) 
        replace = 1; 
       else 
        replace = 0; 
      } 
      if(replace){ 
       Pom = Item[j]; 
       Item[j] = Item[j+1]; 
       Item[j+1] = Pom; 
      } 
+0

Несовершеннолетний придираться: 'Пункт [J +] -> date' должен быть' Item [J + 1 ] -> date'. – user2448027

+0

Попробуйте использовать 'i' вместо' j + 1' и перед заменой элементов проверьте, что 'i' не равно' j'. Надеюсь, это поможет. – user2448027

+0

Какой тип 'Item []'? Массив 'ORDER *'? –

ответ

0

Изменение петли, чтобы быть похожим на следующее:

for (i = (Piece - 1); i > 0; i--) 
{ 
    for (j = 1; j <= i; j++) 
    { 
    // compare and swap 
    } 
} 

Источник: http://www.algorithmist.com/index.php/Bubble_sort.c

+0

Я тоже пробовал это решение, но это не сработало. j-1 исправил проблему с датой, но идентификатор проблемы теперь, он все время сработает – eduroam

+0

@eduroam. Вы также заменили 'j + 1' на' j-1' в той части, где вы сортируете по ID? Причина сбоя, вероятно, в том, что некоторый индекс массива выходит за пределы, т. Е. Меньше 0 и больше размера-1. – user2448027

Смежные вопросы