Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массивы с пересечением множеств 
:(
    Опции темы
Leno
  Дата 4.1.2013, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 4.1.2013

Репутация: нет
Всего: нет



Помогите с программой на С++, у самой никак не получается. Даны значения двух целочисленных массивов x и y размером n. Рассматривая массивы как конечные множество целых чисел, построить массив z размером не более 2n, где z = x пересечение y (пересечение множеств). Нашла похожую программу, но там симметрическа разность множеств. Помогите пожалуйста.
Код

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
 
void main()
{
    const int max_size = 10, max_size_2 = 20; 
    int n,i = 0;
    int X[max_size];
    int Y[max_size];
    int Z[max_size_2];
 do
 {
    cout << "input n: " << endl;
    cin >> n;
 }
 while (n<1);
 
    cout << "elements: " << endl;
    
    cout << "X={";
    for(i = 0; i < n; i++)
    {
        X[i] =0 + rand() % 10; //заполнение массива X случайными целыми числами от 0 до 10
        cout<<" "<<X[i] <<",";
    }
    cout << "}";
    cout << endl;
 
    cout << "Y={";
    for(i = 0; i < n; i++)
    {
        Y[i] =0 + rand() % 10; //заполнение массива Y случайными целыми числами от 0 до 10
        cout<<" "<<Y[i] <<",";
    }
    cout << "}";
    cout << endl;
 
 
    //блок сортировки массивов X и Y
    bool f = true,f2 = true;
    int iz = 0;
 
    for(i = 0;i < max_size;i++)
    {
        f = true;
        f2 = f;
 
        for(int  j = 0;(j < max_size) && f;j++)
        {
            if(X[i] == Y[j]) f = false;
            if(Y[i] == X[j]) f2 = false;
    
        }
 
        if(f)
        {
            Z[iz] = X[i];  //запись в массив Z
            iz++;
        }
        if(f2)
        {
            Z[iz] = Y[i];  //запись в массив Z
            iz++;
        }
    }
 
    cout << "Z={";
    for(int i = 0;i < iz;i++)
    {
        cout<<" "<<Z[i] <<",";
    }
        cout << "}";
        cout << endl;
system("pause");        
return;
}

PM MAIL   Вверх
feodorv
Дата 4.1.2013, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Думаю, вместо цикла
Цитата(Leno @  4.1.2013,  16:05 Найти цитируемый пост)
    for(i = 0;i < max_size;i++)
    {
        f = true;
        f2 = f;
 
        for(int  j = 0;(j < max_size) && f;j++)
        {
            if(X[i] == Y[j]) f = false;
            if(Y[i] == X[j]) f2 = false;
    
        }
 
        if(f)
        {
            Z[iz] = X[i];  //запись в массив Z
            iz++;
        }
        if(f2)
        {
            Z[iz] = Y[i];  //запись в массив Z
            iz++;
        }
    }


сделать такой цикл
Код
for( i = 0; i < max_size; i++)
{
  for( int  j = 0; j < max_size; j++) 
    if( X[i] == Y[j] ) Z[iz++] = X[i];
}


Правда остаётся вопрос об одинаковых числах в одном и том же массиве. Вот чему должно быть равно пересечение таких множеств:
Код

int X[3] = { 1, 1, 1};
int Y[3] = { 1, 1, 1};


Предлагаемый код породит следующее пересечение:
Код

int Z[6] = { 1, 1, 1, 1, 1, 1};

Это правильно???


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Leno
Дата 4.1.2013, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 4.1.2013

Репутация: нет
Всего: нет



Спасибо ^_^
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.