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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
#1

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

03.10.2011, 20:44. Просмотров 1213. Ответов 14
Метки нет (Все метки)

Задача:
Заданы два целочисленных массива 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++. Заданы массивы а1, а2, …, а20 и в1,в2,…,в10. Перенести в массив С те элементы массива А, которые не...

Записать в третий массив С все элементы из массива B, которые не встречаются в массиве А - C++
Есть два массива A и B. Нужно записать в третий массив С все элементы из массива B, которые не встречаются в массиве А. Что-то не...

Массив: Сформировать массив С, содержащий те элементы массива А, имеющие значения кратные М, которые есть в массиве В. - C++
Сформировать одномерный массив С , содержащий те элементы исходных массивов А и (или) В, которые указаны в задании. Элементы массива А,...

Перенести в третий массив те элементы искомых, которые больше полусуммы средних арифметических - C++
Заданы массивы а1, а2, … , аn и b1, b2, … , bm Перенести в третий массив те элементы массивов А и В, которые больше (аср+вср)/2.

Найти элементы массива В, которые не встречаются в массиве А - C++
Даны два массива: А и B . Образовать третий массив минимального возможного размера, в котором собрать: Элементы массива В, которые не...

Перенести в массив те элементы из массивов, которые меньше чем (max_a+max_b)/2 - C++
Заданы массивы а1, а2, … , аn и b1, b2, … , bm Перенести в массив С те элементы из массивов, которые меньше чем (max_a+max_b)/2

Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B - C++
4. Даны два массива: А и B (M и N вводятся с клавиатуры). Необходимо создать третий массив минимально возможного размера, в котором нужно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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.
Еще ссылки по теме:

Найти элементы, которые есть как в первом массиве так и во втором, и вывести их в третий массив - C++
Всем доброго времени суток у меня такой вопрос как решить такую задачку: у нас есть массив arr1 и arr2 нужно найти элементы которые есть...

Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее число раз - C++
СРОЧНО!!! ПОМОГИТЕ ПОЖАЛУЙСТА,ОЧЕНЬ НУЖНО!!! ЗАРАНИЕ БЛАГОДАРЮ!) ...

Перенести в массив С те элементы из массива А, которые больше Аср, но меньше Bmax - C++
Заданы массивы а1, а2, … ,an и b1, b2, … , bm Перенести в массив С те элементы из массива А, которые больше чем аср, но меньше max_b. ...

Дано два целочисленных массива Сформировать новый массив, который содержит элементы первого массива, которых нет во втором - C++
Полное условие: Дано два целочисленных массива, состоящих из неповторяющихся чисел. Сформировать новый массив, который содержит элементы...

В массив С перенести те элементы А, которые меньше min(В), и те элементы B, которые больше max(A) - 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.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru