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

Задача по перемещению элементов в массивах. - C++

Восстановить пароль Регистрация
 
eja
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 3
15.12.2011, 00:25     Задача по перемещению элементов в массивах. #1
В одномерном массиве А даны 10 случайных чисел, перенести их в массив Б без дублирующихся чисел.
например: 2 8 5 1 10 5 9 9 3 5 --> 2 8 5 1 10 9 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
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include "stdlib.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    int i=0,j=0,k=0;
    const int N=10;
    int mas1[N],mas2[N];
    printf("Massiv A: ");
    for (i=0;i<N;i++)
    {
        mas1[i]=rand()%10+1;
        printf(" %d", mas1[i]);
        mas2[i]=0;
    }
    for (i=0;i<N;i++)
    {       
        for(j=0;j<k;j++)
             if (mas1[i]==mas2[j])
             {
                 mas2[j]=mas1[i];
             }
             if (mas2[j]=mas1[i])
             {
                 mas2[k]=mas1[i];
                 k++;
             }
    }
    printf ("\nMassiv B: ");
    for (i=0;i<k;i++)
    {
        printf(" %d", mas2[i]);
    }
getch();
return 0;
}
Добавлено через 35 минут
помогите, буду очень благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 00:25     Задача по перемещению элементов в массивах.
Посмотрите здесь:

Задача На тему Вставка,удаления,перестановка в массивах C++
C++ Индексы элементов которые повторяются в двух массивах
C++ Поиск одинаковых элементов в 2 массивах
Найти количество общих элементов в массивах. C++
C++ Найти количество элементов, встречающихся в обоих массивах
Поиск элементов в массивах C++
C++ Вывод неповторяющихся элементов в динамических массивах
C++ Подсчитать в массивах количество отрицательных элементов

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nastya24
 Аватар для Nastya24
32 / 18 / 4
Регистрация: 30.09.2011
Сообщений: 59
15.12.2011, 01:33     Задача по перемещению элементов в массивах. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int z=1;
bool flag=false;
for (i=0;i<N;i++)
  {
   for(j=z;j<N;j++)
   if (mas1[i]==mas1[j])
     {
      flag=true;
      break;
     }
 if(!flag)
       {
    mas2[k]=mas1[i];
    k++;
 
       }
   flag=false;
   z++;
}
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
15.12.2011, 04:46     Задача по перемещению элементов в массивах. #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
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
 
// заполнение массива
void fill_array( int[ ], size_t );
// вывод массива на экран
void print_array( int[ ], size_t );
// считаем сколько различных элементов в массиве
size_t calc_count_diff( int[ ], size_t );
// копируем элементы с одного массива в другой, пропуская дублирующиеся
void copy_elems( int[ ], int[ ], size_t );
 
int main( void ) {
    srand( time( NULL ) );
 
    const size_t dimm_src = 10;
    size_t dimm_res;
    int arr_source[ dimm_src ];
    int arr_result[ dimm_src ];
 
    fill_array( arr_source, dimm_src );
    puts("Исходный массив:");
    print_array( arr_source, dimm_src );
 
    copy_elems( arr_source, arr_result, dimm_src );
    dimm_res = calc_count_diff( arr_source, dimm_src );
    puts("Результирующий массив:");
    print_array( arr_result, dimm_res );
 
    return EXIT_SUCCESS;
}
 
void fill_array( int array[ ], size_t dimm ) {
    size_t i;
    for ( i = 0; i < dimm; ++i )
        array[ i ] = rand() % 11; // [ 0..10 ]
}
 
void print_array( int array[ ], size_t dimm ) {
    size_t i;
    for ( i = 0; i < dimm; ++i )
        printf( "%d ", array[ i ] );
 
    puts( "" );
}
 
size_t calc_count_diff( int array[ ], size_t dimm ) {
    size_t i, j, count = 0, check;
    for ( i = 0; i < dimm; ++i ) {
        check = 1;
        for ( j = i + 1; j < dimm; ++j )
            if ( array[ i ] == array[ j ] ) {
                check = 0;
                break;
            }
 
        if ( check )
            ++count;
    }
    return count;
}
 
void copy_elems( int array_source[ ], int array_result[ ], size_t dimm_source ) {
    size_t i, j, dimm_current = 1;
    int check;
 
    array_result[ 0 ] = array_source[ 0 ];
 
    for ( i = 1; i < dimm_source; ++i ) {
        check = 1;
        for ( j = 0; j < dimm_current; ++j )
            if ( array_source[ i ] == array_result[ j ] )
                check = 0;
 
        if ( check ) {
            array_result[ dimm_current ] = array_source[ i ];
            ++dimm_current;
        }
    }
}
Добавлено через 16 минут
2 Nastya24 - насколько я вижу, ТС привел код на языке СИ, а Вы ему предлагаете тип bool, которого нету в СИ.
Плюс к этому, если взять исходные данные, которые привел ТС
2 8 5 1 10 5 9 9 3 5
то Ваш код, навскидку, выведет не так как указал ТС
2 8 5 1 10 9 3
а вот что:
2 8 1 10 9 3 5

Т.е. в Вашем варианте если число в массиве встречается несколько раз, то берется его последний экземпляр.
Yandex
Объявления
15.12.2011, 04:46     Задача по перемещению элементов в массивах.
Ответ Создать тему
Опции темы

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