Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
#1

Разработать функцию, которая сортирует только положительные элементы массива на своих местах - C++

11.01.2014, 23:49. Просмотров 901. Ответов 22
Метки нет (Все метки)

вообщим нужна помощ
фунция есть, но как сделать чтобы элементы остались на своих местах?
пробывал через if(mas[i]>0) расположение сбивается

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
#include <iostream>
using namespace std;
void SortMass(int * mas, int n)
{
    for(int i = n - 1; i >= 1; i--)
        for(int j = 0; j < i; j++)
        {
            if(mas[j] > mas[j+1])
            {
                int foo = mas[j];
                mas[j] = mas[j+1];
                mas[j+1] = foo;
            }
        }
}
 
int main ()
{
    cout << "n: ";
    int n = 0;
    int*mas;
    cin >> n;
    mas = new int[n];
    srand(time(0));
    for(int i = 0; i < n; i++)
    {
        mas[i]  = rand()%100-50;
        cout << mas[i] << ' ';
    }
    cout << endl;
    SortMass(mas, n);
    cout << "sort" << endl;
    for(int i = 0; i < n; i++)
        cout << mas[i] << ' ';
    cin.get();
    cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 23:49     Разработать функцию, которая сортирует только положительные элементы массива на своих местах
Посмотрите здесь:

Положительные элементы переставить в обратном порядке, а отрицательные оставить на своих местах - C++
есть рабочая программка,но не могу переделать нужно,чтобы положительные элементы переставлялись в обратном порядке,а отрицательные...

Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. - C++
Помогите плз написать... Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы...

Отсортировать по возрастанию только положительные элементы массива - C++
Отсортировать по возрастанию только положительные элементы массива. Как объяснил преподаватель так чтобы положительные отсортировались а...

Сортировка только нечетных элементов в одномерном массиве (четные оставляем на своих местах) - C++
мужики, помогите пожалуйста сделать вот такое задание: Дан одномерный массив (N+15) отсортировать нечетные числа по убыванию...

Написать функцию, которая сортирует вещественный массив методом Хоара - C++
Написать функцию ,которая сортирует вещественный массив методом Хоара по убыванию суммы разности тангенса и котангенса элементов на...

Разработать функцию, которая считает среднее арифметическое и геометрическое массива чисел - C++
Я что-то набросала...но в любом случае куча ошибок и недочётов. Помогите с этим делом Буду очень благодарна #include&lt;iostream&gt; ...

Разработать функцию, которая определяет количество нулевых элементов массива и их порядковые номера - C++
Разработать функцию , которая определяет количество нулевых элементов одномерного динамического массива и их порядковые номера.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
2092 / 1599 / 306
Регистрация: 15.12.2013
Сообщений: 6,427
12.01.2014, 00:19     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #16
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// ConsoleApplication10.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
 
#include <iostream>
#include <algorithm>
#include <ctime>
# include <cstdlib>
using namespace std;
/*
Отрицательные не трогаем,положительные сортируем.
1)Посчитайте количество + элементов
2)создайте массив такой размерности
3)Отсортируйте его
4)В цикле делайте проверку на положительность
5)при выполнение условии меняете значение на отсортированное и увеличиваете счетчик "измененных".
    
    */
 
int main ()
{
    
    int n,s=0,y=0,i;
    int *mas,*arr;
    srand(time(NULL));
    cout<<"n: ";
    cin>>n;
    mas = new int[n];
    
    for(i = 0; i < n; i++)
    {
        mas[i]  = rand()%100-50;
        if(mas[i]>0) s++;
        cout << mas[i] << ' ';
    }
    cout << endl;
    arr=new int[s];
    
    for(i = 0; i < n; i++)
    {
        if(mas[i]>0) 
        {
            arr[y]=mas[i];
            y++;
        }
    }
    cout<<"Sort"<<endl;
     sort(arr,arr+s);
     y=0;
for(i=0;i<n;i++)
    {
        if(mas[i]>0) 
        {
            mas[i]=arr[y];
            y++;
            
        }
        cout << mas[i] << ' ';
    }
 
    cin.get();
    cin.get();
}
И что здесь может вызвать сложности?
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
12.01.2014, 00:21  [ТС]     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #17
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
C++
1
if(mas[j] > mas[j+1] && mas[j]>0 && mas[j+1]>0)
непонятно почему так неподходит
вот так работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void SortMass(int * mas, int n)
{
    int temp;
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            if ((mas[i]>0)&&(mas[j]>0)&&(mas[j]>mas[i]))
                
            {
                
                temp=mas[i];
                
                mas[i]=mas[j];
                
                mas[j]=temp;
                
            }
    
 
}
Добавлено через 1 минуту
Цитата Сообщение от S_el Посмотреть сообщение
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// ConsoleApplication10.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
 
 
#include <iostream>
#include <algorithm>
#include <ctime>
# include <cstdlib>
using namespace std;
/*
Отрицательные не трогаем,положительные сортируем.
1)Посчитайте количество + элементов
2)создайте массив такой размерности
3)Отсортируйте его
4)В цикле делайте проверку на положительность
5)при выполнение условии меняете значение на отсортированное и увеличиваете счетчик "измененных".
    
    */
 
int main ()
{
    
    int n,s=0,y=0,i;
    int *mas,*arr;
    srand(time(NULL));
    cout<<"n: ";
    cin>>n;
    mas = new int[n];
    
    for(i = 0; i < n; i++)
    {
        mas[i]  = rand()%100-50;
        if(mas[i]>0) s++;
        cout << mas[i] << ' ';
    }
    cout << endl;
    arr=new int[s];
    
    for(i = 0; i < n; i++)
    {
        if(mas[i]>0) 
        {
            arr[y]=mas[i];
            y++;
        }
    }
    cout<<"Sort"<<endl;
     sort(arr,arr+s);
     y=0;
for(i=0;i<n;i++)
    {
        if(mas[i]>0) 
        {
            mas[i]=arr[y];
            y++;
            
        }
        cout << mas[i] << ' ';
    }
 
    cin.get();
    cin.get();
}
И что здесь может вызвать сложности?
когда код готов, то вроде все и понятно)
Ev_Hyper
Заблокирован
12.01.2014, 00:23     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #18
Цитата Сообщение от stray911 Посмотреть сообщение
вот так работает
это вы просто в первом варианте с сортировкой перемудрили
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
12.01.2014, 00:24  [ТС]     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #19
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
это вы просто в первом варианте с сортировкой перемудрили
это я к экзамену готовлюсь)
еще 2 варианта)
Ev_Hyper
Заблокирован
12.01.2014, 00:25     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #20
2 варианта сортировок или заданий?)
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
12.01.2014, 00:27  [ТС]     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #21
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
2 варианта сортировок или заданий?)
заданий)

1. Розробити функцію , що знаходить максимальний і мінімальний елементи, їх номери у одновимірному масиві та міняє ці елементи місцями (ну тут вроде все понятно, немного помучится)

2. Створити функцію сортування другого рядка матриці і знаходження ії максимального елемента. (тут тоже не тяжело уже подобное делал только с столбцами)
Ev_Hyper
Заблокирован
12.01.2014, 00:30     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #22
уверен, что вы напишите эти задачи без проблем, эта даже немного сложнее будет
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 00:44     Разработать функцию, которая сортирует только положительные элементы массива на своих местах
Еще ссылки по теме:

Написать функцию, которая сортирует массив по возрастанию или по убыванию, в зависимости от третьего параметра функции. - C++
Доброго времени суток! У меня возникла некоторая проблема в написании кода для задания: Дан массив чисел размерностью 10 элементов....

Дана последовательность расположить её положительные элементы стоящие на нечётных местах по возрастанию - C++
Помогите, пожалуйста. &gt;&gt;Дана последовательность расположить её положительные элементы стоящие на нечётных местах по возрастанию.&lt;&lt; ...

Дана последовательность, расположить ее положительные элементы, стоящие на нечетных местах по возрастанию - C++
Дана последовательность, расположить ее положительные элементы, стоящие на нечетных местах по возрастанию. Язык Си.

Записать в массив X только положительные элементы исходного, а в Y только отрицательные - C++
В общем мне нужно ввести массив R, состоящий из 17 элементов:положительных и отрицательных. Массив X должен записывать только...

Переписать в другой файл все положительные элементы первого файла, стоящие на четных местах - C++
Люди добрые, помогите пожалуйста: необходимо создать файл, состоящий из целых чисел. Переписать в другой файл все положительные элементы...


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

Или воспользуйтесь поиском по форуму:
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
12.01.2014, 00:44  [ТС]     Разработать функцию, которая сортирует только положительные элементы массива на своих местах #23
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
уверен, что вы напишите эти задачи без проблем, эта даже немного сложнее будет
спасибо)
подняли боевой дух))

Добавлено через 13 минут
Цитата Сообщение от stray911 Посмотреть сообщение
спасибо)
подняли боевой дух))
первая задачка есть

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void function1(int * mas, int n)
{
 
    int imin=0;
    for(int i=1;i<n;i++)
    {
        if (mas[imin]>mas[i])
            imin=i;
    }
    cout<<"min="<<mas[imin]<<"\tnomber="<<imin<<endl;
    
    int imax=0;
    for(int i=1;i<n;i++)
    {
        if (mas[imax]<mas[i])
            imax=i;
    }
    cout<<"max="<<mas[imax]<<"\tnomber="<<imax<<endl;
    swap(mas[imin], mas[imax]);
}
Yandex
Объявления
12.01.2014, 00:44     Разработать функцию, которая сортирует только положительные элементы массива на своих местах
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru