Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 31.05.2012
Сообщений: 3

Распечатать те элементы массива В, которых нет в массиве А

31.05.2012, 22:10. Показов 4323. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрий день. Нужна помощь уже 3 час пишу код и немогу зделать помогите.
Задача:Даны два массива A и B. Распечатать те элементы массива А, которых нет в массиве В. Распечатать те элементы массива В, которых нет в массиве А.
вот мое решение(ну оно не работает):
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
int[] f = { 1, 2, 5, 7, 10, 4, 3 };
            int[] s = { 11, 3, 5, 20, 10, 4, 2 };
            int rez = 0;
            int count = 0;
            ArrayList arr = new ArrayList();
          
            for (int i = 0; i < f.Length; i++)
                {   
                    for (int j = 0; j < f.Length; j++)
                        {
                            if (f[i] != s[j])
                            {
                                if(j==6)
                                {
                                    if (count == 0)
                                    {
                                       Console.WriteLine(f[i]);
                                      
                                    }
 
                           
                                }
 
                    }
                    else
 
                    {
                        count++;
                    }
                }
                     Console.ReadLine();
                for (int a = 0; a < arr.Count; a++ )
                {
                    Console.WriteLine(arr[a]);
                    Console.ReadLine();
                }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2012, 22:10
Ответы с готовыми решениями:

Распечатать те элементы массива А, которых нет в массиве В. Распечатать те элементы В, которых нет в А
помогите написать программу на СИ. Даны два массива A и B. Распечатать те элементы массива А, которых нет в массиве В. Распечатать те...

Даны 2 массива А и В: распечатать те элементы массива А, которых нет в массиве В и наоборот
Даны 2 массива А и В. распечатать те элементы которых нет в массиве В. Распечатать те элементы массива В, которых нет в массиве А. Не...

Из массива a выбрать элементы, которых нет в массиве b
Даны натуральное число n и целочисленные массивы a и b. Из массива a выберите элементы, которых нет в массиве b. Возможно, что таких чисел...

4
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.05.2012, 22:27
C#
1
2
3
4
5
int[] f = { 1, 2, 5, 7, 10, 4, 3 };
int[] s = { 11, 3, 5, 20, 10, 4, 2 };
 
Console.WriteLine(string.Join(" ", f.Except(s)));
Console.WriteLine(string.Join(" ", s.Except(f)));
1
0 / 0 / 0
Регистрация: 31.05.2012
Сообщений: 3
31.05.2012, 22:49  [ТС]
Спасибо, а можно зделать тоже самое но спомощью циклов for)
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
31.05.2012, 23:07
Конечно можно.
Можно сделать вариант "в лоб": каждый элемент первого массива ищется во втором массиве:
C#
1
2
3
4
5
6
7
8
9
10
11
int[] f = { 1, 2, 5, 7, 10, 4, 3 };
int[] s = { 11, 3, 5, 20, 10, 4, 2 };
 
for (int i = 0; i < f.Length; i++)
{
   bool contains = false;
   for (int j = 0; j < s.Length; j++)
      if (f[i] == s[j]) { contains = true; break; }
   if (!contains) Console.Write("{0} ", f[i]);
}
Console.WriteLine();
В этом случае имеем сложность алгоритма O(n * m), где n - количество элементов в первом массиве, а m - количество элементов во втором массиве.

А можно сначала построить хэш-таблицу элементов второго массива, чтобы потом поиск производился по сложности O(1), тогда сложность всего алгоритма будет O(n + m), что существенно лучше:
C#
1
2
3
4
5
6
7
8
int[] f = { 1, 2, 5, 7, 10, 4, 3 };
int[] s = { 11, 3, 5, 20, 10, 4, 2 };
 
HashSet<int> hash = new HashSet<int>(s);
 
for (int i = 0; i < f.Length; i++)
   if (!hash.Contains(f[i])) Console.Write("{0} ", f[i]);
Console.WriteLine();
Все это дело можно вынести в отдельный метод для удобства:
C#
1
2
3
4
5
6
static IEnumerable<T> Except(this IEnumerable<T> first, IEnumerable<T> second)
{
   var hash = new HashSet(second);
   foreach (var item in first)
      if (!hash.Contains(item)) yield return item;
}
После чего вызывать таким образом:
C#
1
f.Except(s);
Что, собственно, и происходит в методе-расширении LINQа Except.
1
0 / 0 / 0
Регистрация: 31.05.2012
Сообщений: 3
31.05.2012, 23:43  [ТС]
Большое спасибо.. теперь я знаю что нужно мне много узнать..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2012, 23:43
Помогаю со студенческими работами здесь

Удалить все элементы массива 1, которых нет в массиве 2
Подскажите пожалуйста, как удалить все элементы из vector&lt;string&gt; temp , которых нет в vector&lt;string&gt; names. Так не получается: ...

Вывести элементы 1го массива в третий которых нет во 2 массиве
выводит 1 2 2,а надо 1 2 int main() { int k=0; int a={1,2,3}; int b={3,4}; int c; bool d=0; for...

Вывести элементы первого массива, которых нет во втором массиве
Даны два массива чисел. Требуется вывести элементы первого массива (в том порядке, в каком они идут в первом массиве), которых нет во...

Получить массив, который содержит те элементы из массива А, которых нет в В, и те элементы из массива В, которых нет в А
Даны два массива: А(п) из п различных чисел и В(т) из т различных чисел. Получить новый массив, который содержит те элементы из массива А,...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru