Tu sam.. Imam mnogo obaveza, te ne stigoh odmah. kazi mi da li je u redu sledece:
Compajliranje...
Code:
PeRuN@slack:~/Desktop/New Folder$ g++ proba.cpp
PeRuN@slack:~/Desktop/New Folder$
Dakle, cisto....
Code:
PeRuN@slack:~/Desktop/New Folder$ ./a.out
Niz se unosi sve dok je u granici [0,100]
Svi elementi poslije bice ignorisani!
1
7
3
6
102
Niz se unosi sve dok je u granici [0,100]
Svi elementi poslije bice ignorisani!
11
17
13
16
102
Skup a: 1,3,6,7
Savrseni brojevi: 6
Skup b: 11,13,16,17
Do sada ima 2 skupa
Savrseni brojevi:
Unija: 1,3,6,7,11,13,16,17
Do sada ima 3 skupa
Presjek:
Do sada ima 4 skupa
Unesite treci skup!
Niz se unosi sve dok je u granici [0,100]
Svi elementi poslije bice ignorisani!
21
27
23
26
101
Unija (I U II U II): 1,3,6,7,11,13,16,17,21,23,26,27
Dekartov proizvod 2 skupa:
(1,11),(1,13),(1,16),(1,17),(3,11),(3,13),(3,16),(3,17),(6,11),(6,13),(6,16),(6,17),(7,11),(7,13),(7,16),(7,17)
PeRuN@slack:~/Desktop/New Folder$
Elem, da rezimiramo. Svoje greske nemoj pridavati kompajleru, tako nikada nista neces nauciti... Evo i sta je izmenjeno, a ti razmisli zasto. Sledeca tema za razmisljanje je ANSI standard u GCC-u i onom "monopolistickom"... Ako ne bude jasno pitaj tog tvog Malbaskog!

Ne vidim razlog da se prozivamo, ali je bedno tako nesto uraditi kada nisam bio tu, postoji i PM ili slicno.. Dobro, evo ovako:
Code:
//Valjda konacna verzija ovog zadatka
#include <iostream>
using namespace std;
class Skup {
public:
//F-je prema uslovima zadatka
Skup ();
~Skup ();
Skup (const Skup &);
Skup unija (const Skup &);
Skup presjek (const Skup &);
friend void savrseni_brojevi (const Skup &);
friend void printSkup (const Skup &);
friend void napuniSkup (Skup &);
friend void dekart (const Skup &,const Skup&);
void ubaciElement (int);
void izbaciElement (int);
bool jednak (const Skup &);
int broj_skupova ();
private:
//Niz gdje ce biti smjesteni podaci
int niz[101];
//Brojac skupova
static int bs;
//Obicna f-ja za provjeru da li je neki broj unutar [0,100]
int u_granici(int);
};
//Setujemo brojac skupova na 0
int Skup :: bs = 0;
//Konstruktor
Skup :: Skup () {
//Setujemo sve vrijednosti niza na 0
for (int i=0; i<=100; i++) niz[i]=0;
//Povecavamo broj skupova
bs++;
}
//Konstruktor kopije
Skup :: Skup (const Skup &sk) {
//Posto smo unistli onaj pravi konstruktor kopije,
//moramo praviti identicnu kopiju objekta
for (int i=0; i<=100; i++) niz[i] = sk.niz[i];
//Povecavamo broj skupova
bs++;
}
//Destruktor
Skup :: ~Skup () {
//Smanjujemo broj skupova
bs--;
}
//F-ja vraca broj skupova
int Skup :: broj_skupova () {
return bs;
}
//F-ja za dodavanje elementa u skup
void Skup :: ubaciElement (int el) {
//Ako je element u granici [0,100] dodajemo ga u skup
if (u_granici(el)) niz[el]=1;
//Ako nije u granici, obavjestimo korisnika
else cout << "Elementi skupa moraju biti unutar [0,100]" << endl;
}
//F-ja za brisanje elementa iz skupa
void Skup :: izbaciElement (int el) {
//Ako je element u skupu, izbrisemo ga
if (niz[el]==1) niz[el]=0;
}
//F-ja za provjeru jednakosti 2 skupa
bool Skup :: jednak (const Skup &sk) {
for (int i=0; i<=100; i++)
//Ako su 2 elementa razlicita odmah kazemo da su skupovi razliciti
if (niz[i] != sk.niz[i]) return 0;
return 1;
}
//F-ja za uniju 2 skupa
Skup Skup :: unija (const Skup &sk) {
Skup tmp;
for (int i=0; i<=100; i++)
//Ako se element nalazi u nekom od 2 skupa, dodamo ga u novi skup
if (niz[i] || sk.niz[i]) tmp.niz[i]=1;
return tmp;
}
//F-ja za presjek 2 skupa
Skup Skup :: presjek (const Skup &sk) {
Skup tmp;
for (int i=0; i<=100; i++)
//Ako se element ne nalazi u oba skupa , dodamo ga u novi skup
if (niz[i] && sk.niz[i]) tmp.niz[i]=1;
return tmp;
}
//F-ja za punjenje postojeceg skupa novim elementima
void napuniSkup (Skup &sk) {
int el;
//Obavjestenje korisniku
cout << "Niz se unosi sve dok je u granici [0,100]" << endl;
cout << "Svi elementi poslije bice ignorisani!" << endl;
//Ukoliko se unese broj koji nije u granici, iskace se iz while petlje
do {
//Unesemo neki broj
cin >> el;
//Ako je element u granici, dodamo ga u skup
if (sk.u_granici(el)) sk.niz[el]=1;
}
while (sk.u_granici(el));
}
//F-ja za ispis elemenata skupa
void printSkup (const Skup &sk) {
for (int i=0, br=0; i<=100; i++)
if (sk.niz[i]==1) {
//Ovaj br je cisto estetske prirode i sluzi se nebi ispisao zarez
//pa onda prvi element skupa, jer nema logike
if (br!=0) cout << ",";
cout << i;
br++;
}
cout << endl;
}
void savrseni_brojevi (const Skup &sk) {
int tmp1 = 0, i, j;
for(i=0; i<=100; i++) {
if (sk.niz[i]==1){
for(j=1; j<i; j++) if (i % j == 0) tmp1+=j;
if (i == tmp1 && tmp1 != 0) cout << i;
tmp1=0;
}
}
cout << endl;
}
void dekart (const Skup &sk1,const Skup &sk2) {
int br=0;
for (int i=0; i<=100; i++)
for (int j=0; j<=100; j++){
if(sk1.niz[i] == 1 && sk2.niz[j] ==1){
if (br!=0) cout << ",";
cout << "(" << i << "," << j << ")";
br++;
}
}
cout << endl;
}
//Pomocna f-ja za provjeru da li je element u granici [0,100]
int Skup :: u_granici (int el) {
if ((el>=0) && (el<=100)) return 1;
return 0;
}
int main() {
Skup a,b;
napuniSkup(a);
napuniSkup(b);
cout << "Skup a: "; printSkup(a);
cout << "Savrseni brojevi: ";
savrseni_brojevi(a);
cout << "Skup b: "; printSkup(b);
cout << "Do sada ima " << b.broj_skupova() << " skupa" << endl;
cout << "Savrseni brojevi: ";
savrseni_brojevi(b);
//Odradimo uniju
Skup tmp1;
tmp1 = a.unija(b);
//Ispisemo uniju skupova
cout << "Unija: ";
printSkup(tmp1);
cout << "Do sada ima " << a.broj_skupova() << " skupa" << endl;
//Odradimo presjek
Skup tmp2 = a.presjek(b);
//Ispisemo presjek skupova
cout << "Presjek: ";
printSkup(tmp2);
cout << "Do sada ima " << a.broj_skupova() << " skupa" << endl;
Skup c;
cout << "\nUnesite treci skup!\n";
napuniSkup(c);
Skup tmp3 = c.unija(a.unija(b));
cout << "Unija (I U II U II): ";
printSkup(tmp3);
cout << "\nDekartov proizvod 2 skupa:\n";
dekart(a,b);
getchar();
return EXIT_SUCCESS;
}
Veliki, iskreni pozdrav!!!!
Ne treba ciljati u metu vec metati u cilj