Realizar las operaciones de conjunto (Unión y Intersección) utilizando arreglos en C


El presente programa esta hecho con la programación orientado a objeto:
  • El numero de datos de cada conjunto son ingresados por teclado 

#include <iostream>
using namespace std;
#define MAX 10
class conjuntos
{
 private:
  int A[MAX],B[MAX],inter[MAX];
  int ntA,ntB;
 public:
  conjuntos();
  void establecerTerminos(int ,int);
  void leer();
  void presentarArreglos();
  void Union();
  void Intercepcion();
};
conjuntos::conjuntos()
{
 ntA=0;
 ntB=0;
}
void conjuntos::establecerTerminos(int x , int y)
{
 if(x<10&&x>0 && y<10 && y >0)
  ntA=x;
  ntB=y;
}
void conjuntos::leer()
{
 for(int i=0;i<ntA;i++)
 {
     cout<<"  A";
  cout<<" Elemento [ " <<i+1<< " ] ";
  cin>>A[i];
 }
 cout<<" ___________________________________\n";
  for(int i=0;i<ntB;i++)
 {
     cout<<"  B";
  cout<<" Elemento [ " <<i+1<< " ] ";
  cin>>B[i];
 }
}

void conjuntos::presentarArreglos()
{
 cout<<"\n A \n";
 for(int i=0;i<ntA;i++)
        cout<<A[i]<<" ";
 cout<<"\n B \n";
 for(int i=0;i<ntB;i++)
   cout<<B[i]<<" ";
 cout<<"\n ";
}
void conjuntos::Union()
{
     cout<<"Union\n";
     int cont=0 ;
 for(int i=0;i<ntA;i++){
   cout<<A[i]<<"  ";
 }
  for(int i=0;i<ntB;i++)
    {
     cont=0;
  for(int j=0;j<ntA;j++){
   if(B[i]==A[j])
   {
    cont++;
   }
  }
  if(cont==0)
  cout<<B[i]<<"  ";
    }
}
void conjuntos::Intercepcion()
{
  cout<<"\nIntercepcion\n";
 for(int i=0;i<ntA;i++)
    {
  for(int j=0;j<ntB;j++){
   if(A[i]==B[j])
   {
    cout<<A[i]<<"  ";
   }
  }
    }
 }


int main(void)
{
 int num1,num2;
 conjuntos ob;
 cout<<"Ingrese el numero de terminos de A ";
 cin>>num1;
 cout<<"Ingrese el numero de terminos de B ";
 cin>>num2;
 ob.establecerTerminos(num1,num2);
 ob.leer();
 //ob.presentarArreglos();
 ob.Union();
 ob.Intercepcion();
}


Realizar un menú que permita: ingresar, eliminar y visualizar la pila

Definición de pila: 
Es una estructura de datos que permite almacenar datos en el orden LIFO (Last In First Out, en español, "último en entrar, primero en salir"). 
La recuperación de los datos es realizada en el orden inverso de su inserción. 

Solución:
#include <iostream>
#include <ostream>
#include <sstream>
#include <iomanip>
#include <stdio.h>
#include<conio.h>
using namespace std;
#define MAX 4 // Tamaño de la Pila
int tope=-1,dato;
int EspacioPila[MAX];
void insertar(){
int a;
if (tope>MAX-2){ /*MAX-2 Debido que el tope comienza -1 para que puede ingresar los datos según
el tamaño de la pila se debe restar -2 (el intervalo del -1 "Tope" al 4 "Max de la pila"
  existe 6 por el cual hay que resta 2 )*/
cout<<"Pila llena\n";
}else{
cout<<"Ingrese el dato: ";
cin >>dato;
  tope++;
EspacioPila[tope]=dato;
}
}
void eliminar(){
if(tope==-1){//Verificamos que tenga al menos  un valor la pila para eliminar
cout<<"Pila vacia\n";
}else{
    tope--;
}
}
void visualisar(){
if(tope==-1) ////Verificamos que tenga al menos  un valor la pila para visualisar
cout<<"Pila vacia\n";
else{
cout<<"---Datos de la Pila---\n";
for (int i=tope;  i>=0;i--){
cout<<EspacioPila[i]<<"\n";
}
}


}
int main(){
int op;
bool salir = true;
do{
cout<<"\n---Menu---\n1 Insertar\n2 Eliminar\n3 Visualizar\n4 Salir\n-----------\n";
cin>>op;
switch(op){
case 1:
insertar();
break;
case 2:
eliminar();
break;
case 3:
visualisar();break;
case 4:
salir=false;
}
}while(!salir==false);
}