Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2012, 12:24   #1
Yakov112
 
Регистрация: 20.09.2012
Сообщений: 8
Лампочка Пересечение двух одномерных массивов

Помогите, пожалуйста, исправить код

Код:
/*
Условие задачи:
Даны натуральные n, m, целые a1, a2, ..., an и b1, b2, ..., bm. Внутри каждой 
  из последовательностей нет повторяющихся членов. Построить последовательность,
  которая является пересечением последовательностей.
*/

#include<iostream>
#include<locale>
#define N 100

using namespace std;

void inMas1(int &n, int a[N])
{
	for (int i=0; i < n; i++)
	{
		cout << "\na[" << i << "]=";
		cin >> a[i];
	}
}
void inMas2(int &m, int b[N])
{
	for (int j=0; j < m; j++)
	{
		cout << "\nb[" << j << "]=";
		cin >> b[j];
	}
}

void intersection (int &n, int &m, int *a, int *b,int &k, int *c)//функция по постороению пересечения
{  
  for (int i=0,j=0, k=0;(i<n)&&(j<m);k++) 
  {  
		   if (a[i] == b[j]) 
		   { 
			   c[k]=a[i]=b[j];
			   i++,j++;			   
		   }  	  
  }  
}


int main()
{
	setlocale(LC_ALL, "Rus");
	int i,n,m,a[N],b[N],k,c[N];
	int found;
	cout<<"\nвведите n = ";
	cin>>n;
	cout<<"\nвведите m = ";
	cin>>m;
	if(n<1)
	{
		cout<<"\nне правильно задана размерность массива (n<1)";
		cout<<"\nпрограмма завершается, попробуйте ещё раз";
		return 0;
	}
	if(m<1)
	{
		cout<<"\nне правильно задана размерность массива (m<1)";
		cout<<"\nпрограмма завершается, попробуйте ещё раз";
		return 0;
	}
	inMas1(n,a);
	inMas2(m,b);
	intersection(n, m, a, b, k, c); // вызов функции по построению пересечения
	cout<<"\nЭлементы пересечения массива А с массивом В: "<< c[k] << endl;
	
}
Yakov112 вне форума Ответить с цитированием
Старый 12.10.2012, 13:43   #2
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

intersection не правильно реализован. можно в лоб решать:
Код:
for (int i = 0, k = 0; i < N; ++i) {
	for (int j = 0; j < M; ++j) {
		if (a[i] == b[j]) {
			c[k++] = a[i];
		}
	}
}
Kukurudza вне форума Ответить с цитированием
Старый 12.10.2012, 14:16   #3
Yakov112
 
Регистрация: 20.09.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Kukurudza Посмотреть сообщение
intersection не правильно реализован. можно в лоб решать
ошибки понял, программа у меня все равно не запускается, выбрасывает после ввода массива...может что то в вызове этой функции не верно?
Yakov112 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
пересечение массивов на С++ drakon803 Помощь студентам 4 09.12.2012 10:29
найти пересечение двух прямоугольников заданных координатами двух углов Этотак Помощь студентам 0 11.05.2011 23:55
Множественное пересечение массивов *)(oDoS* Помощь студентам 2 13.12.2010 14:20
пересечение массивов на паскале SeReGa48 Помощь студентам 2 13.04.2010 15:59
как из двух отсортированных по возрастанию одномерных массивов сформировать третий Тоха Рыжов Общие вопросы C/C++ 1 07.10.2007 01:43