Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 29th, 2012  |  syntax: C++  |  size: 2.28 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #ifndef SET_H
  2. #define SET_H
  3.  
  4. #include <stdio.h>
  5. #include <limits.h>
  6.  
  7. class Set
  8. {
  9.         int elementNum;
  10.         int* pData;
  11.  
  12. public:
  13.         // Üres halmazt inicializál.
  14.         Set()
  15.         {
  16.                 elementNum=0;
  17.                 pData=NULL;
  18.         }
  19.  
  20.         // Egy másik halmaz adatai alapján inicializál. Másoljuk a dinamikus adattagokat is!
  21.         Set(Set &theOther)
  22.         {
  23.                 int i;
  24.                 elementNum=theOther.elementNum;
  25.                 delete[] pData;
  26.                 pData=new int [elementNum];
  27.                 for(i=0;i<elementNum;i++)
  28.                 {
  29.                         pData[i]=theOther.pData[i];
  30.                 }
  31.         }
  32.  
  33.         // Destruktor: felszabadítja a dinamikus adattagokat.
  34.         ~Set() {delete[] pData;}
  35.  
  36.         // Beszúr egy elemet a halmazba. Ha a halmaz megtelt hamissal tér vissza.
  37.         // Ha már bent van az elem a halmazba, akkor nem adja hozzá mégegyszer,
  38.         // de igazzal tér vissza, hiszen hiba nem történt, benne van az elem a halmazban.
  39.        
  40.         bool insert(int element)
  41.         {
  42.                 int i;
  43.                 Set theOther;          
  44.                 if(elementNum==INT_MAX) return false;
  45.                 if(isElement(element)==false)
  46.                 {
  47.                         for(i=0;i<elementNum;i++) theOther.pData[i]=pData[i];
  48.                         elementNum++;
  49.                         delete[] pData;
  50.                         pData=new int[elementNum];
  51.                         for(i=0;i<elementNum-1;i++) pData[i]=theOther.pData[i];
  52.                         pData[elementNum]=element;
  53.                         return true;
  54.                 }
  55.                 else return true;
  56.         }
  57.  
  58.         // Eltávolít egy adott elemet a halmazból. Pl. kiveszi az 5-öt a halmazból.
  59.         // Ha nincs benne az elem a halmazban, hibával tér vissza.
  60.         bool remove(int element)
  61.         {
  62.                 int i,j;
  63.                 if(isElement(element)==false) return false;
  64.                 else
  65.                 {
  66.                         for(j=0;j<elementNum;j++)
  67.                         if(pData[j]==element) break;
  68.                         for(i=j+1;i<elementNum;i++)
  69.                                 pData[i-1]=pData[i];
  70.                         Set theOther;
  71.                         elementNum--;
  72.                         for(i=0;i<elementNum;i++) theOther.pData[i]=pData[i];
  73.                         pData=theOther.pData;
  74.                         delete[] theOther.pData;
  75.                         return true;
  76.                 }
  77.         }
  78.  
  79.  
  80.         // Megnézi, hogy egy elem benne van-e a halmazban. Ha igen, igazzal tér vissza, amúgy hamissal.
  81.         bool isElement(int element)
  82.         {
  83.                 int i;
  84.                 for(i=0;i<elementNum;i++)
  85.                 {
  86.                         if(pData[i]==element) return true;
  87.                 }
  88.                 return false;
  89.         }
  90.  
  91.  
  92.         // Kiüríti a halmazt.
  93.         void empty()
  94.         {
  95.                 delete[] pData;
  96.                 elementNum=0;
  97.         }
  98.  
  99.         // Kiírja a halmaz elemeit szóközzel elválasztva. Az elso és az utolsó elem után soremelést rak.
  100.         void print()
  101.         {
  102.                 for(int i=0;i<elementNum;i++) printf("%d ", pData[i]);
  103.         }
  104. };
  105.  
  106. #endif /* SET_H */