Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Estas en el tema de Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested en el foro de C/C++ en Foros del Web. Hola que tal bueno estoy a qui programando en Dev C/C++ lo siguiente pero me sale error de conversion from `TipoPila**' to non-scalar type `TipoPila' ...
  #1 (permalink)  
Antiguo 14/10/2010, 21:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Hola que tal bueno estoy a qui programando en Dev C/C++ lo siguiente pero me sale error de conversion from `TipoPila**' to non-scalar type `TipoPila' requested quisiera saber a que se refiere o que esta mal por favor

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope;
  9.          TipoTope Stack;
  10.           TipoElem Elementos [MAX];
  11.           };
  12.  
  13. int InicializarPila (TipoPila Stack);
  14. int PilaVacia(TipoPila Stack);
  15. int PilaLlena(TipoPila Stack);
  16.   main ()
  17. {
  18. TipoPila *Pila;
  19. int opcion;
  20. TipoElem Elem;
  21. InicializarPila(&Pila);
  22. opcion=0 ;
  23. switch (opcion){
  24.        case 1 :
  25.             InicializarPila(&Pila);
  26.        cout<<"Pila inicializada ...";
  27.        break;
  28.        }  
  29. }
  30.  
  31. int InicializarPila (TipoPila Stack){
  32. Stack.Tope=VACIO;}
  #2 (permalink)  
Antiguo 14/10/2010, 22:27
Avatar de dual3nigma
Colaborador
 
Fecha de Ingreso: febrero-2010
Ubicación: Ciudad de México
Mensajes: 295
Antigüedad: 14 años, 8 meses
Puntos: 122
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Creo que seria bueno tambien que comentaras lo que quieres hacer, a lo que se refiere ese error es que estas mandando un (pointer a un pointer a Pila) a una funcion que que no acepta ese tipo:
Código C++:
Ver original
  1. TipoPila *Pila // Pointer a Pila
  2. InicializarPila(&Pila) // Estas mandando un pointer a
  3. int InicializarPila(TipoPila Stack) // No mencionas para nada TipoPila **Stack que es lo que estas mandando

No se en realidad lo que estes tratando de hacer pero hay otros detalles que debes de considerar, que aun si pusieras:
Código C++:
Ver original
  1. int IniticializarPila(TipoPila **Stack) {
  2.     (*Stack)->Top = VACIO;
  3.     // Fijate tambien que te va a dar error por que no estas regresando nada y la declaracion dice que regresas un valor tipo int
  4. }

Ah pues si aun si hicieras eso no te funcionaria puesto que en ningun lugar estas creando el struct TipoPila al que quieres que apunte TipoPila, como te decia no se lo que quieras hacer pero aqui esta mi version de lo que yo entendi que quieres hacer:
Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3.  
  4. #define MAX 3
  5. #define VACIO -1
  6.  
  7. typedef int  TipoTope;
  8. typedef char TipoElem;
  9.  
  10. typedef struct TipoPila {
  11.          TipoTope Tope;
  12.          TipoTope Stack;
  13.          TipoElem Elementos[MAX];
  14.                 };
  15.  
  16. int InicializarPila(TipoPila *Stack);
  17. int PilaVacia(TipoPila Stack);
  18. int PilaLlena(TipoPila Stack);
  19.  
  20. int  main () {
  21.     TipoPila Pila;
  22.  
  23.     int opcion;
  24.  
  25.     TipoElem Elem;
  26.  
  27.     InicializarPila(&Pila);
  28.  
  29.     opcion = 0;
  30.  
  31.     switch (opcion) {
  32.         case 1 :
  33.             InicializarPila(&Pila);
  34.             std::cout << "Pila inicializada ...";
  35.         break;
  36.     }
  37.  
  38.     return 0;
  39. }
  40.  
  41. int InicializarPila(TipoPila *Stack) {
  42.     Stack->Tope = VACIO;
  43.     return 0;
  44. }
  #3 (permalink)  
Antiguo 19/10/2010, 20:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Hola bueno si funcono gracias amigo era un error cuando se usa el apuntador * se usa el -> se me paso, ahora quiero ingresar datos a mi pila y sacar e imprimir esos datos con una funcion push y pop me podian ayudar

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int PilaVacia(TipoPila *Stack);
  14. int PilaLlena(TipoPila *Stack);
  15.   main ()
  16. {
  17. TipoPila Pila;
  18. int  opcion1=0;
  19. TipoElem Elem;
  20. InicializarPila (&Pila);
  21. PilaVacia(&Pila);
  22.  PilaLlena(&Pila);
  23.  
  24. char opcion=0;
  25. while (opcion1!='s'){
  26. cout << "\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  27.  cout <<"\n1 InicializarPila";
  28.  cout <<"\n2 Pila LLENA";
  29.  cout <<"\n3 Pila VACIA\nOpcion=";
  30.   cin >> opcion1;
  31.  
  32. switch (opcion1){
  33.        case 1:
  34.             InicializarPila(&Pila);
  35.        cout<<"Pila inicializada ...";
  36.        getch ();
  37.        break;
  38.          getch ();
  39.          
  40.        case 2:
  41.             PilaLlena(&Pila);
  42.       cout<<"Pila LLENA!!";
  43.       getch ();
  44.       break;
  45.        
  46.       case 3:
  47.            PilaVacia(&Pila);
  48.       cout<<"Pila VACIA!!";
  49.       getch ();
  50.      
  51.       break;
  52.           }
  53.            
  54. }}
  55.  
  56. int InicializarPila(TipoPila *Stack)
  57. {
  58.      Stack->Tope=VACIO;
  59.      }
  60. int PilaLlena(TipoPila *Stack)
  61. {
  62.     return Stack->Tope==MAX;
  63. }
  64. int PilaVacia(TipoPila *Stack)
  65. {
  66.     return Stack->Tope==VACIO;
  67. }
  #4 (permalink)  
Antiguo 19/10/2010, 21:35
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

no es muy dificil. Cuando haces push sumas una al tope de la pila y guardas el dato en ese valor. Cuando lo sacas restas uno al tope y devuelves el valor que estaba almacenado antes de restar.
Piensalo bien. Cuando tengas algo de codigo postealo que te ayudamos!
  #5 (permalink)  
