2012-10-29 2 views
0

Im пытается реализовать сортировку пузырьков с компактными указателями. Рода, кажется, только сортировать первые два, а затем происходит сбой при попытке использовать драйвер DisplayValues ​​предоставленный преподавателемC++ bubble sort compact Указатели

float *Sort(float *first, size_t elements) 
{ 
    { 
     for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next) 
     { 
       didSwap = 1; 
      } 
     } 
     --last; 
    } 
    while (didSwap); 

    return first; 
} 
+0

Похоже, что тест и сортировка используют разные направления сортировки. Тем не менее, что это за «компактные указатели» и «первые два»? В основном этот вопрос не имеет смысла. –

+1

Теперь позвольте мне угадать, я думаю, ваш профессор был программистом на C, прежде чем он узнал о минимально возможном C++, с которым он мог бы уйти. Я уверен, что вы класс очень хорош, но, пожалуйста, не думайте, что вы изучаете C++ здесь. – john

+1

'while (didSwap);' - намеренно? – Damon

ответ

1

Это довольно просто, процедура профессора ожидает массив, чтобы быть в порядке убывания. Ваш код выглядит правильно для меня, но он сортируется по возрастанию.

У вашего профессора есть недоразумение о том, как работает . Это должно быть

cout << setiosflags(ios_base::fixed); 

установить флаги на потоке cout. У каждого потока есть свои собственные флаги, у вашего профессора создается впечатление, что существует один глобальный набор флагов. Такая же ошибка для resetiosflags.

0

Не должно быть «делать», чтобы сделать «делать {...} в то время как блок?

float *Sort(float *first, size_t elements) 
{ 
    do 
    { 
     for (didSwap = 0, current = first, next = first + 1; current < last; ++current, ++next) 
     { 
      didSwap = 1; 
     } 

     --last; 
    } 
    while (didSwap); 
}