コード例 #1
0
ファイル: main.cpp プロジェクト: alessandrocar/prog1
int main(int argc, char** argv) {
	Giornale G1(12.50, "Titolo1", false);
	Giornale G2(1.50, "Titolo2", true);
	Giornale G3(2.00, "Titolo3", false);
	Rivista R4(22.70, "Titolo4", false, "Editore4", "Periodo4");
	Rivista R5(11.50, "Titolo5", true, "Editore5", "Periodo5");
	Rivista R6(6.00, "Titolo6", false,  "Editore6", "Periodo6");
	Quotidiano Q7(6.35, "Titolo7", false, "Direttore7", true);
	Quotidiano Q8(9.99, "Titolo8", true, "Direttore8", false);
	Quotidiano Q9(5, "Titolo9", false, "Direttore9", true);
	
	cout<<"Polimorfismo:\n";
	Giornale * vett[9];
	vett[0] = &G1;
	vett[1] = &G2;
	vett[2] = &G3;
	vett[3] = &R4;
	vett[4] = &R5;
	vett[5] = &R6;
	vett[6] = &Q7;
	vett[7] = &Q8;
	vett[8] = &Q9;
	
	for(int i=0; i<9; i++) {
		cout << *vett[i] << "\n\n";
	}
	
	cout<<"\n\nPila:\n";
	Pila P;
	for(int i=0; i<9; i++) {
		P.push(vett[i]);
	}
	cout<<P;
	
	ofstream file;
	file.open("./test.txt", ios::out);
	if(!file) {
		cout<<"Errore apertura file.";
	} else {
		file << P;
	}
	file.close();
	
	Rivista R10(1.00, "Titolo10", false,  "Editore10", "Periodo10");
	Quotidiano Q11(1.35, "Titolo11", false, "Direttore11", true);
	
	P.push(&R10);
	
	cout<<"\n\nEccezione:\n";
	try {
		P.push(&Q11);
	} catch(SpaceOverflow e) {
		cout<<e.errorLog();
	}
	return 0;
}
コード例 #2
0
ファイル: Evaluador.cpp プロジェクト: Lackech/Cuarto-lab
string& Evaluador::aPosfija(const string& expInfija) {

    int posP;
    Pila operadores;
    string caracTemp;
    string h = expInfija;
    int pos = 0;
    string res = "";
    string temp = "";
    posP = h.find_first_of("p");

    //recorrer la string 
    h = h + ")";
    operadores.push("(");
    while (!operadores.empty()) {
        caracTemp = h[pos];

        //caso que sea un parentesis izquierdo
        if (caracTemp == "(") {
            operadores.push(caracTemp);
            pos++;
        }
            //caso que sea un operador como *,+,-
        else if (caracTemp == "*" || caracTemp == "+" || caracTemp == "-") {
            while (prioridades(operadores.top()) >= prioridades(caracTemp)) { // puede existir un error
                res = res + operadores.top();
                operadores.pop();
            }
            operadores.push(caracTemp);
            pos++;
        }
            //caso de parentesis derecho
        else if (caracTemp == ")") {
            temp = operadores.top();
            while (temp != "(") {
                res = res + temp;
                operadores.pop();
                temp = operadores.top();
            }
            operadores.pop();
            pos++;
        }
            //caso que sea un p#
        else {


            if (caracTemp == "p" && pos != posP) {
                res = res + ",";
            }
            res = res + caracTemp;
            pos++;
        }
    }
    *posfija = res;
    return *posfija;
}
コード例 #3
0
int main(int argc, char **argv) {
    const int TAM_BUFFER = 100;
    char buffer[TAM_BUFFER];
    Pila pila;
    bool primero = false;
    char valor;
    int i = 0;

    while (!cin.eof()) {
        cin >> valor;
        pila.push(valor);

        i = 0;
        primero = false;

        while (buffer[i] != '\0') {
            if ((buffer[i] >= '0') && (buffer[i] <= '9')) {
                cout << buffer[i];
                primero = true;
            } else if (primero == true) {
                cout << '\n';
                primero = false;
            }

            i++;
        }
    }

    return (0);
}
コード例 #4
0
Pila * invertirPila(Pila *ori)
{
	Pila *out = new Pila();
	while (!ori->isEmpty())
	{
		out->push(ori->pop());
	}
	return out;
}
コード例 #5
0
int main()
{
  Pila *x = new Pila();
  x->push(12);
  x->push(13);
  x->push(14);
  
  cout<<"Pila original "<<endl;
  x->print();
  cout<<endl;
  
  Pila *y = new Pila();
  y = invertirPila(x);
  cout<<"Pila invertida "<<endl;
  y->print();

  cout<<"\n-------------------------"<<endl<<endl;

  Cola *q = new Cola();
  q->enqueue(9);
  q->enqueue(8);
  q->enqueue(7);
  q->enqueue(6);
  q->enqueue(5);
  q->enqueue(4);

  cout<<"Cola original "<<endl;
  q->print();
  cout<<endl;

  Cola *q2 = new Cola();
  q2 = invertirCola(q); 

  cout<<"Cola invertida "<<endl;
  q2->print();
  cout<<endl;
 
  int loop;
  cin >> loop;
  return 0;
}
コード例 #6
0
Cola * invertirCola(Cola *ori)
{
	Pila *inc = new Pila();
	while (!ori->isEmpty())
	{
		inc->push(ori->dequeue());
	}
	Cola *out = new Cola();
	while (!inc->isEmpty())
	{
		out->enqueue(inc->pop());
	}
	return out;
}
コード例 #7
0
int main(int argc, char *argv[])
{
  Immagine I1("ME", "800x120"); 
  Immagine I2("ME", "600x120");	
  Fotografia F1("ME", "200x120", 1,"Monti",false);
  Fotografia F2("ME", "600x120", 2,"Mare",false);
  Fotografia F3("ME", "200x1800", 3,"Laura",false);
  Fotografia F4("ME", "100x1800", 4,"Cielo stellato",false);
  Fotografia F;
 // esempio di polimorfismo
 //*************************************************
  Immagine * vet[5];
  vet[0]=&I1;
  vet[1]=&F1;
  vet[2]=&F2;
  vet[3]=&I2;
  vet[4]=&F3;
  cout << "chiamata alla funzione virtuale (print):" << endl; 
  for(int i=0; i<5; i++){
	vet[i]->print();       //binding dinamico
    cout << "\n ";
  }
  cout << "\n ";
  system("PAUSE");  
//*************************************************
 
// test della pila
//**************************************************  
  Pila P;
  
// test funzione push
  cout << "inserimento:" << endl; 
  if(P.push(F1)) cout << "inserimento riuscito"<< endl;
  else cout << "Pila piena"<< endl;
  if(P.push(F2)) cout << "inserimento riuscito"<< endl;
  else cout << "Pila piena"<< endl;
  if(P.push(F3)) cout << "inserimento riuscito"<< endl;
  else cout << "Pila piena"<< endl;
  if(P.push(F4)) cout << "inserimento riuscito"<< endl;
  else cout << "Pila piena"<< endl;
  
 // test funzioni visualizza, top e empty
  cout << "contenuto della pila:" << endl;
  if(!P.empty()) P.visualizza();
  else cout << "Pila vuota!"<< endl;
  
  if(!P.empty())  { 
    P.top(F);
    cout << "elemento di testa:" << F.getID() << ": " << F.getS() << endl;
    }    
   else cout << "Pila vuota!"<< endl;
   
 system("PAUSE");   
 
 // test funzioni sposta, ricerca, swap. Gestione dell'eccezione.   
  
  cout << "sposto in testa l'elemento di chiave 1:" << endl; 
  try{
  P.sposta(1);
  } 
  catch (const bad_event & e) {
   cout << e.what() << endl;
  } 
  cout <<"provoco il lancio dell'eccezione:" << endl;
  try{
  P.sposta(999);
  } 
  catch (const bad_event & e) {
   cout << e.what() << endl;
  } 
  
  cout << "contenuto della pila:" << endl;
  if(!P.empty()) P.visualizza();
  else cout << "Pila vuota!"<< endl;
  
 system("PAUSE");  
 
   // test funzione pop
  cout << "eliminazione:" << endl; 
  if(P.pop(F)) cout << "eliminazione riuscita"<< endl;
  else cout << "Pila vuota"<< endl;
  cout << "contenuto della pila:" << endl;
  if(!P.empty()) P.visualizza();
  else cout << "Pila vuota!"<< endl;
  
 system("PAUSE");  
 
  // test STAMPA su file
  cout << "stampo il contenuto della pila su file di testo." << endl;
  ofstream myfile;
  char nomefile[30];
  
  cout << "inserire il nome del file: ";
  cin.getline(nomefile,30);
  myfile.open(nomefile, ios::out);
  if(!myfile) cout << "operazione non riuscita!!!!" << endl;
  else {
//	P.stampa(myfile);
    myfile << P;
	myfile.close();	
  }
  
 system("PAUSE"); 
  
 // test LETTURA da  file
  Pila mypila2;
  ifstream myfile2;
  char nomefile2[30];
  
  cout << "inserire il nome del file: ";
  cin.getline(nomefile2,30);
  myfile2.open(nomefile2, ios::in);
  if(!myfile2) cout << "operazione non riuscita!!!!" << endl;
  else {
    myfile2>>mypila2;
	myfile2.close();	
  }
  cout << "stampo il contenuto della pila letta da file di testo." << endl;
  cout << mypila2 << endl;
  
   system("PAUSE"); 
  
  cout << "svuoto la pila." << endl;
  
  if(P.pop(F)) cout << "eliminazione riuscita"<< endl;
  else cout << "Pila vuota"<< endl;
  
  if(P.pop(F)) cout << "eliminazione riuscita"<< endl;
  else cout << "Pila vuota"<< endl;
  
  if(P.pop(F)) cout << "eliminazione riuscita"<< endl;
  else cout << "Pila vuota"<< endl;
  
   if(P.pop(F)) cout << "eliminazione riuscita"<< endl;
  else cout << "Pila vuota"<< endl;
  
  system("PAUSE");	
  return 0;
}
コード例 #8
0
ファイル: Main.cpp プロジェクト: Xbulldcm/LaboratorioPila
int main(int argc, char **argv) {

	srand(time(NULL));
	string s[30] = { "Diego", "Maria", "Juan", "Andres", "Pedro", "Luis",
		"Juana", "Siria", "Roberto", "Siria", "Sebastian", "Ricardo",
		"Aria", "Andrey", "Chris", "Jose", "Ana", "Tyler", "Alberto",
		"Carolina", "Catalina", "Leonardo", "Walter", "Helen", "Silvia",
		"Monse", "Camila", "Carlos", "Aracely", "Mario" };

	Pila p;
	
	for (int w = 0; w < 10; ++w) {

		Persona* p1 = new Persona(rand() % 1000, s[rand() % 30], rand() % 100);
		ElementoPersona *p11 = new ElementoPersona(p1);
		p.push(p11);

	}

	cout << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
	cout << endl;
	cout << "Pila de personas" << endl;
	cout << endl;
	cout << p << endl;
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciendo PEEK" << endl;
	cout << endl;
	p.peek();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciedno POP" << endl;
	cout << endl;
	p.pop();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Imprimiendo Pila despues del POP" << endl;
	cout << endl;
	cout << p << endl;

	Pila p2;

	for (int h = 0; h < 10; ++h) {

		ElementoInt *p22 = new ElementoInt(rand() % 1000);
		p2.push(p22);

	}

	cout << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
	cout << endl;
	cout << "Pila de Enteros" << endl;
	cout << endl;
	cout << p2 << endl;
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciendo PEEK" << endl;
	cout << endl;
	p2.peek();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciedno POP" << endl;
	cout << endl;
	p2.pop();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Imprimiendo Pila despues del POP" << endl;
	cout << endl;
	cout << p2 << endl;

	Pila p3;

	for (int g = 0; g < 10; ++g) {

		ElementoDouble *p33 = new ElementoDouble(rand() % 1000);
		p3.push(p33);

	}

	cout << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" << endl;
	cout << endl;
	cout << "Pila de Doubles" << endl;
	cout << endl;
	cout << p3 << endl;
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciendo PEEK" << endl;
	cout << endl;
	p3.peek();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Haciedno POP" << endl;
	cout << endl;
	p3.pop();
	cout << "--------------------------------------------------------" << endl;
	cout << endl;
	cout << "Imprimiendo Pila despues del POP" << endl;
	cout << endl;
	cout << p3 << endl;


	system("pause");
	return 0;

}