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

Отсортировать масив - C++

Восстановить пароль Регистрация
 
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
06.06.2012, 13:01     Отсортировать масив #1
Отсортировать элементы массива по возрастанию только положительные элементы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2012, 13:01     Отсортировать масив
Посмотрите здесь:

масив C++
C++ Масив
масив C++
Отсортировать масив методом пузырьковой сортировки C++
Динамический масив: записать в масив все делители числа n C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
06.06.2012, 13:14     Отсортировать масив #2
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
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int n;
    cout<<"Vvedite razmer massiva: ";cin>>n;
    cout<<"Massiv: "<<endl;
    int* mas=new int[n];
    srand((unsigned) time(NULL));
    for (int i=0;i<n;i++)
    {
        mas[i] = rand() % 100;
        cout<<mas[i]<<" ";
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-1;j++)
        if(mas[j]>mas[j+1])
        {
            int temp=mas[j];
            mas[j]=mas[j+1];
            mas[j+1]=temp;
        }
    }
    cout<<"\nNew Massiv: "<<endl;
    for (int i=0;i<n;i++)
    {
        cout<<mas[i]<<" ";
    }
    getch();
    return 0;
}
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
06.06.2012, 13:24  [ТС]     Отсортировать масив #3
Канечно клас но она нреработает
Код
Vvedite razmer massiva: 10
Massiv:
-46 -30 18 45 8 -8 -18 -20 49 -47
New Massiv:
49 45 18 8 -8 -18 -20 -30 -46 -47
Отрицательные елементы сортировать ненадо!
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
06.06.2012, 13:37     Отсортировать масив #4
Цитата Сообщение от kaznachey1993 Посмотреть сообщение
Канечно клас но она нреработает
Код
Vvedite razmer massiva: 10
Massiv:
-46 -30 18 45 8 -8 -18 -20 49 -47
New Massiv:
49 45 18 8 -8 -18 -20 -30 -46 -47
Отрицательные елементы сортировать ненадо!
Тогда, так:
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
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int n,min=-100,max=100,pos=0,pos1=0;
    cout<<"Vvedite razmer massiva: ";cin>>n;
    cout<<"Massiv: "<<endl;
    int* mas=new int[n],*bufmas=new int[n],*bufmas1=new int[n];
    srand((unsigned) time(NULL));
    for (int i=0;i<n;i++)
    {
        mas[i] = rand() % (max - min + 1) + min;
        cout<<mas[i]<<" ";
        if(mas[i]<0)
        {
            bufmas[pos]=mas[i];
            pos++;
        }
        else if(mas[i]>=0)
        {
            bufmas1[pos1]=mas[i];
            pos1++;
        }
    }
 
    for(int i=0;i<pos1;i++)
    {
        for(int j=0;j<pos1-1;j++)
        if(bufmas1[j]>bufmas1[j+1])
        {
            int temp=bufmas1[j];
            bufmas1[j]=bufmas1[j+1];
            bufmas1[j+1]=temp;
        }
    }
    for(int i=0;i<pos;i++)
        mas[i]=bufmas[i];
    for(int i=pos,j=0;i<n;i++,j++)
        mas[i]=bufmas1[j];
    cout<<"\nNew Massiv: "<<endl;
    for (int i=0;i<n;i++)
    {
        cout<<mas[i]<<" ";
    }
    delete[] bufmas1;
    delete[] bufmas;
    delete[] mas;
    getch();
    return 0;
}
Выводим сначала все отрицательные элементы, а затем отсортированные положительные.
kaznachey1993
-66 / 3 / 0
Регистрация: 24.11.2011
Сообщений: 97
06.06.2012, 14:42  [ТС]     Отсортировать масив #5
Сбасибо!!!

Добавлено через 1 час 1 минуту
Сри но всернавно неправильно!
Код
Vvedite razmer massiva: 20
Massiv:
59 11 64 -48 -45 74 0 -90 -1 34 44 -43 -34 -69 -83 37 -43 25 6 74
New Massiv:
-48 -45 -90 -1 -43 -34 -69 -83 -43 0 6 11 25 34 37 44 59 64 74 74
А надо чтоб цыфры ставали нарпежние места!
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
06.06.2012, 16:44     Отсортировать масив #6
Цитата Сообщение от kaznachey1993 Посмотреть сообщение
Сбасибо!!!

Добавлено через 1 час 1 минуту
Сри но всернавно неправильно!
Код
Vvedite razmer massiva: 20
Massiv:
59 11 64 -48 -45 74 0 -90 -1 34 44 -43 -34 -69 -83 37 -43 25 6 74
New Massiv:
-48 -45 -90 -1 -43 -34 -69 -83 -43 0 6 11 25 34 37 44 59 64 74 74
А надо чтоб цыфры ставали нарпежние места!
Тогда так:
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
#include <iostream>
#include <conio.h>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int n,min=-100,max=100,pos=0;
    cout<<"Vvedite razmer massiva: ";cin>>n;
    cout<<"Massiv: "<<endl;
    int* mas=new int[n],*bufmas=new int[n];
    srand((unsigned) time(NULL));
    for (int i=0;i<n;i++)
    {
        mas[i] = rand() % (max - min + 1) + min;
        cout<<mas[i]<<" ";
        if(mas[i]>=0)
        {
            bufmas[pos]=mas[i];
            pos++;
        }
    }
 
    for(int i=0;i<pos;i++)
    {
        for(int j=0;j<pos-1;j++)
        if(bufmas[j]>bufmas[j+1])
        {
            int temp=bufmas[j];
            bufmas[j]=bufmas[j+1];
            bufmas[j+1]=temp;
        }
    }
    int count=0;
    for(int i=0;i<n;i++)
    {
        if(mas[i]>=0)
        {
            mas[i]=bufmas[count];
            count++;
        }
    }
 
    cout<<"\nNew Massiv: "<<endl;
    for (int i=0;i<n;i++)
    {
        cout<<mas[i]<<" ";
    }
    delete[] bufmas;
    delete[] mas;
    getch();
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2012, 17:10     Отсортировать масив
Еще ссылки по теме:

C++ Нужно отсортировать одномерный масив
C++ Масив на 18 действ. Упорядочить по возростанию масив
Отсортировать массив по убыванию, затем добавить недостающий элемент и отсортировать массив по возрастанию C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
06.06.2012, 17:10     Отсортировать масив #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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <random>
#include <vector>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> uid(-10, 20);
    const std::size_t M = 20;
    int A[M];
    std::vector<int> vind, v; 
    std::generate(A, A + M, [&uid, &gen] {return uid(gen); } );
    for (std::size_t i=0; i < M; i++)
    {
        std::cout<< A[i]<< " ";
        if(A[i] >= 0)
        {
            vind.push_back(i);
            v.push_back(A[i]);
        }
    }
    std::sort(v.begin(), v.end());
    auto it = v.begin();
    std::for_each(vind.begin(), vind.end(), [&it, &A](const int i) {A[i] = *it++; } );   
    std::cout<< std::endl;    
    std::copy(A, A + M, std::ostream_iterator<int> (std::cout, " ") );
    return 0;
}
http://liveworkspace.org/code/d2bc4d...1595f305930967
Yandex
Объявления
06.06.2012, 17:10     Отсортировать масив
Ответ Создать тему
Опции темы

Текущее время: 05:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru