Вопрос по сортировке массива

Всем привет. Недавно начал изучать С++, дошел до урока по массивам и в качестве закрепления материала решил написать программку, которая считывает массив с клавиатуры и сортирует его по возрастанию. В сущности, программа вышла рабочей, но беспокоит один момент — пришлось менять значение переменной-счетчика прямо в теле цикла for. Подскажите, как этого можно избежать? Цикл while в данном случае не рассматривается. Код:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    int i, arr[5], ar2 = 0; //объявление переменной-счетчика, массива и переменной-буфера
    setlocale(0, "");
    cout << "Введите элементы массива" << endl;

    for (i = 0; i < 5; i++)      //цикл ввода данных в массив с клавиатуры
    {
        cout << "[" << i+1 << "] = ";
        cin >> arr[i];
    }

    for (i = 0; i < 4; i++)      //цикл сортировки
    {
        if (arr[i + 1]<arr[i])  
        {
            ar2 = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = ar2;
            if (i != 0)          //проверка, не является ли элемент первым в массиве
            {          
                i -= 2;          //если не является, возвращаемся к предыдущему элементу
            }
        }
    }

    for (i = 0; i < 5; i++)      //цикл вывода результата на экран
    {
        cout << " "  << arr[i];
    }
    cout << endl;
    system("pause");
    return 0;
}

Вашу идею можно реализовать проще

#include <iostream>
using std::cout;
using std::cin;

#include <iomanip>
using std::setw;

const int ARR_SIZE = 5;

int main()
{
    int arr[ARR_SIZE];

    for (int i = 0; i < ARR_SIZE; i++){
        cout << "[" << i + 1 << "]: ";
        cin >> arr[i];
    }

    int temp = 0;

    for (int i = 0; i < ARR_SIZE - 1; i++){
        for (int j = i + 1; j < ARR_SIZE; j++){
            if (arr[i] > arr[j]){
                temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }

    for (int i = 0; i < ARR_SIZE; i++){
        cout << setw(5) << arr[i];
    }
    return 0;
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.