Suma rozłączna zbiorów

0

Dane są dwa zbiory A i B (n-elementowy i m-elementowy) o elementach będących liczbami naturalnymi. Elementy tych zbiorów dane są za pomocą dwóch tablic uporządkowanych rosnąco.
Skonstruuj algorytm wyznaczania liczby elementów o wartościach nieparzystych należących do zbioru A ⊕ B (suma rozłączna zbiorów).
Np. A={1,2,3,5,8}, B={0,1,3,4,8,9,10}, A⊕ B ={0,2,4,5,9,10}, ale wartości nieparzyste to: 5, 9. Liczba szukanych elementów to 2.

Cześć jestem bardzo słaby w programowaniu a potrzebuje zrobić projekt.
Wymagania to jest napisanie go w języku c++
-jak najprościej się da
-najlepiej jak najmniej funkcji wbudowanych
-możliwość wpisywania własnych danych do obu tablic

Z góry dziękuje za pomoc

0

Chętnie pomożemy, w czym problem?

0

Problem ogólnie w całym ćwiczeniu.
Niestety jestem laikiem w programowaniu i nie wiem jak to zrobić...

5

Jeśli chcesz żeby ktoś wykonał projekt za Ciebie, to od tego jest dział https://4programmers.net/Forum/Og%C5%82oszenia_drobne - tylko, że regulamin zabrania takich ogłoszeń w sprawach powiązanych ze studiami i szkołami (prawo chyba też, swoją drogą).

Jeśli oczekujesz pomocy w wykonaniu (tzn Ty robisz, a jak coś sprawia problem to pytasz o tę konkretną rzecz), to napisałeś w dobrym dziale. Ale wtedy musisz wykazać minimum dobrej woli i pokazać wkład własny.

3

No to nie ma innej rady — jak problem jest ze wszystkim, to trzeba zacząć od zera, czyli od wybrania jakiegoś podręcznika do nauki języka. Ze swojej strony polecam tę autorstwa Stroustrupa.

0

Jeżeli nie wiesz od czego zacząć, to spróbuj od poniższego kodu.

#include <iostream>
#include <vector>

using namespace std;

using table = vector<int>;

table find_odd_disjunctive_sum( const table& A , const table& B )
{
    table result;
    // ....
    // algorithm
    // ....
    return result;
}

int main()
{
    table  A {1,2,3,5,8}, B {0,1,3,4,8,9,10};

    for( const auto& element : find_odd_disjunctive_sum(A,B) )
    {
        cout << element << ' ';
    }
    cout << endl;
}
1

Na pierwszy rzut oka nic wspólnego, ale właśnie fragment tego algorytmu jest potrzebny.
https://pl.wikipedia.org/wiki/Sortowanie_przez_scalanie

#include <iostream>
#include <set>
using namespace std;

size_t proceed(const set<int> &A,const set<int> &B)
{
	size_t count=0;
	set<int>::const_iterator a=begin(A),b=begin(B);
	while((a!=end(A))&&(b!=end(B)))
	{
		
		if(*a<*b) count+=1&(*(a++));
		else if(*a>*b) count+=1&(*(b++));
		else
		{
			++a;
			++b;
		}
	}
	while(a!=end(A)) count+=1&(*(a++));
	while(b!=end(B)) count+=1&(*(b++));
	return count;
}

int main()
{
	set<int> A{{1,2,3,5,8}},B{{0,1,3,4,8,9,10}};
	cout<<proceed(A,B)<<endl;
	return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1