Помогите, пожалуйста, разобраться с задачей. Из массива А удалить нечетные элементы, которые не равны нечетным элементам массива В.
Пример: Массив А=3, 4, 5; массив В=1, 5, 6 новый массив А = 4 5.
Мои соображения:
void main()
{
int i, n, x, a[100], b[100];
for (i = 0; i < n; i++) //n-количество элементов
{
cin >> a[i];
}
for (i = 0; i < n; i++)
{
cin >> b[i];
}
x = n;
i = 0;
for (i = 0; i < n; i++)
{
if (a[i] % 2 != 0 != b[i] % 2 !=0)
{ //Дальше надо начать удалять нечетные элементы неравные В
}
}
getch();
}
Накидал вам решение второпях. Естественно, здесь нет никаких проверок на переполнение массива и т.д., это уж сами допишите. Если что не понятно, спрашивайте! =)
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <iostream>
using namespace::std;
int poisk(int B[], int temp, int n2)
{
int k=0;
for (int i=0; i<n2; i++)
{
if (B[i]!=temp)
k++;
}
if (k==n2)
return 1;
else
return 0;
}
void del(int A[], int &n1, int i)
{
for (i; i<n1; i++)
{
A[i]=A[i+1];
}
A[n1-1]=0;
n1--;
}
int _tmain(int argc, _TCHAR* argv[])
{
setlocale(LC_ALL, "Russian");
int A[10];
int B[10];
int n1=0,n2=0;
int temp;
cout<<"Введите количество элементов первого массива: ";
cin>>n1;
cout<<endl<<"Введите количество элементов второго массива: ";
cin>>n2;
cout<<"Вводим значения первого массива:"<<endl;
for (int i=0; i<n1; i++)
{
cin>>A[i];
}
cout<<"Вводим значения второго массива:"<<endl;
for (int i=0; i<n2; i++)
{
cin>>B[i];
}
cout<<endl;
for (int i=0; i<n1; i++)
{
if (A[i]%2!=0)
{
temp=A[i];
if (poisk(B, temp, n2))
{
del(A, n1, i);
i--;
}
}
}
for (int i=0; i<n1; i++)
{
cout<<A[i]<<endl;
}
_getch();
return 0;
}
Можно сделать что-нибудь такое: В цикле пробегаете по массиву А. Если элемент массива четный, то записываете его в результирующий массив. Если же он нечетный, то во вложенном цикле бегаете по массиву В и сравниваете текущее значение из A со значениями В. Если в В находится аналогичный элемент, то записываете его в результирующий массив и прерываете вложенный цикл
По окончании всех этих действий массив А становится равен результирующему массиву
Используйте стандартные контейнеры.
std::unordered_set exceptset(except.begin(), except.end());
std::copy_if(src.begin(), src.end(),
std::ostream_iterator<int>(std::cout, " "),
[&exceptset](const int i)
{
return !(i % 2 != 0 &&
exceptset.find(i) == exceptset.end());
});
Ввод остаётся в качестве упражнения.
Продвижение своими сайтами как стратегия роста и независимости