Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23

Сформировать массив из двух других массивов с исключением повторяющихся элементов

17.01.2011, 10:52. Показов 8344. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано 2 массива. Сформировать третий массив, включив в него все элементы,
которые есть и в первом, и во втором массиве. Повторяющиеся элементы
удалить.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.01.2011, 10:52
Ответы с готовыми решениями:

Сформировать массив из положительных элементов двух других массивов
Сформировать массив С из положительных элементов двух других массивов A(8) и B(10) Исходные данные:А ={0.8, 4.1, -2.6, 0.1, 2.7, 8.9,...

Сформировать массив из сумм соответствующих элементов двух других массивов
Заданы два массива целых чисел a и b по n элементов в каждом. Сформировать массив c элементы которого вычисляются по формуле c=a+b

Сформировать массив со значениями максимума соответствующих элементов двух других массивов
Реализовать на C++ Как это сделать? ( Даны два массива А и В одинакового размера N. Сформировать новый массив С того же размера,...

9
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.01.2011, 15:21
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
#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
#include <cstddef>
 
int main() {
  int first [] = { 0, 0, 1, 2, 3, 7, 8, 9 };
  int second[] = { 1, 1, 4, 7, 5, 7, 8, 9 };
  
  const std::size_t first_size  = sizeof(first)  / sizeof(first[0]);
  const std::size_t second_size = sizeof(second) / sizeof(second[0]);
    
  std::sort(first , first  + first_size);
  std::sort(second, second + second_size);
  
  std::vector<int> result;
  
  std::set_intersection(first , first  + first_size,
                        second, second + second_size,
                        std::back_inserter(result));
                        
  std::copy(result.begin(), result.end(), std::ostream_iterator<int>(std::cout, " "));
  
  return 0;
}
Результат: http://codepad.org/FlYtBESJ
1
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 15:56  [ТС]
CyBOSSeR, большое спасибо! я так понимаю что в данном случае на печать выводятся удаленные элементы, а как сделать (прошу прощения за глупый вопрос), чтобы выводился на печать итоговый массив с оставшимися элементами?

Добавлено через 14 минут
а еще...
можно кратенько коменты по функциям... я еще только в основах сижу с библиотекой #include <cstddef> еще не сталкивалась, и для меня после строк объявления массивов совсем темный лес начинается...
0
 Аватар для MILAN
899 / 793 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
17.01.2011, 19:17
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
 {
     srand(static_cast<int>(time(NULL)));
     int *arr1,*arr2,*arr3;
     int size1,size2,k=0,cnt=0;
     cout<<"Enter size of first array -> ";
     cin>>size1;
     arr1=new int[size1];
     cout<<"Enter size of second array -> ";
     cin>>size2;
     arr2=new int[size2];
     cout<<endl<<"First array -> ";
      for(int i=0; i<size1; i++)
      {
          arr1[i]=rand()%9;
          cout<<arr1[i]<<"  ";
      }
     cout<<endl<<"Second array -> ";
      for(int i=0; i<size2; i++)
      {
          arr2[i]=rand()%9;
          cout<<arr2[i]<<"  ";
      }
    arr3=new int[size1+size2];
      for(int i=0; i<size1; i++)
    {
        for(int j=0; j<size2; j++)
        {
            if(arr1[i]==arr2[j])
            {
                arr3[k]=arr1[i];
                k++;
                 break;
            }
        }
    }
    cout<<endl<<"Third array -> ";
     for(int i=0; i<k; i++)
     {
         for(int j=0; j<i; j++)
         {
            if(arr3[j]==arr3[i])
             {
                 cnt++;
             }
         }
         if(!cnt)
         {
           cout<<arr3[i]<<"  ";
         }
           cnt=0;
     }
    cout<<endl;
    delete [] arr1;
    delete [] arr2;
    delete [] arr3;
    system("pause");
    return 0;
 }
1
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
17.01.2011, 21:14  [ТС]
простите несведущую.... а для чего используется библиотека ctime?
и вот эта строчка srand(static_cast<int>(time(NULL)));
что обозначает?
0
 Аватар для igorrr37
2870 / 2017 / 991
Регистрация: 21.12.2010
Сообщений: 3,728
Записей в блоге: 15
17.01.2011, 21:22
ctime нужна для ф-ции time(NULL), которая считывает системное время
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
17.01.2011, 21:44
Цитата Сообщение от murus Посмотреть сообщение
я так понимаю что в данном случае на печать выводятся удаленные элементы
Нет, выводяться те элементы, которые есть и в первом и во втором массивах, то бишь, фактически, пересечение множеств элементов массивов.
Цитата Сообщение от murus Посмотреть сообщение
а еще...
можно кратенько коменты по функциям... я еще только в основах сижу с библиотекой #include <cstddef> еще не сталкивалась, и для меня после строк объявления массивов совсем темный лес начинается...
Вся информация есть на справочных ресурсах, типа http://www.cplusplus.com/.
0
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
18.01.2011, 00:23  [ТС]
CyBOSSeR, igorrr37, благодарю за пояснения, пошла дальше грызть гранит)

Добавлено через 2 часа 16 минут
написала один из вариантов, посмотрите пожалуйста код, не у меня выводится на экран результирующий массив или я что-то неправильно делаю...
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
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
 
 
void main()
{
int first[7] = {0, 2, 6, 10, 3, 2, 5};
int second[5] = {5, 4, 3, 8, 9};
 
int i = 0; //индекс первого массива
int j = 0; //индекс второго массива
 
printf("first:\n");
for (i = 0; i < 7; i++)
{
printf("%d\t", first[i]); //выводим первый массив с пробелами
}
printf("\nsecond:\n");
for (i = 0; i < 5; i++)
{
printf("%d\t", second[i]);//выводим второй массив
}
 
int n = 0; //объявляем кол-во неповторяющихся чисел первого массива
int k = 0; //объявляем индекс результирующего массива
int *result; //объявляем результирующий массив
 
printf("\nresult:\n");
 
result = new int[n];
      for(i = 0; i < 7; i++)
        {
                for(j = 0; j < 5; j++)
                {
                        if(first[i]!= second[j])
                        {
                                result[i] = first[i];
                                result[i++] = second[i];
                        }
                }
                
      }         
for(int i=0; i<n; i++)
         {
           printf("%d\t", result[i]);
         }
      
_getch();
 
 }
0
 Аватар для igorrr37
2870 / 2017 / 991
Регистрация: 21.12.2010
Сообщений: 3,728
Записей в блоге: 15
18.01.2011, 07:35
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 <stdio.h>
#include <conio.h>
#include <iostream>
 
 
int main(){
    int first[7] = {0, 2, 6, 10, 3, 2, 5};
    int second[5] = {5, 4, 3, 8, 9};
    int i = 0;
    int j = 0;
    printf("first:\n");
    for (i = 0; i < 7; i++){
        printf("%d\t", first[i]); //выводим первый массив с пробелами
    }
    printf("\nsecond:\n");
    for (i = 0; i < 5; i++){
        printf("%d\t", second[i]);//выводим второй массив
    }
    int n = 12;
    int met = 0, met1=0; //объявляем индекс результирующего массива
    int *result=new int[n]; //объявляем результирующий массив
    int *result1=new int[n];
    printf("\nresult:\n");
    for(i = 0; i < 7; i++){
        for(j = 0; j < 5; j++){
            if(first[i]== second[j])
                goto mark;
        }
        result[met] = first[i];
        ++met;
        mark:;
    }
    for(i = 0; i < 5; i++){
        for(j = 0; j < 7; j++){
            if(second[i]== first[j])
                goto mark1;
        }
        result[met] = second[i];
        ++met;
        mark1:;
    }
    for(i = 0; i < met; i++){
        for(j = 0; j < met1; j++){
            if(result[i]== result1[j])
                goto mark2;
        }
        result1[met1] = result[i];
        ++met1;
        mark2:;
    }
    for(int i=0; i<met1; i++)
        printf("%d\t", result1[i]);
}
1
0 / 0 / 0
Регистрация: 11.01.2011
Сообщений: 23
18.01.2011, 11:38  [ТС]
igorrr37, спасибо огромное! все работает
я так понимаю в первом цикле мы ищем в первом массиве элементы второго и записываем в третий массив, если неравные. Потом тоже самое делаем для второго массива... а потом сравниваем два итоговых массива, проверяем на равенство и записываем неравные в искомый массив... так?

насчет использования временного массива я тоже в принципе думала, но все-таки интересно, почему у меня не получилось реализовать идею с циклом на проверку неравенство элементов... ведь наверное в итоге операций меньше в итоге получится... попробую поковыряться в коде еще...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2011, 11:38
Помогаю со студенческими работами здесь

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

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

Нужно сформировать массив из двух других массивов
Есть 2 массива: A, B. Сформировать массив C упорядоченный по возрастанию путем перезаписи информации из массивов A и B. Как можно...

Сформировать массив из двух других одномерных массивов STL
Алгоритмы стандартной библиотеки шаблонов STL Даны два одномерных массива, состоящие из N (N&gt;5) целых чисел из диапазона ....

Сформировать одномерный массив на основе двух других массивов
Даны два массива: А, состоящий из N элементов и В, состоящий из N элементов. Сформировать массив C по следующему правилу Результат...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru