Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Anastasia_Sail
0 / 0 / 0
Регистрация: 23.04.2017
Сообщений: 70
1

Перенести в другой массив те элементы, которые встречаются один раз, исключив их из первого

03.05.2017, 22:20. Просмотров 297. Ответов 1
Метки нет (Все метки)

Добрый вечер^^ Прошу помощи с одной небольшой задачкой.
Задан массив а1, а2, … , аn Перенести в другой массив те элементы, которые встречаются один раз, исключив их из первого, а элементы, встречающиеся в массиве А более одного раза исключить, оставив по одному.
Наработки я пыталься делать, но именно сам поиск и удаление не понимаю как должно работать.
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 "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <locale.h>
 
void form_mass1(int *a, int n)
{
    int i;  printf("Массив A: ");
    for(i=0; i<n; i++)
    {
        *(a+i)=rand()%10;
        printf("%2d", *(a+i));
    }
    printf("\n");
}
 
/*void form_mass2(int *a, int n)
{
    int i;
    printf("Массив A:");
    for(i=0; i<n; i++)
        scanf("%d", &*(a+i));
}*/
void f1(int *a, int *b, int n)
{
    int i, j, l=0, k;
    for(i=0; i<n; i++)
    { 
        for(j=0; j<n; j++)
             if( *(a+j) == *(a+i) && j!=i) *(b+l)=*(a+i);
        k++;
        for(i=0; i<l-1; i++)
            *(a+l)=*(a+(l+1));
    }
 
    printf("MAS B");
    for(i=0; i<n; i++)
    printf("%2d", *(b+i));
}
 
 int main()
 {
     int a[100], b[100], n;
     setlocale(LC_ALL, "Russian");
     printf ("Введите размерность массива (но не более, чем 100)\nЭлементы: ");
     scanf ("%d", &n);
     form_mass1(&a[0], n);
     f1(&a[0], &b[0], n);
     getch();
     return 0;
 }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2017, 22:20
Ответы с готовыми решениями:

Перенести в другой массив те элементы, которые встречаются в исходном один раз
Здасьте, здрасьте^ Уважаемы господа программисты и те, кто сюда просто зашел полюбопытствовать, ...

Выбрать из файла символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются, и записать их в другой файл
Дан файл, содержащий текст. Выбрать из него те символы, которые встречаются в нем только один раз,...

Перенести в массив С те элементы массива В, которые встречаются в массиве А, удалив их и из массивов
Заданы массивы действительных чисел а1,а2,…,а20 и b1,b2,…,b30. Перенести в массив С те элементы...

Сжать массив, удалив из него все элементы, которые встречаются только один раз
Дан одномерный массив целых чисел, в котором элементы могут повторяться, сжать массив, удалив из...

Элементы массива, которые встречаются только один раз
Нужно создать функцию, которая выводит на экран номера элементов, встречающихся в массиве только...

1
Геомеханик
807 / 610 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
04.05.2017, 12:17 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <stdlib.h>
int  array_unique(int a[], int n);
int  array_once_value(int b[], int* cnt, int a[], int n);
 
static int compare(const void* a, const void* b){
    return *(int*)a - *(int*)b;
}
 
int main(void){
    int i, a[100], b[100], m, n = 20;
    for(i = 0; i < n; ++i)
        a[i] = rand() % 20;
 
    qsort(a, n, sizeof(a[0]), &compare);
    for(i = 0; i < n; ++i)
        printf("%d ", a[i]);
    putchar('\n');
 
    n = array_once_value(b, &m, a, n);
    puts("print array-b: ");
    for(i = 0; i < m; ++i)
        printf("%d ", b[i]);
    putchar('\n');
 
    n = array_unique(a, n);
    puts("\nprint array-a: ");
    for(i = 0; i < n; ++i)
        printf("%d ", a[i]);
    getchar();
    return 0;
}
 
//Перенести в другой массив те элементы, которые встречаются один раз, исключив их из первого
int array_once_value(int b[], int* cnt, int a[], int n){
    int j, i, m = 0, o = 0;
    for(j = i = 0; j < n; ++j){
        m = j + 1;
        while((m < n) && (a[m] == a[j]))
            ++m;
 
        if((m - j) > 1){
            while(j < m)
                a[i++] = a[j++];
            --j;
        } else
            b[o++] = a[j];
    }
    *cnt = o;
    return i;
}
 
//удаление повторов
int array_unique(int a[], int n){
    int j, i = (n > 0) ? 1 : 0;
    for(j = 1; j < n; ++j){
        if((a[j - 1] != a[j]))
            a[i++] = a[j];
    }
    return i;
}
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2017, 12:17

Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один другой масси
Дан массив из 10 элементов.Перенести в один другой массив четные числа.Затем перенести в еще один...

Вывести те элементы, которые встречаются в массиве только один раз
Привет всем. Изучаю c++, ломаю уже 1 день голову над данной задачей: Дан массив. Выведите те его...

Перенести в массив С те элементы массива А, которые не встречаются в массиве В
Помогите с заданием в C++. Заданы массивы а1, а2, …, а20 и в1,в2,…,в10. Перенести в массив С те...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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