Antiguo 21/10/2010, 11:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Bueno tengo esto ya mete y saca valores pero no me inicializa la pila me pueden ayudar plis

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int push(int *Stackb, int Stack_i[3]);
  14. void pop(int *Stackc, int Stack_e[3]);
  15.   main ()
  16. {
  17. TipoPila Pila1;
  18. int Stack[3];
  19. int   cima=0,opcion1=0;
  20.  
  21.  
  22. while (opcion1!='s')
  23. {
  24. cout << "\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  25.  cout <<"\n1 Inicializar Pila";
  26.  cout <<"\n2 Ingresar datos a la Pila";
  27.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  28.   cin >> opcion1;
  29.  
  30. switch (opcion1){
  31.        case 1:
  32.             InicializarPila(&Pila1);
  33.        cout<<"Pila inicializada ...";
  34.        getch ();
  35.        break;
  36.          getch ();
  37.        case 2:
  38.          push(&cima, Stack);
  39.       getch ();
  40.      
  41.       break;
  42.       case 3:
  43. pop(&cima, Stack);
  44.       getch ();
  45.      
  46.       break;
  47.           }
  48.            
  49. }}
  50.  
  51. int InicializarPila(TipoPila *Stack)
  52. {
  53.      Stack->Tope==VACIO;
  54.      }
  55. int push(int *Stack, int Stack_i[3])
  56. {  
  57.  if(*Stack==3)
  58.    cout << "\nPila llena!!!!\n";
  59.  else
  60.  {
  61.   cout << "Ingresa el elemento a la pila\n";
  62.   cin >> Stack_i[*Stack];
  63.   *Stack=*Stack+1;
  64.  }
  65. }
  66. void pop(int *Stack, int Stack_e[3])
  67. {
  68.  
  69.  if (*Stack<=0)
  70.  {
  71.   cout << "No hay elementos en la pila\nIngrese  elementos primero:\n";
  72.  }
  73.  else
  74.  {
  75.   *Stack=*Stack-1;
  76.   cout << "\nElemento expulsado de la fila: ";
  77.   cout << Stack_e[*Stack];
  78.  }
  79.  
  80. }
  #6 (permalink)  
Antiguo 21/10/2010, 12:48
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

No tiene sentido que lo que haces, ya que al inicializarla usas la variable Pila1 del tipo TipoStock.

Pero despues en push y pop te olvidas completamente de esas structura. y utilizas cualquier otra cosa.

Código C++:
Ver original
  1. int push(TipoPila *Stack, int valor)
  2. {  
  3.  if(Stack->Tope==MAX)
  4.           cout << "\nPila llena!!!!\n";
  5.  else
  6.  {
  7.         Stack->Tope++;
  8.         Stack->Elementos[Stack->Tope] = valor;
  9.  }
  10. }

Asi seria el Push, Ahora tratar de hacer el Pop
  #7 (permalink)  
Antiguo 21/10/2010, 19:00
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Ya hice el pop era lo mismo que push pero nada mas que en drecremento, ahora el caso es que yo ingrese los elemento a la pila por que al dar enter me ingresa un valor y mi pila se llena este es mi codigo

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int PilaLlena (TipoPila *Stack);
  14. int Push (TipoPila *Stack, TipoTope valor);
  15. int Pop(TipoPila *Stack, int valor);
  16.   main ()
  17. {
  18. TipoPila Pila;
  19. TipoElem valor;
  20. int   opcion1=0;
  21. //InicializarPila(&Pila);
  22. //Push (&Pila,valor);
  23.  
  24. while (opcion1!='s')
  25. {
  26. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  27.  cout <<"\n1 Inicializar Pila";
  28.  cout <<"\n2 Ingresar datos a la Pila";
  29.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  30.   cin >> opcion1;
  31.  
  32. switch (opcion1){
  33.        case 1:
  34.             InicializarPila(&Pila);
  35.        cout<<"Pila inicializada ...";
  36.        getch ();
  37.        break;
  38.        case 2:
  39.        Push(&Pila,valor);
  40.        getch ();
  41.        break;
  42.        case 3:
  43.        Pop(&Pila,valor);
  44.          getch ();
  45.  
  46.      
  47.       break;
  48.  
  49.           }
  50.            
  51. }}
  52.  
  53. int InicializarPila(TipoPila *Stack)
  54. {
  55.      Stack->Tope=VACIO;
  56.      }
  57.  
  58. int Push(TipoPila *Stack, TipoTope valor)
  59.  
  60. {  
  61.  if(Stack->Tope==MAX)
  62.           cout << "\nPila llena!!!!\n";
  63.  else
  64.  {
  65.         Stack->Tope++;
  66.         Stack->Elementos[Stack->Tope] = valor;
  67.  }
  68. }
  69.  
  70.  
  71. int Pop(TipoPila *Stack, int valor)
  72. {  
  73.  if(Stack->Tope==VACIO)
  74.           cout << "\nPila esta vacia ingrese datos primero:";
  75.  else
  76.  {
  77.         Stack->Tope--;
  78.         Stack->Elementos[Stack->Tope] = valor;
  79.  }
  80. }
  #8 (permalink)  
Antiguo 21/10/2010, 19:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Ya pude ingresar datos no se si a si este bien o mal¿?

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int PilaLlena (TipoPila *Stack);
  14. int Push (TipoPila *Stack, TipoTope valor);
  15. int Pop(TipoPila *Stack, TipoTope valor);
  16.   main ()
  17. {
  18. TipoPila Pila;
  19. TipoElem valor;
  20. int   opcion1=0;
  21. //InicializarPila(&Pila);
  22. //Push (&Pila,valor);
  23.  
  24. while (opcion1!='s')
  25. {
  26. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  27.  cout <<"\n1 Inicializar Pila";
  28.  cout <<"\n2 Ingresar datos a la Pila";
  29.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  30.   cin >> opcion1;
  31.  
  32. switch (opcion1){
  33.        case 1:
  34.             InicializarPila(&Pila);
  35.        cout<<"Pila inicializada ...";
  36.        break;
  37.        case 2:
  38.        Push(&Pila,valor);
  39.        break;
  40.        case 3:
  41.        Pop(&Pila,valor);
  42.        break;
  43.  
  44.           }
  45.            
  46. }}
  47.  
  48. int InicializarPila(TipoPila *Stack)
  49. {
  50.      Stack->Tope=VACIO;
  51.      }
  52.  
  53. int Push(TipoPila *Stack, TipoTope valor)
  54.  
  55. {   TipoElem Elementos;
  56.  if(Stack->Tope==MAX)
  57.           cout << "\nPila llena!!!!\n";
  58.  else
  59.  {
  60.      cout<<"Ingrese elementos a la pila:";
  61.      cin >> Elementos;
  62.         Stack->Tope++;
  63.         Stack->Elementos[Stack->Tope] = valor;
  64.  }
  65. }
  66.  
  67.  
  68. int Pop(TipoPila *Stack, TipoTope valor)
  69. {  
  70.  if(Stack->Tope==VACIO)
  71.           cout << "\nPila esta vacia ingrese datos primero:";
  72.  else
  73.  {
  74.         Stack->Tope--;
  75.         Stack->Elementos[Stack->Tope] = valor;
  76.  }
  77. }
  #9 (permalink)  
Antiguo 21/10/2010, 19:28
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

No entiendo cual es tu problema...Pero fijate que el pop no tiene que tomar un argumento y modificar la pila. Al contrario debe devolver el valor que estaba en la pila..... Deberias repazar los conceptos de una pila antes de empezar a programarla!
  #10 (permalink)  
Antiguo 21/10/2010, 19:32
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Entonces quedaria a si o me equivoco¿? si no avansare a crear mi siguiente funcion de contar e imprimir cuantos elementos tiene mi pila

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int PilaLlena (TipoPila *Stack);
  14. int Push (TipoPila *Stack, TipoTope valor);
  15. int Pop(TipoPila *Stack);
  16.   main ()
  17. {
  18. TipoPila Pila;
  19. TipoElem valor;
  20. int   opcion1=0;
  21. //InicializarPila(&Pila);
  22. //Push (&Pila,valor);
  23.  
  24. while (opcion1!='s')
  25. {
  26. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  27.  cout <<"\n1 Inicializar Pila";
  28.  cout <<"\n2 Ingresar datos a la Pila";
  29.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  30.   cin >> opcion1;
  31.  
  32. switch (opcion1){
  33.        case 1:
  34.             InicializarPila(&Pila);
  35.        cout<<"Pila inicializada ...";
  36.        system ("pause");
  37.        break;
  38.        case 2:
  39.        Push(&Pila,valor);
  40.        break;
  41.        case 3:
  42.        Pop(&Pila);
  43.        system ("pause");
  44.        break;
  45.  
  46.           }
  47.    system ("cls");      
  48. }}
  49.  
  50. int InicializarPila(TipoPila *Stack)
  51. {
  52.      Stack->Tope=VACIO;
  53.      }
  54.  
  55. int Push(TipoPila *Stack, TipoTope valor)
  56.  
  57. {   TipoElem Elementos;
  58.  if(Stack->Tope==MAX)
  59.           cout << "\nPila llena!!!!\n";
  60.  else
  61.  {
  62.      cout<<"Ingrese elementos a la pila:";
  63.      cin >> Elementos;
  64.         Stack->Tope++;
  65.         Stack->Elementos[Stack->Tope] = valor;
  66.  }
  67. }
  68.  
  69.  
  70. int Pop(TipoPila *Stack)
  71. {  
  72.  if(Stack->Tope==VACIO)
  73.           cout << "\nPila esta vacia ingrese datos primero:\n";
  74.  else
  75.  {
  76.         Stack->Tope--;
  77.        }
  78. }
  #11 (permalink)  
Antiguo 21/10/2010, 19:49
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Veo que al push le agregaste una lectura de teclado... pero no la estas utilizando. Yo se la sacaria asi si queres usar la pila en otro programa lo podes usar. Por algo le agregue el argumento llamado valor a la funcion Push.

En el Pop te faltaria que devuelva el valor que estaba almacenado:
return Stack->Elementos[Stack->Tope+1] ;

El +1 va proque va despues de decremetar la variable tope.
  #12 (permalink)  
Antiguo 21/10/2010, 20:01
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Entonces seria algo a si o aun esta mal ¿? Regañame si es necesari siii

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11.  
  12. int InicializarPila (TipoPila *Stack);
  13. int PilaLlena (TipoPila *Stack);
  14. int Push (TipoPila *Stack, TipoTope valor);
  15. int Pop(TipoPila *Stack);
  16.   main ()
  17. {
  18.        system ("color f9");
  19. TipoPila Pila;
  20. TipoElem valor;
  21. int   opcion1=0;
  22. //InicializarPila(&Pila);
  23. //Push (&Pila,valor);
  24.  
  25. while (opcion1!='s')
  26. {
  27. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  28.  cout <<"\n1 Inicializar Pila";
  29.  cout <<"\n2 Ingresar datos a la Pila";
  30.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  31.   cin >> opcion1;
  32.  
  33. switch (opcion1){
  34.        case 1:
  35.             InicializarPila(&Pila);
  36.        cout<<"Pila inicializada ...\n";
  37.        system ("pause");
  38.        break;
  39.        case 2:
  40.        Push(&Pila,valor);
  41.        break;
  42.        case 3:
  43.        Pop(&Pila);
  44.        system ("pause");
  45.        break;
  46.  
  47.           }
  48.    system ("cls");      
  49. }}
  50.  
  51. int InicializarPila(TipoPila *Stack)
  52. {
  53.      Stack->Tope=VACIO;
  54.      }
  55.  
  56. int Push(TipoPila *Stack, TipoTope valor)
  57.  
  58. {   TipoElem Elementos;
  59.  if(Stack->Tope==MAX){
  60.           cout << "\nPila llena!!!!\n";
  61.           system ("pause");}
  62.  else
  63.  {
  64.      cout<<"Ingrese elementos a la pila:";
  65.      cin >> Elementos;
  66.         Stack->Tope++;
  67.  }
  68. }
  69.  
  70.  
  71. int Pop(TipoPila *Stack)
  72. {  
  73.  if(Stack->Tope==VACIO)
  74.           cout << "\nPila esta vacia ingrese datos primero:\n";
  75.  else
  76.  {
  77.         Stack->Tope--;
  78.         return Stack->Elementos[Stack->Tope+1] ;
  79.        }
  80. }
  #13 (permalink)  
Antiguo 22/10/2010, 02:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Ahora que estoy haciendo mal a qui ¿? no me quiere compilar funcion imprimir y contar

Código C++:
Ver original
  1. typedef int TipoTope;
  2. typedef char TipoElem;
  3. typedef struct TipoPila{
  4.          TipoTope Tope ;
  5.           TipoElem Elementos [MAX];
  6.           };
  7.  
  8. int InicializarPila (TipoPila *Stack);
  9. int PilaVacia (TipoPila *Stack);
  10. int Push (TipoPila *Stack);
  11. int Pop(TipoPila *Stack);
  12. int Imprimir(TipoPila *Stack);
  13. int contar (TipoPila *Stack);
  14.   main ()
  15. {
  16.        system ("color f9");
  17. TipoPila Pila;
  18. TipoElem Elementos;
  19. int   opcion1=0;
  20.  
  21. while (opcion1!='s')
  22. {
  23. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  24.  cout <<"\n1 Inicializar Pila";
  25.  cout <<"\n2 Ingresar datos a la Pila";
  26.  cout <<"\n3 Sacar datos de la pila\nOpcion=";
  27.   cin >> opcion1;
  28.  
  29. switch (opcion1){
  30.        case 1:
  31.             InicializarPila(&Pila);
  32.        cout<<"Pila inicializada ...\n";
  33.        system ("pause");
  34.        break;
  35.        case 2:
  36.        Push(&Pila);
  37.        break;
  38.        case 3:
  39.        Pop(&Pila);
  40.        system ("pause");
  41.        break;
  42.        case 4:
  43.        //Imprimir(&Pila);
  44.        case 5:
  45.             contar (&Pila);
  46.           }
  47.    system ("cls");      
  48. }}
  49.  
  50.  
  51.  
  52. int InicializarPila(TipoPila *Stack)
  53. {
  54.      Stack->Tope=VACIO;
  55.      }
  56.  
  57. int Push(TipoPila *Stack,)
  58.  
  59. {   TipoElem Elementos;
  60.  if(Stack->Tope==MAX){
  61.           cout << "\nPila llena!!!!\n";
  62.           system ("pause");}
  63.  else
  64.  {
  65.      cout<<"Ingrese elementos a la pila:";
  66.      cin >> Elementos;
  67.         Stack->Tope++;
  68.  }
  69. }
  70.  
  71. int Pop(TipoPila *Stack)
  72. {  
  73.  if(Stack->Tope==VACIO)
  74.           cout << "\nPila esta vacia ingrese datos primero:\n";
  75.  else
  76.  {
  77.         Stack->Tope--;
  78.         return Stack->Elementos[Stack->Tope+1] ;
  79.        }
  80. }
  81.  int PilaVacia(TipoPila *Stack)
  82.  {
  83.  return (Stack->Tope==VACIO);
  84. }
  85.  
  86. int Imprimir(TipoPila *Stack)
  87. {
  88.     TipoElem Elementos;
  89. while(!PilaVacia(Stack))
  90. {
  91.        
  92.        Pop (&Stack,&Elementos);
  93.        cout << Elementos;
  94. }      
  95. }
  96. int contar (TipoPila *Stack)
  97. {
  98.     int contador=0;
  99.     TipoPila Aux;
  100.     TipoElem Elementos;
  101.     InicializarPila (&Aux);
  102.     while(!PilaVacia(Stack)) {
  103.     Pop(*Stack,Elementos),
  104.     contador=contador+1;
  105.     Push(&Aux,Elementos);
  106.     }
  107.     }
  #14 (permalink)  
Antiguo 22/10/2010, 07:38
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Primero la funcion pop no toma un segundo argumento. Lo devuelve como resultado.
Lo mismo pasa en la funcion imprimir....
Viendo los errores que estas cometiendo te recomendaria que empieces con algo mas basico.
  #15 (permalink)  
Antiguo 24/10/2010, 23:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Bueno e cambiado mi codigo un poco pero aun me sale error en imprimir

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 2
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           };
  11. void InicializarPila (TipoPila *Stack);
  12. int PilaLlena(TipoPila *Stack);
  13. int PilaVacia(TipoPila *Stack);
  14. int Push (TipoPila *Stack,TipoElem Elemen);
  15. int Pop (TipoPila *Stack,TipoElem Elemen);
  16. int Imprimir (TipoPila *Stack);
  17.  main ()
  18. {
  19. system ("color f9");
  20. TipoPila Pila;
  21. TipoElem Elementos;
  22. int opcion1=0;
  23. while (opcion1!='s')
  24. {
  25. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  26.  cout <<"\n1 Inicializar Pila: \n";
  27.   cout <<"2 Ingresar elementos a la pila: \n";
  28.   cout <<"3 Sacar elementos de la pila: \n";
  29.  cin >> opcion1;
  30.  switch (opcion1)
  31. {
  32.        case 1:
  33.             InicializarPila(&Pila);
  34.        cout<<"Pila inicializada ...\n";
  35.        break;
  36.        case 2:
  37.              if(PilaLlena(&Pila)){
  38.           cout << "\nPila llena!!!!\n";}
  39.            else{
  40.      cout<<"Ingrese elementos a la pila:";
  41.      cin >> Elementos;
  42.      Push(&Pila,Elementos);}
  43.      break;
  44.      case 3:
  45.           if(PilaVacia(&Pila)){
  46.           cout << "\nLa pila esta vacia ingrese elementos primero!!!!\n";
  47.           }
  48.           else{
  49.      Pop(&Pila,Elementos);
  50.      cout <<"\n El elemnto sacado de la pila es: "<<Elementos;
  51.      
  52.      }
  53.      
  54.           break;
  55.          
  56. }}}
  57. //InicializarPila
  58. void InicializarPila(TipoPila *Stack)
  59. {
  60.      Stack->Tope=VACIO;
  61.      }
  62. //PilaLlena
  63. int PilaLlena(TipoPila *Stack)
  64. {
  65.     return (Stack->Tope==MAX);
  66. }
  67. //PilaVacia
  68. int PilaVacia(TipoPila *Stack)
  69. {
  70.  return (Stack->Tope==VACIO);
  71. }
  72. //Push
  73. int Push (TipoPila *Stack,TipoElem Elemen)
  74. {
  75. return (Stack->Tope++);
  76.  }
  77.  //Pop
  78. int Pop (TipoPila *Stack,TipoElem Elemen)
  79. {
  80. return (Stack->Tope--);
  81.  }
  82.  //Imprimir
  83.  int Imprimir (TipoPila *Stack)
  84.  {
  85.   TipoElem Elemen;
  86. while (!PilaVacia(Stack))
  87. {
  88.        Pop (*Stack,&Elemen);
  89.        cout << Elemen;
  90. }          
  91.       }
  #16 (permalink)  
Antiguo 25/10/2010, 10:35
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

En la nueva implementacion, el push nunca guarda el elemento en la pila. solo esta modificando en tope. Lo mismo pasa en el pop. Solo bajas en uno el tope y no devolves el valor que habia en la pila.

Corrige esas cosas en la nueva implementacion,
  #17 (permalink)  
Antiguo 25/10/2010, 23:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Aver esta implementacion esta bien o mal

Código C++:
Ver original
  1. void Push (TipoPila *Stack,TipoElem *Elemen)
  2. {
  3.  *Elemen=Stack->Elementos[Stack->Tope=++];
  4.  
  5.  }
  6.  //Pop
  7. void Pop (TipoPila *Stack,TipoElem *Elemen)
  8. {
  9.   *Elemen=Stack->Elementos[Stack->Tope--];
  10.  
  11.  }

Edito: Creo que esta mal no se pero implemente este otro creo que esta bien no se aun por que no me correo el programa si me lo compila pero me manda un error y se cierra

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 2
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           }Pila;
  11. void InicializarPila (TipoPila *Stack);
  12. int PilaLlena(TipoPila *Stack);
  13. int PilaVacia(TipoPila *Stack);
  14. void Push (TipoPila *Stack,TipoElem Elemen);
  15. int Pop (TipoPila *Stack,TipoElem *Elemen);
  16. int Imprimir (TipoPila Stack);
  17. int Contar (TipoPila *Stack);
  18.  main ()
  19. {
  20. system ("color f9");
  21. TipoPila Pila;
  22. TipoTope Tope;
  23. TipoElem Elementos;
  24. int opcion1=0;
  25. while (opcion1!='s')
  26. {
  27. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  28.  cout <<"\n1 Inicializar Pila: \n";
  29.   cout <<"2 Ingresar elementos a la pila: \n";
  30.   cout <<"3 Sacar elementos de la pila: \n";
  31.    cout <<"4 Imprimir elementos de la pila: \n";
  32.    cout <<"5 Contar elementos de la pila: \n";
  33.    cout <<"\n opcion:";
  34.  cin >> opcion1;
  35.  switch (opcion1)
  36. {
  37.        case 1:
  38.             InicializarPila(&Pila);
  39.        cout<<"Pila inicializada ...\n";
  40.        break;
  41.        case 2:
  42.              if(PilaLlena(&Pila)){
  43.           cout << "\nPila llena!!!!\n";}
  44.            else{
  45.      cout<<"Ingrese elementos a la pila:";
  46.      cin >> Elementos;
  47. Push(&Pila,Elementos);}
  48.      break;
  49.      case 3:
  50.           if(PilaVacia(&Pila)){
  51.           cout << "\nLa pila esta vacia ingrese elementos primero!!!!\n";
  52.           }
  53.           else{
  54.      Pop(&Pila,&Elementos);
  55.      cout <<"\n El elemento sacado de la pila es: "<<Elementos;
  56.      }
  57.      break;
  58.     /* case 4:
  59.           cout << Imprimir(Pila);
  60.           break;  
  61.      case 5:
  62.          cout <<  Contar(&Pila);
  63.          
  64.           break;        */
  65. }}getch ();}
  66. //InicializarPila
  67. void InicializarPila(TipoPila *Stack)
  68. {
  69.      Stack->Tope=VACIO;
  70.      }
  71. //PilaLlena
  72. int PilaLlena(TipoPila *Stack)
  73. {
  74.     return (Stack->Tope==MAX);
  75. }
  76. //PilaVacia
  77. int PilaVacia(TipoPila *Stack)
  78. {
  79.  return (Stack->Tope==VACIO);
  80. }
  81. //Push
  82. void Push (TipoPila *Stack,TipoElem Elemen)
  83. {
  84.  Stack->Tope++;
  85.  Stack->Elementos[Stack->Tope]=Elemen;
  86.  
  87.  }
  88.  //Pop
  89. int Pop (TipoPila *Stack,TipoElem *Elemen)
  90. {  
  91.  
  92.   *Elemen=Stack->Elementos[Stack->Tope];
  93.   Stack->Tope--;
  94.   return *Elemen;
  95.  }
  96.  /*/Imprimir
  97.  int Imprimir (TipoPila Stack)
  98.  {
  99. TipoElem Elementos;
  100. while (!PilaVacia(&Stack))
  101. {
  102.        Pop (&Stack,Elementos);
  103.        cout <<"\n"<<Elementos;
  104. }        
  105.       }
  106. //Contar
  107. int Contar (TipoPila *Stack)
  108. {
  109.  int contador=0;
  110.  TipoPila Aux;
  111.  TipoElem Elementos;  
  112.  InicializarPila (&Aux);
  113.  while (!PilaVacia(Stack))
  114.  {
  115.  Pop(&Stack,&Elementos);
  116.  contador=contador+1;
  117.  Push(&Aux,Elementos);
  118.  
  119. }
  120. }*/

Ahora me falta que cuente y que imprima espero no se me complique de nuevo que cren que este mal

Última edición por vnvnation; 26/10/2010 a las 00:21
  #18 (permalink)  
Antiguo 26/10/2010, 00:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Bueno el de imprimir ya salio pero no se por que me muestra un 1 al final de del ultimo elemento de mi pila y el de contar aun no lo puedo correr bien

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 2
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           }Pila;
  11. void InicializarPila (TipoPila *Stack);
  12. int PilaLlena(TipoPila *Stack);
  13. int PilaVacia(TipoPila *Stack);
  14. void Push (TipoPila *Stack,TipoElem Elemen);
  15. int Pop (TipoPila *Stack,TipoElem *Elemen);
  16. int Imprimir (TipoPila Stack);
  17. int Contar (TipoPila Stack);
  18.  main ()
  19. {
  20. system ("color f9");
  21. TipoPila Pila;
  22. TipoTope Tope;
  23. TipoElem Elementos;
  24. int opcion1=0;
  25. while (opcion1!='s')
  26. {
  27. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  28.  cout <<"\n1 Inicializar Pila: \n";
  29.   cout <<"2 Ingresar elementos a la pila: \n";
  30.   cout <<"3 Sacar elementos de la pila: \n";
  31.    cout <<"4 Imprimir elementos de la pila: \n";
  32.    cout <<"5 Contar elementos de la pila: \n";
  33.    cout <<"\n opcion:";
  34.  cin >> opcion1;
  35.  switch (opcion1)
  36. {
  37.        case 1:
  38.             InicializarPila(&Pila);
  39.        cout<<"Pila inicializada ...\n";
  40.        break;
  41.        case 2:
  42.              if(PilaLlena(&Pila)){
  43.           cout << "\nPila llena!!!!\n";}
  44.            else{
  45.      cout<<"Ingrese elementos a la pila:";
  46.      cin >> Elementos;
  47. Push(&Pila,Elementos);}
  48.      break;
  49.      case 3:
  50.           if(PilaVacia(&Pila)){
  51.           cout << "\nLa pila esta vacia ingrese elementos primero!!!!\n";
  52.           }
  53.           else{
  54.      Pop(&Pila,&Elementos);
  55.      cout <<"\n El elemento sacado de la pila es: "<<Elementos;
  56.      }
  57.      break;
  58.     case 4:
  59.           cout << Imprimir(Pila);
  60.           break;  
  61.       case 5:
  62.          cout <<  Contar(Pila);
  63.          
  64.           break;      
  65. }}getch ();}
  66. //InicializarPila
  67. void InicializarPila(TipoPila *Stack)
  68. {
  69.      Stack->Tope=VACIO;
  70.      }
  71. //PilaLlena
  72. int PilaLlena(TipoPila *Stack)
  73. {
  74.     return (Stack->Tope==MAX);
  75. }
  76. //PilaVacia
  77. int PilaVacia(TipoPila *Stack)
  78. {
  79.  return (Stack->Tope==VACIO);
  80. }
  81. //Push
  82. void Push (TipoPila *Stack,TipoElem Elemen)
  83. {
  84.  Stack->Tope++;
  85.  Stack->Elementos[Stack->Tope]=Elemen;
  86.  
  87.  }
  88.  //Pop
  89. int Pop (TipoPila *Stack,TipoElem *Elemen)
  90. {  
  91.  
  92.   *Elemen=Stack->Elementos[Stack->Tope];
  93.   Stack->Tope--;
  94.   return *Elemen;
  95.  }
  96.  //Imprimir
  97.  int Imprimir (TipoPila Stack)
  98.  {
  99. TipoElem Elementos;
  100. while (!PilaVacia(&Stack))
  101. {
  102.        Pop (&Stack,&Elementos);
  103.        cout <<"\n"<<Elementos;
  104. }        
  105.       }
  106. //Contar
  107. int Contar (TipoPila Stack)
  108. {
  109.  int contador=0;
  110.  TipoPila Aux;
  111.  TipoElem Elementos;  
  112.  InicializarPila (&Aux);
  113.  while (!PilaVacia(&Stack))
  114.  {
  115.  Pop(&Stack,&Elementos);
  116.  contador=contador+1;
  117.  Push(&Aux,Elementos);
  118.  
  119. }
  120. }

Edito

Creo que ya cuenta pero no se muy bien creo que hai un error por que tambien me aparece un 1 al fial de mi conteo

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 2
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           }Pila;
  11. void InicializarPila (TipoPila *Stack);
  12. int PilaLlena(TipoPila *Stack);
  13. int PilaVacia(TipoPila *Stack);
  14. void Push (TipoPila *Stack,TipoElem Elemen);
  15. int Pop (TipoPila *Stack,TipoElem *Elemen);
  16. int Imprimir (TipoPila Stack);
  17. int Contar (TipoPila Stack);
  18.  main ()
  19. {
  20. system ("color a9");
  21. TipoPila Pila;
  22. TipoTope Tope=0;
  23. TipoElem Elementos=0;
  24. int opcion1=0;
  25. while (opcion1!='s')
  26. {
  27. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  28.  cout <<"\n1 Inicializar Pila: \n";
  29.   cout <<"2 Ingresar elementos a la pila: \n";
  30.   cout <<"3 Sacar elementos de la pila: \n";
  31.    cout <<"4 Imprimir elementos de la pila: \n";
  32.    cout <<"5 Contar elementos de la pila: \n";
  33.    cout <<"\n opcion:";
  34.  cin >> opcion1;
  35.  system ("cls");
  36.  switch (opcion1)
  37. {
  38.        case 1:
  39.        InicializarPila(&Pila);
  40.        cout<<"Pila inicializada ...\n";
  41.        getch ();
  42.        system ("cls");
  43.        break;
  44.        
  45.        case 2:
  46.        if(PilaLlena(&Pila)){
  47.        cout << "\nPila llena!!!!\n";}
  48.        else{
  49.        cout<<"Ingrese elementos a la pila:";
  50.        cin >> Elementos;
  51.        Push(&Pila,Elementos);
  52.        getch ();
  53.        system ("cls");
  54.        break;
  55.        
  56.        case 3:
  57.        if(PilaVacia(&Pila)){
  58.        cout << "\nLa pila esta vacia ingrese elementos primero!!!!\n";
  59.        }
  60.        else
  61.        {
  62.        Pop(&Pila,&Elementos);
  63.        cout <<"\n El elemento sacado de la pila es: "<<Elementos;
  64.        }
  65.        getch ();
  66.        system ("cls");
  67.        break;
  68.        
  69.        case 4:
  70.        cout << Imprimir(Pila);
  71.        getch ();
  72.        system ("cls");
  73.        break;  
  74.        
  75.        case 5:
  76.        cout <<  Contar(Pila);
  77.        getch ();
  78.        system ("cls");
  79.        break;      
  80. }}}
  81. getch ();
  82. }
  83. //InicializarPila
  84. void InicializarPila(TipoPila *Stack)
  85. {
  86.      Stack->Tope=VACIO;
  87.      }
  88. //PilaLlena
  89. int PilaLlena(TipoPila *Stack)
  90. {
  91.     return (Stack->Tope==MAX);
  92. }
  93. //PilaVacia
  94. int PilaVacia(TipoPila *Stack)
  95. {
  96.  return (Stack->Tope==VACIO);
  97. }
  98. //Push
  99. void Push (TipoPila *Stack,TipoElem Elemen)
  100. {
  101.  Stack->Tope++;
  102.  Stack->Elementos[Stack->Tope]=Elemen;
  103.  
  104.  }
  105.  //Pop
  106. int Pop (TipoPila *Stack,TipoElem *Elemen)
  107. {  
  108.  
  109.   *Elemen=Stack->Elementos[Stack->Tope];
  110.   Stack->Tope--;
  111.   return *Elemen;
  112.  }
  113.  //Imprimir
  114.  int Imprimir (TipoPila Stack)
  115.  {
  116. TipoElem Elemen;
  117. while (!PilaVacia(&Stack))
  118. {
  119.        Pop (&Stack,&Elemen);
  120.        cout <<"\n"<<Elemen;
  121. }        
  122.       }
  123. //Contar
  124. int Contar (TipoPila Stack)
  125. {
  126.  int contador=0;
  127.  TipoPila Aux;
  128.  TipoElem Elemen;  
  129.  InicializarPila (&Aux);
  130.  while (!PilaVacia(&Stack))
  131.  {
  132.  Pop(&Stack,&Elemen);
  133.  contador++;
  134.  cout << contador;
  135.  Push(&Aux,Elemen);
  136.  }
  137. }

Última edición por vnvnation; 26/10/2010 a las 00:59
  #19 (permalink)  
Antiguo 26/10/2010, 04:33
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

- La funcion Imprimir() la has definido que devuelve int.
- No pusiste ningun return al interior de su definicion
- Luego la llamaste e imprimiste el valor de retorno

Recomendaciones:
- Si no estas interesado en el valor que una funcion retorna, definela con void.
- Al invocarla, no uses cout, pues una funcion void no tiene retorno. De hecho, tal como esta, no tiene sentido usar cout para invocarla, aunque la idea sea imprimir los valores, eso es lo que ya hace la funcion. Solo llamala, no la imprimas.
  #20 (permalink)  
Antiguo 26/10/2010, 15:45
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Entonces seria a si verdad o aun esta ma???

Código C++:
Ver original
  1. #include <iostream.h>
  2. #include <conio.h>
  3. #define MAX 3
  4. #define VACIO -1
  5. typedef int TipoTope;
  6. typedef char TipoElem;
  7. typedef struct TipoPila{
  8.          TipoTope Tope ;
  9.           TipoElem Elementos [MAX];
  10.           }Pila;
  11. void InicializarPila (TipoPila *Stack);
  12. int PilaLlena(TipoPila Stack);
  13. int PilaVacia(TipoPila Stack);
  14. void Push (TipoPila *Stack,TipoElem Elemen);
  15. int Pop (TipoPila *Stack,TipoElem *Elemen);
  16. void Imprimir (TipoPila Stack);
  17. void Contar (TipoPila Stack);
  18.  main ()
  19. {
  20. system ("color a9");
  21. TipoPila Pila;
  22. TipoTope Tope=0;
  23. TipoElem Elementos=0;
  24. int opcion1=0;
  25. while (opcion1!='s')
  26. {
  27. cout << "\n\nSELECCIONE UNA OPCION DE LAS SIGUIENTES:";
  28.  cout <<"\n1 Inicializar Pila: \n";
  29.   cout <<"2 Ingresar elementos a la pila: \n";
  30.   cout <<"3 Sacar elementos de la pila: \n";
  31.    cout <<"4 Imprimir elementos de la pila: \n";
  32.    cout <<"5 Contar elementos de la pila: \n";
  33.    cout <<"\n opcion:";
  34.  cin >> opcion1;
  35.  system ("cls");
  36.  switch (opcion1)
  37. {
  38.        case 1:
  39.        InicializarPila(&Pila);
  40.        cout<<"Pila inicializada ...\n";
  41.        getch ();
  42.        system ("cls");
  43.        break;
  44.        
  45.        case 2:
  46.        if(PilaLlena(Pila)){
  47.        cout << "\nPila llena!!!!\n";}
  48.        else{
  49.        cout<<"Ingrese elementos a la pila:";
  50.        cin >> Elementos;
  51.        Push(&Pila,Elementos);
  52.        getch ();
  53.        system ("cls");
  54.        break;
  55.        
  56.        case 3:
  57.        if(PilaVacia(Pila)){
  58.        cout << "\nLa pila esta vacia ingrese elementos primero!!!!\n";
  59.        }
  60.        else
  61.        {
  62.        Pop(&Pila,&Elementos);
  63.        cout <<"\n El elemento sacado de la pila es: "<<Elementos;
  64.        }
  65.        getch ();
  66.        system ("cls");
  67.        break;
  68.        
  69.        case 4:
  70.         Imprimir(Pila);
  71.        getch ();
  72.        system ("cls");
  73.        break;  
  74.        
  75.        case 5:
  76.         Contar(Pila);
  77.        getch ();
  78.        system ("cls");
  79.        break;      
  80. }}}
  81. getch ();
  82. }
  83. //InicializarPila
  84. void InicializarPila(TipoPila *Stack)
  85. {
  86.      Stack->Tope=VACIO;
  87.      }
  88. //PilaLlena
  89. int PilaLlena(TipoPila Stack)
  90. {
  91.     return (Stack.Tope==MAX);
  92. }
  93. //PilaVacia
  94. int PilaVacia(TipoPila Stack)
  95. {
  96.  return (Stack.Tope==VACIO);
  97. }
  98. //Push
  99. void Push (TipoPila *Stack,TipoElem Elemen)
  100. {
  101.  Stack->Tope++;
  102.  Stack->Elementos[Stack->Tope]=Elemen;
  103.  
  104.  }
  105.  //Pop
  106. int Pop (TipoPila *Stack,TipoElem *Elemen)
  107. {  
  108.  
  109.   *Elemen=Stack->Elementos[Stack->Tope];
  110.   Stack->Tope--;
  111.   //  return *Elemen;
  112.  }
  113.  //Imprimir
  114.  void Imprimir (TipoPila Stack)
  115.  {
  116. TipoElem Elemen;
  117. while (!PilaVacia(Stack))
  118. {
  119.        Pop (&Stack,&Elemen);
  120.        cout <<"\n"<<Elemen;
  121. }        
  122.       }
  123. //Contar
  124. void Contar (TipoPila Stack)
  125. {
  126.  int contador=0;
  127.  TipoPila Aux;
  128.  TipoElem Elemen;  
  129.  InicializarPila (&Aux);
  130.  while (!PilaVacia(Stack))
  131.  {
  132.  Pop(&Stack,&Elemen);
  133.  contador++;
  134.  cout << contador;
  135.  Push(&Aux,Elemen);
  136.  }
  137. }
  #21 (permalink)  
Antiguo 26/10/2010, 21:48
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Supongo que el 1 extraño, que antes relatabas, dejó de salir. Tu deberias saberlo.
  #22 (permalink)  
Antiguo 26/10/2010, 21:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Si mi amigo desaparecio si efectivamente tienes mucha razon se te agradace, fui a revision y me dijeron que en la opcion 5 la de contar cuando no tengo elementos deve de aparecer 0 pero no me aparece, ahora tengo que hacer una funcion que me cuentes cuantas vocales hay en mi mila, cren que seriaa bueno usar un if o una funcion ¿? que me recomiendan?

MUCHAS GRACIAS
sam90
CalgaryCorpus
  #23 (permalink)  
Antiguo 27/10/2010, 07:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Haces los mismo que contar, pero el contador aumenta si el elemento es una vocal.

if (Elemen == 'a' || Elemen == 'e' ......) contador++;
  #24 (permalink)  
Antiguo 27/10/2010, 18:04
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Hola bueno el de las vocales ya quedo y quedo a si
Código C++:
Ver original
  1. void Vocales(TipoPila Stack)
  2. {
  3. int contador=0;
  4.  TipoPila Aux;
  5.  TipoElem Elemen;  
  6.  InicializarPila (&Aux);
  7.  while (!PilaVacia(Stack))
  8.  {
  9.  Pop(&Stack,&Elemen);
  10.  if ( (Elemen =='a') || (Elemen =='e') || ( Elemen =='i'  ) || ( Elemen =='o'  ) || ( Elemen =='u'))
  11.  {
  12.  contador++;
  13.  Push(&Aux,Elemen);
  14.  cout <<"\n"<<contador;
  15.  }
  16.  }
  17.  }

Pero ahora necesito que imprima mis elementos en el orden que los meti y otra que remplaze todos los elementos x po elementos y. Estas son mis funciones en la de imprimir ordenadamente aun no tengo una idea clara

Código C++:
Ver original
  1. //Imprimir 0rdenadamente
  2.  
  3.  void ImprimirOrden (TipoPila Stack)
  4.  {
  5. TipoElem Elemen;
  6. TipoPila Aux1;
  7. InicializarPila (&Aux1);
  8. while (!PilaVacia(Stack))
  9. {
  10.        Pop (&Stack,&Elemen);
  11.        Push(&Aux1,Elemen);
  12.        
  13. }        
  14.       }
  15. //Remplazar
  16. void Remplazar (TipoPila *Stack,TipoElem x,TipoElem y)
  17. {
  18. TipoPila Aux;
  19. TipoElem Elemen;
  20. InicializarPila (&Aux);
  21. while (!PilaVacia(*Stack))
  22. {
  23.        Pop (&(*Stack),&Elemen);
  24. if(Elemen=x)
  25. {Push(&Aux,y);}
  26. else{
  27. Push(&Aux,Elemen);}
  28. }
  29. while (!PilaVacia(Aux)){
  30. Pop (&Aux,&Elemen);
  31. Push(&(*Stack),Elemen);}
  32. }
  #25 (permalink)  
Antiguo 27/10/2010, 18:24
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

EL de imprimir te faltaria llamara a la funcion imprimir que hiciste anteriormente pero con la lista Aux1 como argumento. Ya que diste vuelta el orden popeando y pusheando los elementos de una pila a la otra.
  #26 (permalink)  
Antiguo 27/10/2010, 18:54
 
Fecha de Ingreso: marzo-2009
Mensajes: 74
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

Aver si ententi lo hice a si y al correrlo si me imprime como los ingrese pero el 1er elemento de mi pila me aparece al principio y al final

Código C++:
Ver original
  1. void ImprimirOrden (TipoPila Stack)
  2.  {
  3. TipoElem Elemen;
  4. TipoPila Aux1;
  5. InicializarPila (&Aux1);
  6. while (!PilaVacia(Stack))
  7. {                        
  8.        Pop (&Stack,&Elemen);
  9.        Imprimir (Stack);
  10.        Push(&Aux1,Elemen);
  11.        cout <<"\n"<<Elemen;
  12. }        
  13.       }
  #27 (permalink)  
Antiguo 27/10/2010, 19:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 7 meses
Puntos: 228
Respuesta: Error conversion from `TipoPila**' to non-scalar type `TipoPila' requested

A esto me referia. Tienes que empezar a usar la logica....sino no vas avanzar nada por tu cuenta.

Código C++:
Ver original
  1. void ImprimirOrden (TipoPila Stack)
  2.  {
  3. TipoElem Elemen;
  4. TipoPila Aux1;
  5. InicializarPila (&Aux1);
  6. while (!PilaVacia(Stack))
  7. {                        
  8.        Pop (&Stack,&Elemen);
  9.        Push(&Aux1,Elemen);
  10.  }
  11. Imprimir (Aux1);        
  12. }

Etiquetas: conversion, type
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:18.