Вот сама задача: Даны 2 одномерных массива: А из 10 элементов и В из 15 элементов. Сформировать 2 новых массива: массив Х из элементов массива А, не входящих в массив В, и массив У из элементов массива В, не входящих в А.
Вот мой код:
#include
#include
using namespace std;
void zapol(int arr[], const int size) {
for (int i = 0; i < size; i++) {
arr[i] = rand() % 10;
}
}
void vivod(int arr[], const int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << "\t";
}
}
void xxx(int arr[], const int size) {
for (int i = 0; i < size; i++) {
}
}
void main() {
const int si = 10;
const int sa = 10;
int a[si];
int b[sa];
int a1[si];
int a2[sa];
cout << "\nMassive #1:" << endl;
zapol(a, si);
vivod(a, si);
cout << "\nMassive #2:" << endl;
zapol(b, sa);
vivod(b, sa);
for (int i = 0; i < si; i++) {
if (a[i] != b[i]) {
cout << a[i] << endl;
}
}
}
Другие языки программирования и технологии
Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
задача решена неверно, т к B должен состоять из 15 элементов и, если a1 = X и a2 = Y, то где их формирование?
Код примерно следующий:
void fill(int* array, const size_t& size){
for (size_t i = 0; i < size; i++) {
array[i] = rand() % 20;
}
}
void print(int* array, const size_t& size, bool print_zero_element = true){
for (size_t i = 0; i < size; i++) {
if(print_zero_element || (!print_zero_element && array[i] > 0))
cout << array[i] << "\t";
}
cout << endl;
}
void fill_set(int* lhs, int* rhs, int* dest, const size_t& lhs_size, const size_t& rhs_size){
for(size_t i = 0, k = 0; i < lhs_size; ++i){
int element = lhs[i];
bool found = false;
for(size_t j = 0; j < rhs_size; ++j){
if(rhs[j] == element) {
found = true;
break;
}
}
if(!found){
dest[k] = element;
++k;
}
}
}
int main()
{
const size_t size_a = 10;
const size_t size_b = 15;
int a[size_a];
int b[size_b];
fill(a, size_a);
print(a, size_a);
fill(b, size_b);
print(b, size_b, false);
//массив X не может иметь размер больше массива a
int x[size_a]{};
print(x, size_a, false);
fill_set(a, b, x, size_a, size_b);
print(x, size_a, false);
//массив Y не может иметь размер больше массива b
int y[size_b]{};
print(y, size_b, false);
fill_set(b, a, y, size_b, size_a);
print(y, size_b, false);
return 0;
}
Код примерно следующий:
void fill(int* array, const size_t& size){
for (size_t i = 0; i < size; i++) {
array[i] = rand() % 20;
}
}
void print(int* array, const size_t& size, bool print_zero_element = true){
for (size_t i = 0; i < size; i++) {
if(print_zero_element || (!print_zero_element && array[i] > 0))
cout << array[i] << "\t";
}
cout << endl;
}
void fill_set(int* lhs, int* rhs, int* dest, const size_t& lhs_size, const size_t& rhs_size){
for(size_t i = 0, k = 0; i < lhs_size; ++i){
int element = lhs[i];
bool found = false;
for(size_t j = 0; j < rhs_size; ++j){
if(rhs[j] == element) {
found = true;
break;
}
}
if(!found){
dest[k] = element;
++k;
}
}
}
int main()
{
const size_t size_a = 10;
const size_t size_b = 15;
int a[size_a];
int b[size_b];
fill(a, size_a);
print(a, size_a);
fill(b, size_b);
print(b, size_b, false);
//массив X не может иметь размер больше массива a
int x[size_a]{};
print(x, size_a, false);
fill_set(a, b, x, size_a, size_b);
print(x, size_a, false);
//массив Y не может иметь размер больше массива b
int y[size_b]{};
print(y, size_b, false);
fill_set(b, a, y, size_b, size_a);
print(y, size_b, false);
return 0;
}
Похожие вопросы
- Помогите решить задачи на языке C# Срочно
- Помогите, пожалуйста, решить задачу на языке C++
- Помогите решить задачу на языке Паскаль. Найти сумму всех чётных чисел от 1 до 1000 (задачу решить 2 способами)
- Народ! Помогите решить задачи на языке паскаль. Очень срочно надо! Буду рада решению хотя бы одной из списка=)
- Помогите решить задачу на языке Pascal
- Помогите решить задачу на языке python
- Помогите решить задачу c#
- Помогите решить задачи на C#
- Помогите решить задачу (Visual c++)
- Помогите решить задачу в visual studio c++