Помогите добавить условие в функцию [закрыт]

141
30 октября 2019, 21:00

Помогите правильно добавить условие сортировки от 1 найденного четного числа в массиве до последнего, т.е. -3 5 2 11 19 14 10 9 - сортирует от 2 до 10. Язык с++. Метод сортировки выбором.

void choicesSort(int *mas, const int n)
{
    int min = 0;
    int buf = 0;
    for (int i = 0; i < n; i++)
    {
        min = i;
        for (int j = i + 1; j < n; j++)
            min = (mas[j] < mas[min]) ? j : min;
        if (i != min)
        {
            buf = mas[i];
            mas[i] = mas[min];
            mas[min] = buf;
        }
    }
}

Полный код:

#include <Windows.h>
#include <cstdio>
#include <conio.h>
#include <ctime>
#include <cstdlib>
void choicesSort(int*, const int);
void Init_Array(const int, int*, const int, const int);
void Print_Array(const int, const int*);
void Work(int*, int);
void main()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
    system("cls");
    int const max_size = 30, const left = -15, const right = 20;
    int my_array[max_size];
    Init_Array(max_size, my_array, left, right);
    printf("Вхідний масив:\n");
    Print_Array(max_size, my_array);
    printf("\n");
    choicesSort(my_array, max_size);
    printf("Вихідний масив:\n");
    Print_Array(max_size, my_array);
    printf("\n");
    Work(my_array, max_size);
    system("pause");


}
void Init_Array(const int n, int *mas, const int a, const int b)
{
    srand(time(0));
    for (int i = 0;i<n; i++)
        mas[i] = a + rand() % (b - a+1 );
}
void Print_Array(const int n, const int *mas)
{
    for (int i = 0; i < n; i++)
        printf("%3d", mas[i]);
}
void choicesSort(int *mas, const int n)
{
    int min = 0;
    int buf = 0;
    for (int i = 0; i < n; i++)
    {
        min = i;
        for (int j = i + 1; j < n; j++)
            min = (mas[j] < mas[min]) ? j : min;
        if (i != min)
        {
            buf = mas[i];
            mas[i] = mas[min];
            mas[min] = buf;
        }
    }
}
void Work(int *mas, int n)
{
    int i;
    int alph = 0;
    float persent;
    for (int i = 0; i < n; i++)
    {
        if (mas[i] > 0)
            alph++;
    }
    persent = (alph / 30.) * 100.;
    printf("Відсоток чисел які мають додатнє значення: %5.2f %%\n", persent);
}
Answer 1
  1. Найти l - индекс первого чётного элемента
  2. Найти r - индекс последнего чётного элемента
  3. Вызвать choicesSort(mas+l, r-l+1)
READ ALSO
Как определить число букв в массиве?

Как определить число букв в массиве?

Здравствуйте, у меня такая проблемаМне нужно узнать число букв в массиве

135
Класс String. Перегрузка операторов

Класс String. Перегрузка операторов

Помогите найти ошибку в коде

151