Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при простейшей сортировке, Семантическая. 
:(
    Опции темы
Soir
Дата 13.2.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.1.2008

Репутация: нет
Всего: нет



Нахожусь только в начале изучения с++. Решаю задачу по сортировке массива из 5 элементов. Ошибка не в синтаксисе, т.к. MS 2008 Express компилит без возражений, однако прога в процессе выполнения останавливается на определенном этапе.
Код

#include <iostream>
using namespace std;

int main()
{
    int ar[5]={5,4,2,3,1}; //Его и будет сортировать
    for (int i=0; i<5;i++) {cout << ar[i] << endl;} //Выводим начальное состояние массива.
    cout << "____________________";
    
    int i = 0;
    int temp = 0;
    while (i<4) 
    {
        for(int n=4; n>i; n=n-1) 
        {if (ar[i] > ar[n]) {cout << endl << n; temp = ar[i]; ar[i] = ar[n]; ar[n] = temp;}} // вот на этом этапе он и стопорится. В консоли пишет только 4
            
    }
    
    for (int i=0; i<5;i++) {cout << ar[i] << endl;} // Вывод отсортированного массива
    cout << "____________________";
    return 0;

}


В итоге в консоль выводится начальный массив, прочерк и четверка. Не пойму почему, можт кто объяснит?
Заранее спасибо
PM MAIL   Вверх
susanin
Дата 13.2.2008, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



а хотел сделать сортировку методом пузырька?
вобщем как я понимаю такая ошибка...в первом цикле у тебя сранивается 1 и 5...5>1 и поэтому выводится на экран 4...и меняются местами 1 и 5...потом сравниваются 1 и 4...1<4 поэтому ничего не происходит...в последующих циклах 1 сраваниется соответсветнно с 2 , 3...1 всегда меньше поэтому программа завершается...так же не изменяется i.... в условии while(i<4) ....ведь у тебя i=0; а в самом цикле оно не инкрементируется..получается бесконечный цикл
Код

int ar[5]={5,4,2,3,1}; //Его и будет сортировать
    for (int i=0; i<5;i++) {cout << ar[i] << endl;} //Выводим начальное состояние массива.
    cout << "____________________"<<endl;
    
    int i = 0;
    int temp = 0;
    while (i<4) 
    {
        for(int n=4; n>i; n--) 
        {
            if (ar[i] > ar[n]) 
            {
                temp = ar[i]; ar[i] = ar[n]; ar[n] = temp;
            }
        } // вот на этом этапе он и стопорится. В консоли пишет только 4
            i++;//достаточно было сделать то =)
    }
    
    for (int i=0; i<5;i++) {cout << ar[i] << endl;} // Вывод отсортированного массива
    cout << "____________________";
    return 0;


Это сообщение отредактировал(а) susanin - 13.2.2008, 20:36
PM MAIL   Вверх
Soir
Дата 13.2.2008, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 15.1.2008

Репутация: нет
Всего: нет



хз что значит метод пузырька.
Проблема ток что решилась сама... Увидел, что забыл добавить i++. 
PS у кого-то видел фразу: со опытом количество времени с момента, когда говоришь :" Какого черта она не компилится", до момента "Какой же я дурак" сокращается. Минут 30 смотрел на код, не мог увидеть ошибки.
PM MAIL   Вверх
susanin
Дата 13.2.2008, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 587
Регистрация: 7.10.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 7



Soir, смотри в предыдущем посте моем...я подправил...работает теперь...
PM MAIL   Вверх
warmonger_
Дата 14.2.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.7.2007
Где: г. Киев

Репутация: 1
Всего: 3



Цитата(Soir @  13.2.2008,  19:32 Найти цитируемый пост)
хз что значит метод пузырька.

wiki
--------------------
Make everything as simple as possible, but not simpler.Albert Einstein
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0406 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.