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

Использовать алгоритм простой выборки для сортировки массива

04.11.2018, 21:12. Показов 1579. Ответов 0

Author24 — интернет-сервис помощи студентам
Задание: Пусть для целого n>1 функция f(n) равна наименьшему делителю числа n, большему 1. Дан одномерный массив. Упорядочить элементы массива аrr по возрастанию в соответствии со следующим критерием: элемент x считается "большим" элемента y, если f(x) > f(y). Использовать алгоритм простого выбора.

Сделал я код, но есть одна проблема. Вот, например, результат для введённых чисел 4, 7, 6:
-858993460 6 7
И такое минусовое число в начале всегда, а так всё нормально.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "stdafx.h"
#include <iostream> 
using namespace std;
int F(int number)
{
    int i; 
    for (i = 2; i < number; i++)
    {
        if (number % i == 0)
            return i;
    }
    return number;
}
int main()
{
    setlocale(LC_ALL, "Russian");
    const  int n = 3;
    int arr[n],i,x;
    for (i = 0; i < n; i++)
    {
        cout << "Введите элемент массива " << i << ":";
        cin >> arr[i];
    }
    for (i = 0; i < n; i++)
    {
        cout << arr[i] << ' ' << F(arr[i]) << endl;
    }
    for (i = 1; i < n; i++)
    {
        for (int j = i + 1; j <= n; j++)
        {
            if (F(arr[i])>F(arr[j]))
            {
                x = arr[i];
                arr[i] = arr[j];
                arr[j] = x;
            }
        }
    }
    for (i = 1; i <= n; i++)
    {
        cout << arr[i] << ' ';
    }
    system("pause");
    return 0;
}
Добавлено через 22 минуты
Нашел ошибки , исправил, но не помогло.
В строке
В строке 28 и 40 i=0.

Добавлено через 30 минут
Проблема решена. Происходил вылет за границы массива.
Нужно исправить все i<=n на i<n, а все i<n на i<n-1.
Теперь надо прикрутить рандомное задание n.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2018, 21:12
Ответы с готовыми решениями:

Написать программы для сортировки массива по возрастанию методом выборки и нарисовать блок-схему
Написать программы для сортировки массива по возрастанию методом выборки и нарисовать блок-схему.

Как правильно использовать sort() для сортировки массива?
Хочу отсортировать массив char ch, можно ли это сделать с помощью стандартной библиотеки или...

Не получается переделать простой алгоритм сортировки
Дана запись,каждой записи мы присаваиваем 3 числа. Данный алгоритм выводит записи в которых...

Подскажите простой алгоритм сортировки вектора из строк...
Подскажите простой алгоритм сортировки вектора из строк...

0
04.11.2018, 21:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2018, 21:12
Помогаю со студенческими работами здесь

Как использовать .sort() для сортировки массива объектов по определенному свойству?
Как использовать .sort() для сортировки массива объектов по определенному общему свойству?

Алгоритм сортировки выбором данных: простой выбор, пирамидальная сортировка
Помогите кто нить !)) мот у кого есть какие нить исходники?) я там и сам доделаю. начало просто...

Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива
Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного...

Реализуйте алгоритм сортировки для массива, содержащего указатели на объекты-множества целых чисел
Помогите сделать лабу, Я даже не знаю с чего начинать. Пользователь вводит в программу...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru