Witam
Dostałem od prowadzącego zadanie o następującej treści:
Stwórz klasę zbiór, która będzie przechowywać losowe liczby bez powtórzeń z możliwością dolosowania ich do zbioru oraz sprawdzenia, czy dana liczba jest już w zbiorze.
Przykładowe metody to: stwórz zbiór, dolosuj liczbę, znajdź liczbę, pokaż zbiór oraz za pomocą przeciążenia operatora wykonać dodawanie zbiorów.
Niestety mało co znam się na c#, oto co udało mi się jak na razie napisać:
#include<stdio.h>
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<set>
#include <algorithm>
#include <iterator>
using namespace std;
class zbior
{
public: int lelementow, zbiora[], zbiorb[], x, min, max, tab[];
zbior(){
min=1;
max=99;
lelementow=4;
tab[lelementow];
zbiora[lelementow]=zbior::tworz_zbior();
zbior::pokaz_zbior(zbiora, lelementow);
cout << endl;
zbiorb[lelementow]=zbior::tworz_zbior();
zbior::pokaz_zbior(zbiorb, lelementow);
};
int losuj_liczbe(){
x=rand()%(max-min+1)+min;
return x;
};
int tworz_zbior(){
int i;
for(i=0; i<= lelementow; i++){
tab[i] = zbior::losuj_liczbe();
}
};
public: void pokaz_zbior(int zbior[], int rozmiar){
int i;
for(i=0; i<= rozmiar; i++){
cout << zbior[i] << " ";
}
};
// a = 1,2,4
// b = 3,4, 4, ,5;
void dodaj(){
int l=4;
for(int i=0; i<lelementow; i++){
for(int j=0; j<=lelementow; j++){
if(zbiora[j] > zbiorb[i]) break;
if(zbiora[j] != zbiorb[i]){
l=l+1;
zbiorb[l]=zbiora[j];
}
}
}
}
};
main(){
srand(time(NULL));
/*
std::sort(zbiora, zbiora + 5);
std::sort(zbiorb, zbiorb + 5);
zbiora[lelementow]=zbior::tworz_zbior();
zbiorb[lelementow]=zbior::tworz_zbior();
zbior::pokaz_zbior(zbiora, lelementow);
cout << endl;
zbior::pokaz_zbior(zbiorb, lelementow);
*/
zbior z=zbior();
//z.tworz_zbior();
system("pause");
return 0;
}
Na początek mam problem z poprawnym losowaniem zbiorów, ponieważ oba zbiory losuje mi zawsze z co najmniej 3 takimi samymi liczbami(nie ważne czy liczb w zbiorze jest 5 czy 50). Nie wiem również jak najlepiej rozwiązać problem z powtarzającymi się liczbami przy losowaniu i dodawaniu, których nie może być w zbiorze. Znalazłem coś takiego jak biblioteka "set", która jest zbiorem i w której elementy nie mogą się powtarzać, ale nie wiem jak ją poprawnie zastosować, a przede wszystkim jak dodać do siebie dwa "sety".
Proszę o jakieś wskazówki, lub sugestie w jaki sposób najlepiej można by rozwiązać to zadanie. Jak widać próbowałem dodawanie zbiorów rozwiązać za pomocą posortowania tablic, ale niestety nie działało to poprawnie. Przeciążenie operatora usunąłem ponieważ za każdym razem wyrzucało mi błąd.