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

Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд - C++

Восстановить пароль Регистрация
 
chetca
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 4
04.05.2014, 10:59     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд #1
Помогите пожалуйста! Не могу решить задачу на перемещение элементов массива
Даны целые числа a1,....,an. Переставить числа в последовательности таким образом, что бы сначала шли все числа, равные первому члену, затем - равные второму и тд.
Мой код не работает
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>
#include <clocale>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL,"rus");
    int i,j,k,help,poz=-1;
    const int n=9;
    int x[n];
    cout<<"Введите элементы массива: ";
    for(i=0;i<n;i++)
        cin>>x[i];
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if((x[i]==x[j])&&(i!=j))
            {
                poz++;
                i++;
                help=x[j];
                for(k=j-1;k>=poz;k--)
                    x[k+1]=x[k];
                x[poz]=help;
            }
 
        }
    }
    cout<<'\n'<<"Новый массив: ";
    for(i=0;i<n;i++)
        cout<<x[i]<<' ';
    cout<<'\n';
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2014, 10:59     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд
Посмотрите здесь:

Существуют натуральные числа равные сумме кубов своих цифр. Найдите такие числа в заданном интервале C++
C++ Напечатать сначала все отрицательные числа этой последовательности, затем все положительные
C++ Получить новый массив, в котором сначала идут положительные числа, затем нулевые, затем отрицательные исходного
Переставить числа в массиве таким образом что бы слева от границы стояли числа меньшие или равные b C++
C++ Переставить числа в массиве таким образом, чтобы сначала шли элементы меньше a[b], затем равные a[b], и потом большие
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
04.05.2014, 11:30     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд #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
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define N 10
 
int main(int argc, char* argv[])
{
    int A[N] = { 7, 6, 4, 3, 6, 7, 6, 2, 5, 2 };
 
    printf("A = { ");
 
    for (int index = 0; index < N; index++)
        printf((index < N-1) ? "%d, " : "%d ", A[index]);
 
    printf("}\n\n");
 
    for (int index = 0; index < N; index++)
        for (int nindex = index + 1; nindex < N; nindex++)
        if (A[index] == A[nindex])
        {
            int r = N - 1;
            int t = nindex, val = A[nindex];
            while (t < N) A[t++] = A[t + 1];
            while (r >= index+1) A[r + 1] = A[r--];
            if (val > 0 ) A[index + 1] = val;
        }
 
    printf("Output = { ");
 
    for (int index = 0; index < N; index++)
        printf((index < N - 1) ? "%d, " : "%d ", A[index]);
 
    printf("}\n\n");
 
    _getch();
 
    return 0;
}
Миниатюры
Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд  
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
04.05.2014, 12:12     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд #3
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
void show (int *mas, int size)
{
    for (int i=0; i<size; i++)
        cout <<mas[i] <<' ';
    cout <<endl;
}
 
int main()
{
    srand (time(0));
    const int size = 10;
    int a[size], tmp[size];
    for (int i=0; i<size; i++)
    {
        a[i] = rand()%10+1;
        tmp[i] = a[i];
    }
    show (a,size);
    int k = 0;
    for (int i=0; i<size; i++)
    {
        for (int j=k; j<size; j++)
        {
            if (tmp[i]==a[j])
            {
                int temp = a[j];
                a[j] = a[k];
                a[k] = temp;
                ++k;
            }
        }
    }
    show (a,size);
    return 0;
}
WorkLoad
Сообщений: n/a
09.05.2014, 07:33     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд #4
zitxbit, помогите с комментариями.

Добавлено через 36 секунд
Не понятно как работает эта программа

Добавлено через 1 минуту
zitxbit, я напишу вам в личку
chetca
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 4
14.05.2014, 13:51  [ТС]     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд #5
На моем тесте валится (9 элементов)
Миниатюры
Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд  
Yandex
Объявления
14.05.2014, 13:51     Переставить числа в последовательности , что бы сначала шли числа равные первому члену, затем равные второму и тд
Ответ Создать тему
Опции темы

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