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

Сравнение списков целых чисел на Си

23.06.2018, 20:57. Просмотров 302. Ответов 1

Здравствуйте, у меня реализовано 2 списка целых чисел в диапазоне [-10; 10] через массив. Задание состоит в том, чтобы сравнить их и записать общие элементы в отдельный 3-ий список и при этом одинаковые числа не должны повторяться.
Сравнение сделал, но не знаю как сделать так, чтобы было без повторов.

Вот основной код функции сравнения:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void List_compare(List * list1, List * list2, List * list3)
{
    int size1 = List_count(list1);
    int size2 = List_count(list2);
    int size3 = List_count(list3);
 
    for (int i = 0; i < size1; i++)
    {
        for (int j = 0; j < size2; j++)
        {
            if (List_at(list1, i) == List_at(list2, j))
            {
                List_add(list3, List_at(list1, i));
                size3 = List_count(list3);
                break;
            }
        } 
    }
}
Код самой структуры списка, дополнительных функций определения размера списка. взятия значение из списка и добавления:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
struct __List
{
    int *array;
    int capacity;
    int length;
};


Кликните здесь для просмотра всего текста
C
1
2
3
4
size_t List_count(List * self)
{
    return self->length;
}


Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
int List_at(List * self, size_t index)
{
    assert(index < self->length);
 
    return self->array[index];
}


Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void List_add(List * self, int value)
{
    if(self == NULL)
    {
        assert(0 && "Argument is NULL");
    }
 
    if(self->length < self->capacity)
    {
        self->array[self->length] = value;
        self->length++;
    }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2018, 20:57
Ответы с готовыми решениями:

Вводится последовательность из N целых чисел. Вычислить сумму только двузначных чисел. Си
Вводится последовательность из N целых чисел. Вычислить сумму только двузначных...

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

Последовательно вводятся n целых чисел. Найти количество четных чисел
Что тут неправильно #include &lt;stdio.h&gt; #include &lt;locale.h&gt; int main (void)...

Дана матрица целых чисел A[N,N] Найти сумму четных чисел
Дана матрица целых чисел A Найти сумму четных чисел

Среди заданных целых чисел k , l , m найти пары кратных чисел
Ребятки, любому дельному совету буду рад, помогите пожалуйста #include...

1
Slefer
1 / 1 / 3
Регистрация: 10.10.2017
Сообщений: 18
Завершенные тесты: 1
23.06.2018, 22:02  [ТС] 2
Здравствуйте, у меня реализовано 2 списка целых чисел в диапазоне [-10; 10] через массив. Задание состоит в том, чтобы сравнить их и записать общие элементы в отдельный 3-ий список и при этом одинаковые числа не должны повторяться.
Сравнение сделал, но не знаю как сделать так, чтобы было без повторов.

Вот основной код функции сравнения:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void List_compare(List * list1, List * list2, List * list3)
{
    int size1 = List_count(list1);
    int size2 = List_count(list2);
    int size3 = List_count(list3);
 
    for (int i = 0; i < size1; i++)
    {
        for (int j = 0; j < size2; j++)
        {
            if (List_at(list1, i) == List_at(list2, j))
            {
                List_add(list3, List_at(list1, i));
                size3 = List_count(list3);
                break;
            }
        } 
    }
}
Код самой структуры списка, дополнительных функций определения размера списка. взятия значение из списка и добавления:
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
struct __List
{
    int *array;
    int capacity;
    int length;
};


Кликните здесь для просмотра всего текста
C
1
2
3
4
size_t List_count(List * self)
{
    return self->length;
}


Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
int List_at(List * self, size_t index)
{
    assert(index < self->length);
 
    return self->array[index];
}


Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
void List_add(List * self, int value)
{
    if(self == NULL)
    {
        assert(0 && "Argument is NULL");
    }
 
    if(self->length < self->capacity)
    {
        self->array[self->length] = value;
        self->length++;
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2018, 22:02

Вводится последовательность из n целых чисел. Найти сумму чисел кратных 3
Что не так? Я только начинаю изучать и не пойму почему не работает #include...

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

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


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

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

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