Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 09.05.2023
Сообщений: 1

Напишите функцию, которая сортирует по возрастанию массив целых чисел методом выбора и возвращает отсортированный массив

09.05.2023, 14:31. Показов 866. Ответов 2
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Сигнатура функции:
C++
1
int* SelectionSort(int array[], int size) {}
Вот код (cout и cin нет, т.к. пишу под программу, подставляющие тестовые случаи):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int* SelectionSort(int array[], int size) {
int min = 0; 
int max = 0;
for (int i = 0; i < size; i++)
{
min = i; 
for (int j = i + 1; j < size; j++)
min = ( array[j] < array[min] ) ? j : min;
if (i != min)
{
max = array[i];
array[i] = array[min];
array[min] = max;
}
}
return &array[i];
}
Выдает такую ошибку:
C++
1
2
3
4
__tester__.cpp: In function ‘int* SelectionSort(int*, int):
__tester__.cpp:21:15: error: ‘i’ was not declared in this scope
 return &array[i];
               ^
Пробовал убирать &, показало invalid conversion from ‘int’ to ‘int*’. Как тут дофикситься до рабочей и желательно правильной программы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.05.2023, 14:31
Ответы с готовыми решениями:

Напишите функцию, которая сортирует кортеж, состоящий из целых чисел по возрастанию и возвращает его
Напишите функцию tpl_sort(), которая сортирует кортеж, состоящий из целых чисел по возрастанию и возвращает его. Если хотя бы один элемент...

Написать функцию, которая читает массив из файла, сортирует его указанный методом, записывает отсортированный массив в н
Здравствуйте, помогите, пожалуйста, с выполнением этого задания: Написать функцию, которая читает массив из файла, сортирует его указанный...

Напишите функцию, которая принимает массив из 10 целых чисел (от 0 до 9), который возвращает строку этих чисел в виде но
Напишите функцию, которая принимает массив из 10 целых чисел (от 0 до 9), который возвращает строку этих чисел в виде номера телефона ...

2
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5208 / 2925 / 1509
Регистрация: 14.12.2018
Сообщений: 5,266
Записей в блоге: 1
09.05.2023, 16:14
SomaSwap, можно ли так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
int* SelectionSort(int arr[], int sz) 
{
    for (int i=0; i<sz; i++)
        for (int j=i+1; j<sz; j++)
        if (arr[i]>arr[j])
        {
            int tmp=arr[i];
            arr[i]=arr[j];
            arr[j]=tmp;
        }
    return arr;
}
int main()
{
    const int sz=5;
    int arr[sz]={3,-7,1,-10,6};
    int* b = SelectionSort(arr,sz);
    for (int i=0; i<sz; i++)
        std::cout << b[i] << " ";
    return 0;
}
0
6 / 4 / 2
Регистрация: 19.04.2023
Сообщений: 15
09.05.2023, 18:23
Ошибка "i was not declared in this scope" возникает потому, что переменная "i" объявлена внутри цикла и не видна за его пределами. А возвращаемый указатель на элемент массива указывает на элемент после последнего, что неверно. Также необходимо изменить тип функции на `void`, так как массив будет изменен внутри функции.

Вот исправленный код, который устранит эти проблемы:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void SelectionSort(int array[], int size) {
    int min = 0;
    int max = 0;
    for (int i = 0; i < size - 1; i++) { // Изменяем условие цикла, чтобы внешний цикл проходил по всем элементам, кроме последнего
        min = i;
        for (int j = i + 1; j < size; j++) {
            min = (array[j] < array[min]) ? j : min;
        }
        if (i != min) {
            max = array[i];
            array[i] = array[min];
            array[min] = max;
        }
    }
}

В этой функции мы проходим по массиву и находим минимальный элемент, начиная от текущей позиции `i`, и меняем его местами с текущим элементом, если они не равны. Мы повторяем этот процесс до тех пор, пока не достигнем предпоследнего элемента массива.

Чтобы вызвать эту функцию, вы можете сделать следующее:


C++
1
2
3
4
5
6
7
8
9
int main() {
    int arr[] = {5, 4, 3, 2, 1};
    int size = sizeof(arr) / sizeof(arr[0]);
    SelectionSort(arr, size);
    for (int i = 0; i < size; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}

Этот код будет сортировать массив `arr` методом выбора и выводить отсортированный массив на экран.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2023, 18:23
Помогаю со студенческими работами здесь

Напишите функцию, сортирующую массив по возрастанию методом выбора,и по убыванию методом вставки
первая у меня покамись без функции, нужно изменить. Кому не сложно напишите, ну и вторую тоже с функцией нужно program arrays_11; uses...

Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём
Помогите написать код,спасибо.Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём. ...

Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём
Напишите программу, которая сортирует массив целых чисел и определяет количество различных значений в нём. Входные данные Первая...

Отсортировать по возрастанию массив 10 целых чисел методом выбора
Привет всем, помогите пожалуйста подготовиться к экзамену по информитикы !! 1. Задача. Отсортировать по возрастанию массив 10 целых...

Отсортировать по возрастанию массив 10 целых чисел методом выбора
Опишите алгоритм решения задач на языке программирования C ++. Отсортировать по возрастанию массив 10 целых чисел методом выбора.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru