ayuda acerca de pilas
un profesor me dio un codigo de pilas que guardan numeros y quiere que guarde letras, este es el codigo, tengo 2 semanas tratando y no e podido convertirlo. En mi defensa, tengo 2 semanas programando en C++ y no conosco el codigo ni la sintaxis.
si alguien me puede ayudar se los agradeceria.
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 20
void poner (float dato);
float quitar (void);
int ultimo=0,z;
float dato;
float pila [MAX];
void main(void)
{
int x;
float temp;
menu: clrscr();
printf("n");
printf ("nnnn Que operacion desea realizar?");
printf ("nnn 1) Introducir un dato");
printf ("n 2) Quitar un dato");
printf ("n 3) Visualizar los datos de la pila");
printf ("n 4) Salir del programa n");
printf ("nt opcion : ");
scanf("%d",&x);
switch(x)
{
case 1: {clrscr();
printf ("nnAhora introduzca el dato:");
scanf("%f", &dato);
poner (dato);
goto menu;
break;}
case 2 : {clrscr();
temp=quitar();
printf("El dato eliminado sera: %f",temp);
getch();
goto menu;
break; }
case 3: {clrscr();
printf("nLos datos de la pila son: n");
for (z=0;z<=ultimo-1;z++)
printf("n% .f", pila[z]);
getch();
goto menu;
break;}
case 4: {clrscr();
printf ("nnn Tarea #2");
sleep(2);
exit(1);}
{
default: printf("Opcion no valida");
getch();
goto menu;
break;}
}
}
void poner (float dato)
{
if (ultimo>MAX)
{
printf ("ERROR OVERFLOW n");
return;
}
pila [ultimo]=dato;
ultimo++;
}
float quitar(void)
{
ultimo--;
if (ultimo<0)
{
printf ("ERROR UNDERFLOW n");
return 0;
}
return pila [ultimo];
}
de antemano, gracias...
si alguien me puede ayudar se los agradeceria.
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 20
void poner (float dato);
float quitar (void);
int ultimo=0,z;
float dato;
float pila [MAX];
void main(void)
{
int x;
float temp;
menu: clrscr();
printf("n");
printf ("nnnn Que operacion desea realizar?");
printf ("nnn 1) Introducir un dato");
printf ("n 2) Quitar un dato");
printf ("n 3) Visualizar los datos de la pila");
printf ("n 4) Salir del programa n");
printf ("nt opcion : ");
scanf("%d",&x);
switch(x)
{
case 1: {clrscr();
printf ("nnAhora introduzca el dato:");
scanf("%f", &dato);
poner (dato);
goto menu;
break;}
case 2 : {clrscr();
temp=quitar();
printf("El dato eliminado sera: %f",temp);
getch();
goto menu;
break; }
case 3: {clrscr();
printf("nLos datos de la pila son: n");
for (z=0;z<=ultimo-1;z++)
printf("n% .f", pila[z]);
getch();
goto menu;
break;}
case 4: {clrscr();
printf ("nnn Tarea #2");
sleep(2);
exit(1);}
{
default: printf("Opcion no valida");
getch();
goto menu;
break;}
}
}
void poner (float dato)
{
if (ultimo>MAX)
{
printf ("ERROR OVERFLOW n");
return;
}
pila [ultimo]=dato;
ultimo++;
}
float quitar(void)
{
ultimo--;
if (ultimo<0)
{
printf ("ERROR UNDERFLOW n");
return 0;
}
return pila [ultimo];
}
de antemano, gracias...
solamente tienes que cambiar el tipo de dato en lugar de que este declarado con int declararlo con char
He visto el código te pongo aquí lo que querías pero no lo he podido compilar pues tengo problemas con mi compilador tendré que reinstalarlo nuevamente.
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 20
void poner (char dato);
char quitar (void);
int ultimo;
char pila [MAX];
void main(void)
{
int x,z;
char temp,dato;
do
{
clrscr();
printf("n");
printf ("nnnn Que operacion desea realizar?");
printf ("nnn 1) Introducir un dato");
printf ("n 2) Quitar un dato");
printf ("n 3) Visualizar los datos de la pila");
printf ("n 4) Salir del programa n");
printf ("nt opcion : ");
scanf("%d",&x);
switch(x)
{
case 1:
clrscr();
printf ("nnAhora introduzca el dato:");
scanf("%c",&dato);
poner (dato);
break;
case 2:
clrscr();
temp=quitar();
printf("El dato eliminado sera: %c",temp);
getch();
break;
case 3:
clrscr();
printf("nLos datos de la pila son: n");
for (z=0;z<=ultimo-1;z++)
printf("n% .f", pila[z]);
getch();
break;
case 4:
clrscr();
printf ("nnn Tarea #2");
sleep(2);
exit(1);
default:
printf("Opcion no valida");
getch();
break;
}
}while(x!=4);
}
void poner (char dato)
{
if (ultimo>MAX)
{
printf ("ERROR OVERFLOW n");
return;
}
pila[ultimo]=dato;
ultimo++;
}
char quitar(void)
{
ultimo--;
if (ultimo<0)
{
printf ("ERROR UNDERFLOW n");
return 0;
}
return(pila[ultimo]);
}
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 20
void poner (char dato);
char quitar (void);
int ultimo;
char pila [MAX];
void main(void)
{
int x,z;
char temp,dato;
do
{
clrscr();
printf("n");
printf ("nnnn Que operacion desea realizar?");
printf ("nnn 1) Introducir un dato");
printf ("n 2) Quitar un dato");
printf ("n 3) Visualizar los datos de la pila");
printf ("n 4) Salir del programa n");
printf ("nt opcion : ");
scanf("%d",&x);
switch(x)
{
case 1:
clrscr();
printf ("nnAhora introduzca el dato:");
scanf("%c",&dato);
poner (dato);
break;
case 2:
clrscr();
temp=quitar();
printf("El dato eliminado sera: %c",temp);
getch();
break;
case 3:
clrscr();
printf("nLos datos de la pila son: n");
for (z=0;z<=ultimo-1;z++)
printf("n% .f", pila[z]);
getch();
break;
case 4:
clrscr();
printf ("nnn Tarea #2");
sleep(2);
exit(1);
default:
printf("Opcion no valida");
getch();
break;
}
}while(x!=4);
}
void poner (char dato)
{
if (ultimo>MAX)
{
printf ("ERROR OVERFLOW n");
return;
}
pila[ultimo]=dato;
ultimo++;
}
char quitar(void)
{
ultimo--;
if (ultimo<0)
{
printf ("ERROR UNDERFLOW n");
return 0;
}
return(pila[ultimo]);
}
