Форум программистов, компьютерный форум CyberForum.ru

Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 20:44     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #1
Задача:
Заданы два целочисленных массива X и Y. Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y.

Примечание. При написании программы необходимо использовать статический массив. Его максимальная размерность задается именованной константой. Реальное количество элементов массива вводится с клавиатуры с контролем на выход за границы массива. Предусмотреть два способа заполнения массива: с клавиатуры и с помощью датчика случайных чисел (функции rand). В последнем случае перед заполнением массива следует ввести границы интервала, которому будут принадлежать элементы массива.
Если задача не имеет решения, то выдать об этом сообщение.

Собственно, реализовал ввод элементов массива и их сортировку. А вот перенести з массива X те элементы, которые встречаются в нём чаще, чем в массиве Y, что то не получается... Пробовал set_difference, что-то не выходит... и второй способ заполнения(рандомом) также не знаю как реализовать.
Помогите пожалуйста. Завтра уже сдать нужно...
Вот, что у меня получилось на данный момент:
Код
#include <algorithm>
#include <iostream>
using namespace std;

int main() {
	setlocale (LC_ALL, ".1251");

	cout <<"Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем \n";
	int p; // проверка(сами или нет)
	cin >> p;
	if (p == 1){
	cout <<"vvedite kol-vo elementov v 1'om massive \n";
	int n;
	cin >> n;
		int q = 0,z=0,k=0;
	const int size = 1000;
		int mass_x [size];
		for (int i = 0; i != n; ++i, ++q, ++k) {		
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_x[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_x, mass_x + k);
		for(int i = 0; i < k; ++i)
		cout << mass_x[i] <<";";
		cout << endl;

		
		

	cout <<"vvedite kol-vo elementov v 2'om massive \n";
	int n2;
	cin >> n2;
	
    int mass_y [size];
	for (int i = 0; i != n2; ++i, ++z) {
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_y[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_y, mass_y + z);
		for(int i = 0; i < z; ++i)
		cout << mass_y[i] <<";";
		cout << endl;
		
[B]                // Вот с этого момента у меня уже не выходит продолжить реализацию кода. Подскажите.[/B]
		int mas_result[size];
		cout<<"Result: "<<(set_difference(mass_x,mass_x+k,mass_y,mass_y+z,mas_result))<<endl;

	}



	else 
	
	
		return 0;
	
	
}
Заранее спасибо.

Добавлено через 2 часа 4 минуты
Удалось самому дописать рандомный способ заполнения.
А вот сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y, увы - нет!
Подскажите.

На данный момент:
Код
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;

int main() {
	setlocale (LC_ALL, ".1251");

	cout <<"Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем \n";
	int p; // проверка(сами или нет)
	cin >> p;
	if (p == 1){
	cout <<"vvedite kol-vo elementov v 1'om massive \n";
	int n;
	cin >> n;
		int q = 0,z=0,k=0;
	const int size = 1000;
		int mass_x [size];
		for (int i = 0; i != n; ++i, ++q, ++k) {		
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_x[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_x, mass_x + k);
		for(int i = 0; i < k; ++i)
		cout << mass_x[i] <<";";
		cout << endl;

		
		

	cout <<"vvedite kol-vo elementov v 2'om massive \n";
	int n2;
	cin >> n2;
	
    int mass_y [size];
	for (int i = 0; i != n2; ++i, ++z) {
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_y[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_y, mass_y + z);
		for(int i = 0; i < z; ++i)
		cout << mass_y[i] <<";";
		cout << endl;
		

		
	}


// генерируем. 
	
	else {
		cout <<"vvedite kol-vo elementov v 1'om massive \n";
	int n;
	cin >> n;
	int q = 0,z=0,k=0;
	const int size = 1000;
	int mass_x_sl [size];
	
	int i;
	srand(time(0));
	for (i=0;i<n;i++,++k) {
		mass_x_sl[i]=rand() % 1000;

		}
		// сортировка
		cout << "Сортировка(по возрастанию, 1ый массив): ";		
		sort(mass_x_sl, mass_x_sl + k);
		for(int i = 0; i < k; ++i)
			cout << mass_x_sl[i] <<";";
		cout << endl;
		
		cout <<"vvedite kol-vo elementov v 2'om massive \n";
		int n2;
		cin >> n2;
        int mass_y_sl [size];
		srand(time(0));
		for (i=0;i<n2;i++, ++q) {
			mass_y_sl[i]=rand() % 1000;
			
		}
		// сортировка
		cout << "Сортировка(по возрастанию, 2ой массив): ";		
		sort(mass_y_sl, mass_y_sl + q);
		for(int i = 0; i < q; ++i)
			cout << mass_y_sl[i] <<";";
		cout << endl;
		
	}
	return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 20:44     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y.
Посмотрите здесь:

C++ Массив: Сформировать третий массив, в который включить все отрицательные элементы массива А и все максимальные элементы массива В.
Массив: Сформировать массив С, содержащий те элементы массива А, имеющие значения кратные М, которые есть в массиве В. C++
C++ Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее число раз
Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B C++
Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 21:03     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #2
На уровне идеи, а не кода. Сделать четвертый массив, в котором индексом будет являться значение массива X и при каждом элементе делать что-то вроде z[x[i]]++; А потом пробежаться по всем элементам масива Y в таком же формате только z[y[i]]--; а потом взять только те элементы в которых есть положительные числа. if (z[i] > 0 ) и присвоить их третьему массиву из задачи. Я бы как-то так сделал.
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 21:10  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #3
На уровне идеи, а не кода. Сделать четвертый массив, в котором индексом будет являться значение массива X и при каждом элементе делать что-то вроде z[x[i]]++; А потом пробежаться по всем элементам масива Y в таком же формате только z[y[i]]--; а потом взять только те элементы в которых есть положительные числа. if (z[i] > 0 ) и присвоить их третьему массиву из задачи. Я бы как-то так сделал.
Если честно, не совсем уловил ход ваших мылсей (
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 21:12     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #4
Цитата Сообщение от zaqqaz Посмотреть сообщение
Если честно, не совсем уловил ход ваших мылсей (
Четвертый массив индексом которого является значение массива икс, а значением элемента является частота с которой он в массиве икс встречается. Потом из этого вычесть частоту с которой он встречается в массиве Y, если частота будет больше нуля значит встречается чаще. И все эти элементы записать в необходимый третий массив.
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 21:17  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #5
Четвертый массив индексом которого является значение массива икс, а значением элемента является частота с которой он в массиве икс встречается. Потом из этого вычесть частоту с которой он встречается в массиве Y, если частота будет больше нуля значит встречается чаще. И все эти элементы записать в необходимый третий массив.
Спасибо. Теперь понял. Правда не до конца представляю как это реализовать, буду пробывать.
Если кто сможет помочь кодовой составляющей, буду премного благодарен.
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 21:32     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #6
Цитата Сообщение от zaqqaz Посмотреть сообщение
Спасибо. Теперь понял. Правда не до конца представляю как это реализовать, буду пробывать.
Если кто сможет помочь кодовой составляющей, буду премного благодарен.
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
int x[sizeOfX];
int y[sizeOfY];
int z[1000] = {0};  //массив z размер исходя из диапазона чисел
int a[]; //массив в который переносим элементы
 
 
//считаем с какой частотой встречаются элементы
//в массиве x
for ( int i = 0; i < sizeOfX; i++ )
   z[x[i]]++;
 
//вычитаем из этого элементы встречающиеся
//в массиве y   
for ( int i = 0; i < sizeOfY; i++ )
   z[y[i]]--;
    
//присваиваем массиву а, элементы встречающиеся в X
//чаще чем в Y
for ( int i = 0, j = 0; i < 1000; i++ )
{
   if ( z[i] > 0 )
    {  
    a[j] = i;
    j++;
   }
}
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 22:04  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #7
Цитата Сообщение от Navern Посмотреть сообщение
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
int x[sizeOfX];
int y[sizeOfY];
int z[1000] = {0};  //массив z размер исходя из диапазона чисел
int a[]; //массив в который переносим элементы
 
 
//считаем с какой частотой встречаются элементы
//в массиве x
for ( int i = 0; i < sizeOfX; i++ )
   z[x[i]]++;
 
//вычитаем из этого элементы встречающиеся
//в массиве y   
for ( int i = 0; i < sizeOfY; i++ )
   z[y[i]]--;
    
//присваиваем массиву а, элементы встречающиеся в X
//чаще чем в Y
for ( int i = 0, j = 0; i < 1000; i++ )
{
   if ( z[i] > 0 )
    {  
    a[j] = i;
    j++;
   }
}
Попробовал вставить ваш код, но результат получается неверным.
Наверняка я где-то перемудрил когда его адаптировал.
Если не трудно гляньте:

Код
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;

int main() {
	setlocale (LC_ALL, ".1251");

	cout <<"Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем \n";
	int p; // проверка(сами или нет)
	cin >> p;
	if (p == 1){
	cout <<"vvedite kol-vo elementov v 1'om massive \n";
	int n;
	cin >> n;
		int q = 0,z=0,k=0;
	const int size = 1000;
		int mass_x [size];
		for (int i = 0; i != n; ++i, ++q, ++k) {		
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_x[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_x, mass_x + k);
		for(int i = 0; i < k; ++i)
		cout << mass_x[i] <<";";
		cout << endl;

		
		

	cout <<"vvedite kol-vo elementov v 2'om massive \n";
	int n2;
	cin >> n2;
	
    int mass_y [size];
	for (int i = 0; i != n2; ++i, ++z) {
		cout << "vved " << i + 1 << " elem: ";
		cin >> mass_y[i]; 

	}
		// сортировка
		cout << "Сортировка(по возрастанию): ";		
		sort(mass_y, mass_y + z);
		for(int i = 0; i < z; ++i)
		cout << mass_y[i] <<";";
		cout << endl;
		

		
	}


// генерируем. 
	
	else {
		cout <<"vvedite kol-vo elementov v 1'om massive \n";
	int n;
	cin >> n;
	int q = 0,z=0,k=0;
	const int size = 1000;
	int mass_x_sl [size];

		
	
	int i;
	srand(time(0));
	for (i=0;i<n;i++,++k) {
		mass_x_sl[i]=rand() % 1000;

		}
		// сортировка
		cout << "Сортировка(по возрастанию, 1ый массив): ";		
		sort(mass_x_sl, mass_x_sl + k);
		for(int i = 0; i < k; ++i)
		cout << mass_x_sl[i] <<";";
		cout << endl;
		
		
		
		
		
		
		cout <<"vvedite kol-vo elementov v 2'om massive \n";
		int n2;
		cin >> n2;
        int mass_y_sl [size];
		srand(time(0));
		for (i=0;i<n2;i++, ++q) {
			mass_y_sl[i]=rand() % 1000;
			
			
			
		}
		// сортировка
		cout << "Сортировка(по возрастанию, 2ой массив): ";		
		sort(mass_y_sl, mass_y_sl + q);
		for(int i = 0; i < q; ++i){
			cout << mass_y_sl[i] <<";";
			cout << endl;}
		
		
[B]
		int z2[size];
		int a[size]; //массив в который переносим элементы
		for ( int i = 0; i < k; i++ )
			z2[mass_x_sl[i]]++;
		
		//вычитаем из этого элементы встречающиеся
		//в массиве y   
		for ( int i = 0; i < q; i++ )
			z2[mass_y_sl[i]]--;
        
		for ( int i = 0, j = 0; i < 1000; i++ )
		{
			if ( z2[i] > 0 )
			{  
				a[j] = i;
				j++;
			}
			
		}
		cout <<a[size] <<"- Третий массив";[/B]
		
		
	}
	return 0;
}

Вставлял только в конце при генерации элементов массива, для проверки. В "ручной ввод" скопипастить будет не проблема, осталось только разобраться почему результат оказывается не верным.
Сам новичок в C++. Спасибо за понимание.
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 22:23     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #8
Цитата Сообщение от zaqqaz Посмотреть сообщение
int z2[size];
int z2[size] = {0};
если ты счетчик нулём не инициализируешь получится чушь. Я это исправил у меня программа работает, всё норм.
Еще видимо массив a нулём тоже надо будет инициализировать и чтобы посчитать количество в нём элементов, придеться пройтись по всем элементам и посчитать те, что больше нуля.
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 22:29  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #9
Цитата Сообщение от Navern Посмотреть сообщение
int z2[size] = {0};
если ты счетчик нулём не инициализируешь получится чушь. Я это исправил у меня программа работает, всё норм.
Если так, то в ответе всегда "0" получается.


Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем
0
vvedite kol-vo elementov v 1'om massive
3
Сортировка(по возрастанию, 1ый массив): 44;109;737;
vvedite kol-vo elementov v 2'om massive
2
Сортировка(по возрастанию, 2ой массив): 523;
670;
0- Третий массив
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 22:36     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #10
Цитата Сообщение от Navern Посмотреть сообщение
int z2[size] = {0};
Еще видимо массив a нулём тоже надо будет инициализировать и чтобы посчитать количество в нём элементов, придеться пройтись по всем элементам и посчитать те, что больше нуля.
cout <<a[size] <<"- Третий массив";
чтобы весь массив вывести нужен оператор for, а не просто cout << a;

Добавлено через 3 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
    
int count = 0;
for ( int i = 0; a[i] != 0; i++ )
{   
    cout << a[i] << " ";
                         
    if ( a[i] > 0 )
       count++;
}
 
cout << "count: " << count;
как-то так наверное будет.
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 22:46  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #11
И все же не работает... теперь выводит только элементы первого массива x(остальное пространство "size" заполняется нулями, но это не проблема(легко решить).

#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;

int main() {
setlocale (LC_ALL, ".1251");

cout <<"Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем \n";
int p; // проверка(сами или нет)
cin >> p;
if (p == 1){
cout <<"vvedite kol-vo elementov v 1'om massive \n";
int n;
cin >> n;
int q = 0,z=0,k=0;
const int size = 1000;
int mass_x [size];
for (int i = 0; i != n; ++i, ++q, ++k) {
cout << "vved " << i + 1 << " elem: ";
cin >> mass_x[i];

}
// сортировка
cout << "Сортировка(по возрастанию): ";
sort(mass_x, mass_x + k);
for(int i = 0; i < k; ++i)
cout << mass_x[i] <<";";
cout << endl;




cout <<"vvedite kol-vo elementov v 2'om massive \n";
int n2;
cin >> n2;

int mass_y [size];
for (int i = 0; i != n2; ++i, ++z) {
cout << "vved " << i + 1 << " elem: ";
cin >> mass_y[i];

}
// сортировка
cout << "Сортировка(по возрастанию): ";
sort(mass_y, mass_y + z);
for(int i = 0; i < z; ++i)
cout << mass_y[i] <<";";
cout << endl;



}


// генерируем.

else {
cout <<"vvedite kol-vo elementov v 1'om massive \n";
int n;
cin >> n;
int q = 0,z=0,k=0;
const int size = 1000;
int mass_x_sl [size];



int i;
srand(time(0));
for (i=0;i<n;i++,++k) {
mass_x_sl[i]=rand() % 1000;

}
// сортировка
cout << "Сортировка(по возрастанию, 1ый массив): ";
sort(mass_x_sl, mass_x_sl + k);
for(int i = 0; i < k; ++i)
cout << mass_x_sl[i] <<";";
cout << endl;






cout <<"vvedite kol-vo elementov v 2'om massive \n";
int n2;
cin >> n2;
int mass_y_sl [size];
srand(time(0));
for (i=0;i<n2;i++, ++q) {
mass_y_sl[i]=rand() % 1000;



}
// сортировка
cout << "Сортировка(по возрастанию, 2ой массив): ";
sort(mass_y_sl, mass_y_sl + q);
for(int i = 0; i < q; ++i){
cout << mass_y_sl[i] <<";";}


cout << endl;
cout << endl;
int z2[size] = {0};
int a[size] = {0}; //массив в который переносим элементы
for ( int i = 0; i < k; i++ )
z2[mass_x_sl[i]]++;

//вычитаем из этого элементы встречающиеся
//в массиве y
for ( int i = 0; i < q; i++ )
z2[mass_y_sl[i]]--;

for ( int i = 0, j = 0; i < 1000; i++ )
{
if ( z2[i] > 0 )
{
a[j] = i;
j++;
}

}

int count = 0;
for ( int i = 0; i < size; i++ )
{
cout << a[i] << " ";

if ( a[i] > 0 )
count++;
}

cout << "count: " << count;


}
return 0;
}
Пробовал еще так выводить:
Код
		cout<<"Третий массив: ";
		for(unsigned int i=0;i<a[size];i++)
			cout<<a[i]<<" ";
		cout<<endl;
Но тогда вообще пустота ((
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 22:53     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #12
Цитата Сообщение от zaqqaz Посмотреть сообщение
int a[size] = {0};
я у себя изменил эту строчку еще раз, а тебе забыл сказать, поменяй обратно на a[size]; и всё ок будет. По крайней мере при случайном засеевании.

Добавлено через 1 минуту
Цитата Сообщение от zaqqaz Посмотреть сообщение
for ( int i = 0; i < size; i++ )
кстати поменяй условие окончание цикла как у меня в предыдущем сообщении, тогда куча нулей не будет выводиться. Покрасивше.
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 23:00  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #13
Да, нет, все равно выводит элементы только первого массива.

Если не затруднит, вставь сюда целиком код который у тебя работает.

Добавлено через 1 минуту
Да, и условие окончания цикла у меня такое же ведь)
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 23:03     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #14
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;
 
int main() {
        setlocale (LC_ALL, ".1251");
 
        cout <<"Буддем вводить элементы массивов сами или же генерируем? ('1; - сами, '0' - генерируем \n";
        int p; // проверка(сами или нет)
        cin >> p;
        if (p == 1){
        cout <<"vvedite kol-vo elementov v 1'om massive \n";
        int n;
        cin >> n;
                int q = 0,z=0,k=0;
        const int size = 1000;
                int mass_x [size];
                for (int i = 0; i != n; ++i, ++q, ++k) {                
                cout << "vved " << i + 1 << " elem: ";
                cin >> mass_x[i]; 
 
        }
                // сортировка
                cout << "Сортировка(по возрастанию): ";         
                sort(mass_x, mass_x + k);
                for(int i = 0; i < k; ++i)
                cout << mass_x[i] <<";";
                cout << endl;
 
                
                
 
        cout <<"vvedite kol-vo elementov v 2'om massive \n";
        int n2;
        cin >> n2;
        
    int mass_y [size];
        for (int i = 0; i != n2; ++i, ++z) {
                cout << "vved " << i + 1 << " elem: ";
                cin >> mass_y[i]; 
 
        }
                // сортировка
                cout << "Сортировка(по возрастанию): ";         
                sort(mass_y, mass_y + z);
                for(int i = 0; i < z; ++i)
                cout << mass_y[i] <<";";
                cout << endl;
                
 
                
        }
 
 
// генерируем. 
        
        else {
                cout <<"vvedite kol-vo elementov v 1'om massive \n";
        int n;
        cin >> n;
        int q = 0,z=0,k=0;
        const int size = 1000;
        int mass_x_sl [size];
 
                
        
        int i;
        srand(time(0));
        for (i=0;i<n;i++,++k) {
                mass_x_sl[i]=rand() % 1000;
 
                }
                // сортировка
                cout << "Сортировка(по возрастанию, 1ый массив): ";             
                sort(mass_x_sl, mass_x_sl + k);
                for(int i = 0; i < k; ++i)
                cout << mass_x_sl[i] <<";";
                cout << endl;
                
                
                
                
                
                
                cout <<"vvedite kol-vo elementov v 2'om massive \n";
                int n2;
                cin >> n2;
        int mass_y_sl [size];
                srand(time(0));
                for (i=0;i<n2;i++, ++q) {
                        mass_y_sl[i]=rand() % 1000;
                        
                        
                        
                }
                // сортировка
                cout << "Сортировка(по возрастанию, 2ой массив): ";             
                sort(mass_y_sl, mass_y_sl + q);
                for(int i = 0; i < q; ++i){
                        cout << mass_y_sl[i] <<";";
                        cout << endl;}
                
                
 
                int z2[size] = {0};
                int a[size]; //массив в который переносим элементы
                for ( int i = 0; i < k; i++ )
                        z2[mass_x_sl[i]]++;
                
                //вычитаем из этого элементы встречающиеся
                //в массиве y   
                for ( int i = 0; i < q; i++ )
                        z2[mass_y_sl[i]]--;
        
                for ( int i = 0, j = 0; i < 1000; i++ )
                {
                        if ( z2[i] > 0 )
                        {  
                                a[j] = i;
                                j++;
                        }
                        
                }
                     cout << endl;
                     int count = 0;
                for ( int i = 0; a[i] != 0; i++ )
                     {   
                        cout << a[i] << " ";
                         
                         if ( a[i] > 0 )
                            count++;
                             
                     }
                cout << "count: " << count;
        }
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 23:10     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y.
Еще ссылки по теме:

Записать в третий массив С все элементы из массива B, которые не встречаются в массиве А C++
Перенести в третий массив те элементы искомых, которые больше полусуммы средних арифметических C++
Перенести в массив те элементы из массивов, которые меньше чем (max_a+max_b)/2 C++

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

Или воспользуйтесь поиском по форуму:
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 23:10  [ТС]     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. #15
Navern, большое спасибо!
Все работает теперь! При ручном вводе также сделал - работает !

p.s. А то что я писал, что выводит элементы только первого массива - так это моя ошибка... я и не замечал что второй массив генерируется вообще без схожих элементов!

Ура, товарищи!!! ))
Yandex
Объявления
03.10.2011, 23:10     Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y.
Ответ Создать тему
Опции темы

Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru