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

Удалить из массива С(30) элементы, встречающиеся в массиве D(15)

29.11.2017, 01:48. Просмотров 738. Ответов 1
Метки нет (Все метки)

на языке си
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2017, 01:48
Ответы с готовыми решениями:

Удалить из массива все значения, встречающиеся во втором массиве
Даны два целочисленных массива. Удалить из первого массива все значения, встречающиеся во втором...

Удалить из массива все элементы, встречающиеся более двух раз
Помогите пожалуйста с задачей: "Дан целочисленный массив, состоящий из n элементов. Удалить из...

Удалить из массива все элементы, встречающиеся более двух раз
Все массивы создаются динамически. Ввод и вывод массива осуществлять в одну строку. Серия -...

Удалить из массива все элементы встречающиеся более двух раз
Задание: Задан целочисленный массив размера N. Удалить из массива все элементы встречающиеся более...

Удалить из массива все элементы, встречающиеся более двух раз
Условие задачи описано ниже, помогите пж найти ошибку в коде :) #include <stdio.h> #include...

1
Геомеханик
798 / 602 / 939
Регистрация: 26.06.2015
Сообщений: 1,409
29.11.2017, 16:34 2
Лучший ответ Сообщение было отмечено Adramelex как решение

Решение

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
83
84
85
#include <stdio.h>
#include <stdlib.h>
#define N 30
#define K 15
int* remove_of1(int* f1, int* l1, const int* f2, const int* l2);
int* remove_of2(int* f1, int* l1, int* f2, int* l2);
void array_print(FILE* _out, const int* a, const int* b);
 
int main(void){
    int i, C[N], C1[N], D[K], D1[K], *e;
 
    for(i = 0; i < N; ++i){
        C[i] = C1[i] = i;
        printf("%d ", C[i]);
    }
    putchar('\n');
 
    for(i = 0; i < K; ++i){
        D[i] = D1[i] = (!(i & 1)) ? i : 15 + i;
        printf("%d ", D[i]);
    }
    puts("\nresult");
 
    e = remove_of1(C, C + N, D, D + K);
    array_print(stdout, C, e);
 
    e = remove_of2(C1, C1 + N, D1, D1 + K);
    array_print(stdout, C1, e);
    getchar();
    return 0;
}
 
//1-ый вариант
int* remove_of1(int* f1, int* l1, const int* f2, const int* l2){
    int* p;
    const int* i;
    for(; f1 != l1; ++f1){
        for(i = f2; (i != l2) && (*i != *f1); ++i)
            ;
        if(i != l2)
            break;
    }
 
    for(p = f1; f1 != l1; ++f1){
        for(i = f2; (i != l2) && (*i != *f1); ++i)
            ;
        if(i == l2)
            *p++ = *f1;
    }
    return p;
}
 
static int cmp(const void* a, const void* b){ return *(int*)a - *(int*)b; }
 
//2-ой вариант с модификацией входных массивов
int* remove_of2(int* f1, int* l1, int* f2, int* l2){
    int* p, k;
    qsort(f1, (size_t)(l1 - f1), sizeof(*f1), &cmp);
    qsort(f2, (size_t)(l2 - f2), sizeof(*f2), &cmp);
 
    p = f1;
    while((f1 != l1) && (f2 != l2)){
        if(*f1 < *f2)
            *p++ = *f1++;
        else if(*f2 < *f1)
            ++f2;
        else {
            k = *f1++;
            while((f1 != l1) && (*f1 == k))
                ++f1;
            ++f2;
        }
    }
 
    while(f1 != l1)
        *p++ = *f1++;
    return p;
}
 
//печать массива
void array_print(FILE* _out, const int* a, const int* b){
    for(; a != b; ++a)
        fprintf(_out, "%d ", *a);
    fputc('\n', _out);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2017, 16:34

Массивы. Из массива C удалить все элементы, содержащиеся в массиве B
Вот мой код #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define N 6 #define M 3 int main(void) { ...

Из одномерного массива А удалить те элементы, которые повторяются в массиве В
из массива А удалить те элементы ,которые повторяются в массиве В,результат вывести на экран

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


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

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

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