caramel14
@caramel14
Всякое разное этакое чажу

Сортировка массива методом прямого выбора не работает. Что делать?

Массив arr вводится с клавиатуры и состоит из a элементов.
//вставка_1//
        //тут мы задаём основые условия: выполнения и переходв //
        for (int starti = 0; starti < a - 1; starti=starti+1)

        {
            //тут мы принимаем навчальное значение за минимальное//
            int mini = starti;
            //тут мы ищем //
            for (int currentIndex = starti + 1; currentIndex < a; currentIndex = currentIndex + 1)
            {
                if (arr[currentIndex] < arr[mini])
                    mini = currentIndex;
            }
            std::swap(arr[starti], arr[mini]);
        }
        for (int i = 0; i < a; i=i+1)
        std::cout << arr[i] << ' ';
        return 0;


Где я допустил ошибку?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
Вот пример с применением vector, ввод работает пока вводятся ЦЕЛЫЕ числа, если например введется число 3.5 то 3 попадет в vector дробная часть отбросится, а также отбросится весь остальной ввод, если даже там есть ЦЕЛЫЕ числа.

#include <iostream>
#include <vector>

int main() {

  std::vector<int> arr;
  int n;

  std::cout << "Enter numbers: ";

  while(std::cin >> n)
    arr.push_back(n);
  
    for (int starti = 0, mini, len = arr.size(); starti < len-1; starti++) {
        // тут мы принимаем начальное значение за минимальное//
        mini = starti;

        // тут мы ищем //
        for (int currentIndex = starti+1; currentIndex < len; currentIndex++) {
            if (arr[currentIndex] < arr[mini])
                mini = currentIndex;
        }

        std::swap(arr[starti], arr[mini]);
    }

    for (int i = 0, len = arr.size(); i < len; i=i+1)
    	std::cout << arr[i] << ' ';
    	
    return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы