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

сортировать массив от одного найденного элемента до другого найденного элемента

04.10.2013, 00:38. Показов 1995. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сортировать массив от одного найденного элемента до другого найденного элемента

В моей задаче необходимо найти самое крайнее левое отрицательное число массива и самое крайнее правое отрицательное число и отсортировать числа между ними

Числа я нахожу , а вот как сортировать от нужных элементов массива не знаю

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
template <typename T>
void searchElem(T a[], int size){
    T min=0,min2=0,temp;
    for(int i=0; i<size;i++){
        if(a[i]<0 && min==0)
            min=a[i];
    for(int j=size-1;j>0;j--)
        if(a[j]<0 && min2==0){
            min2=a[j];
        }   // Мой неправильный вариант сорт от мин числа до мин числа
        if(a[min2-1]>a[min]){
            temp=a[ min-1];
            a[min-1]=a[min];
            a[min]=temp;
        }
    }
 
 void main(){
    srand(time(NULL));
    const int size=10;
     int ar[size];
    for(int i=0; i<size;i++){
        ar[i]=rand()%40-20;
        cout<<ar[i]<<"\t";
    }
    cout<<endl;
    searchElem(ar,size);
        for(int i=0; i<size;i++)
        cout<<ar[i]<<"\t";
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2013, 00:38
Ответы с готовыми решениями:

Как правильно словить исключение не найденного элемента
Доброго вечера! Не могу вьехать, как правильно словить исключение не найденного элемента: string ToDelete = View.DeleteProduct();...

Записать два элемента одного массива, как один элемент другого
Здравствуйте) есть такое задание: нужно составить таблицу истинности(дискретная математика). И в процессе выполнения нужно записать...

Найти отношение минимального элемента к сумме элементов расположенных до найденного минимального элемента
Помогите пожалуйста с задачей?!.... Задан одномерный массив,состоящий из 26 чисел. 1.Найти номер минимального элемента массива ...

6
 Аватар для HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 00:56
ну для начала поиск обоих минимумов надо засунуть в один цикл. Потом отсортировав индексы минимумов в другом цикле осуществлять сортировку. Это если в лоб

Добавлено через 2 минуты
Более того. Сначала у вас с минимумы заносится значения элементов, а потом вы вдруг минимумы используете как индексы элементов а не значение элементов.
0
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
04.10.2013, 01:09  [ТС]
не получиться в одном цикле мне надо искать мин числа с левой стороны и с правой
0
 Аватар для HedgehogLu
147 / 82 / 10
Регистрация: 04.09.2013
Сообщений: 261
04.10.2013, 01:42
ну почему же не получится.
C++
1
2
3
4
5
6
7
8
9
10
...
for(int i=0; i<size;i++)
{
  if(a[i]<0)
  { 
    min2=a[i];
    if(!min) min=a[i]
  } 
}
...
Тока это код для нахождения самих минимумов а не индексов элементов содержащих эти минимумы
1
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
04.10.2013, 01:59  [ТС]
Да уж
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
04.10.2013, 02:53
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
#include <iostream>
#include <array>
#include <algorithm>
#include <iterator>
#include <random>
#include <cstddef>
 
bool isNegative(const int x)
{
    return x < 0;
}
 
int main()
{
    const std::size_t N = 50;
    std::array<int, N> a;
    std::mt19937 gen {std::random_device()() };
    std::uniform_int_distribution<int> uid(-99, 99);
    std::generate(a.begin(), a.end(), [&uid, &gen]() -> int { return uid(gen); } );
    auto print_a = [](const std::array<int, N> &p)
    {
        std::copy(p.cbegin(), p.cend(), std::ostream_iterator<int>(std::cout, " ") );
        std::cout << std::endl;
    };
 
    std::cout << "Before: ";
    print_a(a);
 
    auto it1 = std::find_if(a.begin(), a.end(), isNegative),
         it2 (std::find_if(a.rbegin(), a.rend(), isNegative).base());
    if (it1 != a.end() && ++it1 != a.end() && it1 != it2)
        std::sort(it1, --it2);
 
    std::cout << "After:  ";
    print_a(a);
}
1
4 / 4 / 3
Регистрация: 23.10.2012
Сообщений: 233
04.10.2013, 20:52  [ТС]
MrGluck, Спасибо конечно но для меня сложно.....

Решил как мог , верней как мог так и решил, может кому то пригодится
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
    template <typename T>
void searchElem_Sort(T a[], int size){
    T Rightmin=0,Leftmin=0,temp,rightInd,leftInd;
    for(int i=0; i<size;i++){
        if(a[i]<0){               // поиск самого правого минимального
            Rightmin=a[i];  // индекс  самого правого минимального
            rightInd=i;
        if(!Leftmin){           // поиск самого левого минимального
            Leftmin=a[i];
            leftInd=i;       // индекс самого левого минимального
        }
        }
    }
    cout<<Leftmin<<" "<<leftInd<<"\t"<<Rightmin<<" "<<rightInd<<endl;
    cout<<endl;
        for(int i=leftInd; i<rightInd;i++){  // сортировка всех чисел по возраст от лев мин до прав мин
            for(int j=rightInd;j>i;j--)
        if(a[j-1]>a[j]){
            temp=a[j-1];
            a[j-1]=a[j];
            a[j]=temp;
        }
}
}
void main(){
    srand(time(NULL));
    const int size=10;
     int ar[size];
     int ar2[size];
    for(int i=0; i<size;i++){
        ar[i]=rand()%40-20;
        cout<<ar[i]<<"\t";
    }
    cout<<endl;
    searchElem_Sort(ar,size);
        for(int i=0; i<size;i++)
        cout<<ar[i]<<"\t";
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.10.2013, 20:52
Помогаю со студенческими работами здесь

Двоичный поиск с вставкой не найденного элемента
В таблице элементов (Двухмерный массив) выполнить поиск двух элементов (один элемент в таблице есть, а другой отсутствует). При нахождении...

Указать индексы элемента найденного значения в матрице
Условие: Дана двумерная матрица, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди...

Найти порядковый номер найденного элемента в ListBox
Здравствуйте. Помогите, пожалуйста, дописать код. Есть ListBox1. По кнопке &quot;заполнить&quot; ListBox1 заполняется 22 рандомными числами...

Необычный вывод позиции найденного элемента в ЛЮБОМ списке
Помогите пожалуйста!!!! Если не сложно - с комментариями! Lisp мне не поддается...((( ЗАДАЧА: В нелинейном списке найти заданный...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru