C/Visual C - Correccion de error de un programa C++ con pilas

   
Vista:

Correccion de error de un programa C++ con pilas

Publicado por Tanya Romero tayromeros@gmail.com (1 intervención) el 31/07/2016 23:28:21
Hola, necesito mucho su ayuda, me han dejado una practica y llevo días realizando la y no consigo éxito es sobre llenar pilas te dan el programa con errores y tienes que solucionarlo, corrigiendo los errores pero, no eh tenido éxito ya que el tema de pilas no me queda muy claro alguien me podría ayudar?
Programa1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <iostream>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define LONGMAX 10
using namespace std;
 
int p, valor, s[LONGMAX], pl;
char valorl[40], cad[LONGMAX][20];
void push(); void pop();
void imprimir(); void pushcad();
void popcad(); void imprimircad();
void menucad(); void menunum();
 
int main (){
    int opc;
    do {
        system("cls");
        cout<<"MENU PRINCIPAL"<<endl;
        cout <<"1.Numeros"<<endl;
        cout <<"2.Cadenas"<<endl;
        cout <<"3.Salir"<<endl;
        cin >> opc;
 
        switch (opc){
            case 1:{menunum();break;}
            case 2:{menucad(); break;}
        }
    }while (opc!=3);
    getch();
}
 
void menunum(){
    int opcl;
    do {
        system("cls");
        cout <<"MENU NUMERICO"<<endl;
        cout <<"1.Meter"<<endl;
        cout <<"2.Sacar"<<endl;
        cout <<"3.Imprimir"<<endl;
        cout<<"4.Regresar"<<endl;
        cin >> opcl;
 
        switch (opcl){
            case 1 {push (); break;}
            case 2 { pop (); break;}
            case 3 {imprimir (); break;}
 
        }
    }while (opcl !=4);
    }
void menucad(){
    int opc2;
    do{
        system ("cls");
        cout <<"MENU CADENA"<<endl;
        cout<<"1.Meter Cadena"<<endl;
        cout<<"2.Sacar Cadena"<<endl;
        cout<<"3.Imprimir Cadena"<<endl;
        cout<<"4.Regresar"<<endl;
        cin>>opc2;
 
        switch (opc2){
            case 1:{pushcad(); break;}
            case 2:{popcad(); break;}
            case 3:{imprimircad(); break;}
        }
    }while (opc2!=4);
}
void push (){
    if (p==LONGMAX){
        cout<<"Pila Llena"<<endl;
    }
    else
    {
        p++;
        cout<<"Indica el valor a almacenar"<<endl;
        cin>>valor;
        s[p]=valor;
    }
}
void pop(){
    if (p==0){
        cout<<"Pila vacia"<<endl;
    }
    else
    {
        valor= s[p];
        cout<<"El valor eliminado es:"<<valor<<endl;
        p--;
    }
}
void imprimir (){
    int x,z;
    z=p;
    for (x=1; z<=<; x++){
        cout<<"El valor a almacenado en la posicion: "<<x<<"es:"<<s[x]<<endl;
    }
    getch();
    }
 
void pushcad(){
    if (pl == LONG_LONG_MAX){
        cout<<"Pila Llena"<<endl;
    }
    else
    {
        pl++;
        cout<<"indica el valor a almacenar"<<endl;
        cin>>valorl;
        stcpy(cad[pl]);valorl);
    }
}
void popcad(){
    if(pl==0){
        cout<<"Pila Vacia"<<endl;
    }
    else
    {
        strcpy(valorl, cad[pl]);
        cout<<"El valor eleminado es:"<<valorl<<endl;
        pl--;
    }
}
void imprimircad(){
    int x, z;
    z=pl;
    for (x=1; x<=z; x++){
        cout<<"El valor a almacenado en la posicion:"<<x<<"es:"<<cad[x]<<endl;
    }
    getch();
}

Programa 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#define LONGMAX 10
using namespace std;
 
typedef struct_nodo{
    int valor;
    struct_nodo*siguiente;
} tipoNodo;
 
typedef tipoNodo *pNodo;
typedef tipoNodo *Pila;
 
int valor;
 
/* Funciones con pilas:*/
void Push(Pila*l, int v);
int Pop (Pila*l);
void imprimir (Pila*pl);
 
int main()
{
    Pila pila = NULL;
    Pila pila2 = NULL;
    int opc;
    do{
        cout<<"1.Meter"<<endl;
        cout<<"2.Sacar"<<endl;
        cout<<"3.Imprimir"<<endl;
        cout<<"4.Salir"<<endl;
        cin>>opc;
 
        switch(opc){
            case 1:{
                cout<<"Indica el valor almacenar"<<endl;
                cin>>valor;
                Push(&pila, valor);
                break;}
            case 2:{Pop(&pila);break;}
            case 3;{
                imprimir(&pila);break;}
 
            }
    }while(opc!=4);
    system("PAUSE");
    return 0;
        }
 
void Push(Pila*pila,int v)
 
{
    pNodo nuevo;
 
    /* Crear un nodo nuevo */
    nuevo = (pNodo) malloc(sizeof(tipoNodo));
    nuevo->valor=v;
 
    /*adimos la pila a continucacion del nuevo nodo*/
    nuevo->siguiente=*pila;
    /* Ahora, el comienzo de nuestra pila es en nuevo nodo*/
    *pila=nuevo;
}
 
int Pop(Pila *pila)
{
    pNodo nodo; /*variable auxiliar para manipular nodo*/
    int v; /* variable auxiliar para retorno*/
 
    /* Nodo apunta al primer elemento de la pila*/
    nodo=*pila;
    if(!nodo) return 0; /*Si no hay nodos en la pila retornamos 0*/
    /*Asignamos a pila toda la pila menos el primer elemento*/
    *pila = nodo -> siguiente;
    /*Guardamos el valor de retorno*/
    v= nodo-> valor;
    /*Borrar el nodo*/
    free(nodo);
    return v;
}
 
void imprimir(Pila*pl)
{
    pNodo nodo; /*variable auxiliar para manipular nodo*/
    int v; /* variable auxiliar para retorno*/
 
    /* Nodo apunta al primer elemento de la pila */
    nodo = *pl;
    if (!nodo) cout<<"No tiene informacion"; /* Si no hay nodos en la pila retornamos 0*/
    /* Asignamos a pila toda la pila menos el primer elemento */
    *pl=nodo -> siguiente;
    /* Guardamos el valor de retorno*/
    v=nodo->valor;
    cout <<"El valor que contiene es:"<<v<<endl;
    /*Borrar el nodo*/
    free(nodo);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder