Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.10.2011, 20:44. Просмотров 1264. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2011, 20:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сформировать третий массив, в который перенести из массива X те элементы, которые встречаются в нём чаще, чем в массиве Y. (C++):

Перенести в массив С те элементы массива А, которые не встречаются в массиве В - C++
Помогите с заданием в C++. Заданы массивы а1, а2, …, а20 и в1,в2,…,в10. Перенести в массив С те элементы массива А, которые не...

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

Массив: Сформировать третий массив, в который включить все отрицательные элементы массива А и все максимальные элементы массива В. - C++
Даны массивы целых чисел A и B. Сформировать третий массив, в который включить все отрицательные элементы массива А и все максимальные...

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

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

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

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

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

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

Добавлено через 1 минуту
Да, и условие окончания цикла у меня такое же ведь)
0
Navern
4 / 4 / 0
Регистрация: 01.10.2011
Сообщений: 33
03.10.2011, 23:03 #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;
}
1
zaqqaz
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 12
03.10.2011, 23:10  [ТС] #15
Navern, большое спасибо!
Все работает теперь! При ручном вводе также сделал - работает !

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

Ура, товарищи!!! ))
0
03.10.2011, 23:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2011, 23:10
Привет! Вот еще темы с ответами:

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

Дано два одномерных массива, создать третий массив который содержит элементы первого массива - C++
Дано два одномерных массива, создать третий массив который содержит элементы первого массива, но без элементов второго массива. Заранее...

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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