elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Ayuda a resolver este error de compilacion por favor! en: 19 Noviembre 2011, 23:39 pm
Hola, estoy haciendo un proyecto de pasar de notacion infija a postfija, estoy usando el dev c++ pero no he podido terminar el programa por que me esta dando estos errores en varias funciones:
'Pila' was not declared in this scope expected ',' or ';' before '{' token
'Pil' undeclared (first use this function)
'CrearPila' cannot be used as a function

Este es mi archivo .h:

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
using namespace std;

typedef char TipoDato;


int PilaLlena(Pila P)
{
    return(P.cima == TAM -1)?1:0;
}
int PilaVacia(Pila P)
{
    return (P.cima == -1)?1:0;
}
void Ingresar(Pila *P, TipoDato x)
{
     if(PilaLlena(*P))
     {
                      puts("Error, Pila llena");
                      return;
                      //exit(-1);
     }
     P->lista[++P->cima] = x;
}

TipoDato Quitar(Pila *P)
{
     if(PilaVacia(*P))
     {
                      puts("Error, pila vacia");
                      TipoDato xx;
                      return xx;
                      //exit(-1);
     }
     TipoDato aux = P->lista[P->cima];
     P->cima--;
     return aux;
}
TipoDato Cima(Pila P)
{
         if(PilaVacia(P))
         {
                         puts("Error");
                         TipoDato xx;
                         return xx;
                         //exit(-1);
         }
         return (P.lista[P.cima]);
}
void CrearPila(Pila *P)
{
     P->cima = -1;
}


ESTE ES MI ARCHIVO .CPP:

#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include "proyecto2.h"
#define MAX 20

using namespace std;

int Proced(TipoDato cima,TipoDato simb);
int main ()
{
    TipoDato simb,Cad[MAX]={' '};
    Pila Pil;
    int a=0,i,flag=0;
    CrearPila(&Pil);
    puts("introduce una operacion en notacion interfija");
    while((simb=getchar())!='n'){
          if(simb!=('/') && simb!=('*') && simb!=('-') && simb!=('+') && simb!=('^') && simb!=('(') &&simb!=(')')){
             Cad[a]=simb;
             a=a+1;
             }
             else{
                if(simb=='('){
                  Cad[a]=simb;
                  a=a+1;
                  flag=1;}
                   else if(simb==')'){
                       while(!PilaVacia(Pil)){
                        Cad[a]=Quitar(&Pil);
                        a=a+1;
                        }
                        Cad[a]=simb;
                        a=a+1;
                        flag=0;
                        }
                     else if(!PilaVacia(Pil) && Proced(Cima(Pil),simb)){
                        while(!PilaVacia(Pil) && Proced(Cima(Pil),simb)){
                            Cad[a]=Quitar(&Pil);
                            a=a+1;                   
                     }}
                  if(simb!=')' && simb!='(')
                  Ingresar(&Pil,simb);
                  }
             }

    while(!PilaVacia(Pil)){
    Cad[a]=Quitar(&Pil);
    a=a+1;
}
puts(Cad);
system("pause");
}

int Proced(TipoDato cima,TipoDato simb)
{
if(cima=='^')
   {
    return 1; 
             }
    else if((cima=='*' || cima=='/') && (simb=='-' || simb=='+'))
           {
           return 1;
                       }
         else{
              return 0;}
}

Les agradezco cualquier contribucion, ya que no tengo idea donde estan los errores del codigo.
gracias


2  Programación / Programación C/C++ / ayuda con codigo de c++ programa para hacer sorteo usando listas y colas en: 30 Octubre 2011, 22:29 pm
hola!
necesito ayuda para hacer un programa en c++ para simular un sorteo donde se dispone de:
 una lista de n nombres que participan en el sorteo.
 una cola de m premios (m<=n)
 una lista de premiados (pareja de premio-premiado)

estoy intentando el primer punto pero no se como agregar nombres en una lista, ya que solo he visto lista con enteros y no caracteres, aparte debo modificar el codigo visto en clase para poder realizarlo.

Agradezco la guia o ayuda q me puedan dar en este foro.
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class nodo {// guarda la informacion que vamos a manejar en la lista, valor de informacion int entero
  5.   public:
  6.    nodo(int v, nodo *sig = NULL)//constructor que tiene dos parametros, puede se un valor y no null tambien
  7.    {
  8.       valor = v;
  9.       siguiente = sig;
  10.    }
  11.  
  12.   private:
  13.    int valor;//nodo de tipo entero
  14.    nodo *siguiente;//puede apuntar a cualquier instancia de la clase nodo,puntero hacia una instancia
  15.  
  16.   friend class lista;//nodo le da permiso a lista para trabajar con la class private                                                                
  17. };
  18.  
  19. typedef nodo *pnodo;//tipo de dato llamado pnodo(nombre del dato) que apunta hacia una instancia de tipo nodo y * es el puntero
  20.  
  21. class lista {//tiene varios metodos, permite crear nodos y manejarlos
  22.   public:
  23.    lista() { primero = actual = NULL; }//cuando se crea la lista primero y actual quedan null
  24.    ~lista();// destructor de la clase ~(alt 126), se llama igual que la clase, no retorna a nada ni recibe parametros y sirve para limpiar la lista, vaciar el espacio en memoria
  25.  
  26.    void Insertar(int v);//inserta un valor en la lista y debe ser entero
  27.    void Borrar(int v);//se debe indicar el elemento a borrar, entoces se llama al elemento a borrar
  28.    bool ListaVacia() { return primero == NULL; }//si la lista da null es porque esta vacia
  29.    void Mostrar();//lo que hace es recorrer la lista y la muestra
  30.    void Siguiente();//pasa al siguiente elemento
  31.    void Primero();
  32.    void Ultimo();
  33.    bool Actual() { return actual != NULL; }
  34.    int ValorActual() { return actual->valor; }
  35.  
  36.   private:
  37.    pnodo primero;// es un puntero a alguna instacia de nodo
  38.    pnodo actual;//es un puntero hacia un nodo
  39. };
  40.  
  41. lista::~lista()
  42. {
  43.   pnodo aux;
  44.  
  45.   while(primero) {
  46.      aux = primero;
  47.      primero = primero->siguiente;
  48.      delete aux;//
  49.   }
  50.   actual = NULL;
  51. }
  52.  
  53. void lista::Insertar(int v)
  54. {
  55.   pnodo anterior;
  56.  
  57.   // Si la lista est&#225; vac&#237;a
  58.   if(ListaVacia() || primero->valor > v) {
  59.      // Asignamos a lista un nuevo nodo de valor v y
  60.      // cuyo siguiente elemento es la lista actual  
  61.  
  62.      primero = new nodo(v, primero);//se crea un nuevo nodo
  63.   }
  64.   else {
  65.      // Buscar el nodo de valor menor a v
  66.      anterior = primero;//anterior apunte hacia donde esta apuntando primero (el puntero lo que va va hacer es guardar una direccion de memoria)
  67.      // Avanzamos hasta el &#250;ltimo elemento o hasta que el siguiente tenga
  68.      // un valor mayor que v
  69.  
  70.      while(anterior->siguiente && anterior->siguiente->valor <= v)
  71.         anterior = anterior->siguiente;
  72.      // Creamos un nuevo nodo despu&#233;s del nodo anterior, y cuyo siguiente
  73.      // es el siguiente del anterior
  74.      anterior->siguiente = new nodo(v, anterior->siguiente);//anterior siguiente va a apuntar hacia un nuevo nodo osea la ubicacion de memoria donde lo vamos a crear
  75.   }  //anterior siguiente vale null
  76. }
  77.  
  78. void lista::Borrar(int v)
  79. {
  80.   pnodo anterior, nodo;
  81.  
  82.   nodo = primero;
  83.   anterior = NULL;
  84.   while(nodo && nodo->valor < v) {
  85.      anterior = nodo;
  86.      nodo = nodo->siguiente;
  87.   }
  88.   if(!nodo || nodo->valor != v) return;
  89.   else { // Borrar el nodo
  90.      if(!anterior) // Primer elemento
  91.         primero = nodo->siguiente;
  92.      else  // un elemento cualquiera
  93.         anterior->siguiente = nodo->siguiente;
  94.      delete nodo;
  95.   }  
  96. }
  97.  
  98. void lista::Mostrar()
  99. {
  100.   nodo *aux;
  101.  
  102.   aux = primero;
  103.   while(aux) {
  104.      cout << aux->valor << "-> ";
  105.      aux = aux->siguiente;
  106.   }
  107.   cout << endl;
  108. }
  109.  
  110. void lista::Siguiente()
  111. {
  112.   if(actual) actual = actual->siguiente;
  113. }
  114.  
  115. void lista::Primero()
  116. {
  117.   actual = primero;
  118. }
  119.  
  120. void lista::Ultimo()
  121. {
  122.   actual = primero;  
  123.   if(!ListaVacia())
  124.      while(actual->siguiente) Siguiente();
  125. }
  126.  
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines