Bienvenido

Bienvenido
Disfruta el contenido

miércoles, 21 de octubre de 2015

Codigos fuente estructura de datos Pila (stack) Encuesta de videojuegos y Nuevas secciones


¡Muchos saludos a todos en otro articulo mas!


Hola a todos mis visitantes y gracias por continuar visitando mi blog. ya tiene tiempo que no subo nuevos ejemplos pero muchas sorpresas estan en camino. Gracias por sus continuas visitas ya que veo que ha valido la pena  los articulos que he subido a este blog que me da gusto dedicarle a ustedes como comunidad de programadores, estudiantes y entusiastas de la programación.









Apoyo a encuesta.

Por el momento les agradeceria si me pueden apoyar con una encuesta muy rapida y sencilla por parte del sitio web de Encuesta Facil acerca de videojuegos

http://www.encuestafacil.com/RespWeb/Qn.aspx?EID=2051724


Código de Pila 


Aprovechando esta entrada le comparto un codigo sobre como implementar una pila en lenguaje C
Aun le faltan algunas pruebas pero lo basico funciona. Cualquier duda o comentario dejalo al final de este articulo en la seccion encontrada abajo de la pagina


El codigo que a continuacion les comparto fue hecho en Visual Studio, por lo normal para este tipo de progamas como en otras entradas uso mas Dev C++ debido a que es un compilador de menos requisitos y apegado al estandar C. Sin embargo las nuevas versiones del estandar nos obligan a actualizarnos no solo en tecnicas de programacion sino en nuestras herramientas para poder desarrollar nuestro trabajo. Espero les sea util el programa con el objetivo de experimentar y aprender ya que la verdad sobre todo para programacion no hay mejor forma de aprender que hacerlo.

El progama muestra el funcionamiento basico de una pila por medio de llenar cada nodo con los datos basicos de las caracteristicas de un producto tal como nombre del producto disponibilidad y costo para despues imprimir y eliminar el contenido de la pila. Con este programa continuamos con ejemplos sobre estructuras de datos dinamicas sumamente utilizadas como parte de los bloques de codigo en aplicaciones de la vida real.


 Para una referencia teorica sobre pilas les recomiendo el libro de Deitel en su capitulo de Estructuras de datos Es un clasico

Hasta luego y gracias por sus visitas




/*Blog de Rincon Informatico

Juan Carlos Lopez

DESCRIPCION
Implemetacion de una pila
este programa esta hecho para ser una experiencia de aprendizaje en el uso de pilas con lenguaje C
Tomando en cuenta las consideraciones de sintaxis puede subirse a otro lenguaje



Un saludote y continua programando!!!


*/


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<Windows.h>

#define MAX 30

struct inventario{
int numProducto; //Valor identificador dentro de la pila

char nombre[MAX];
float costo;
    int existencia;

struct inventario *sigPtr;
};

typedef struct inventario NODOPILA;
typedef NODOPILA *NODOPILAPTR;

void push(NODOPILAPTR *, int);
int pop(NODOPILAPTR *);
int vacio(NODOPILAPTR);
void imprimir(NODOPILAPTR);

void salir();

int main()
{
NODOPILAPTR pilaPtr = NULL;
int opcion, numProd;
char salida, ejecucion;
salida = 'n';
REGRESA:
system("cls");
system("color F9");

//switch(salida == 'n' || salida == 'N'){//Comienza el programa
//Presentacion del programa
printf("\n\n\tPrograma de una pila ENTER para continuar\n");
printf("\t\n");
printf("\tJuan Carlos Lopez \n");

getch();

do{//Inicia la ejecucion del programa
system("cls");

printf("\tMenu de opciones\n\n");
printf("\t1.-Agregar un elemento a la pila (push): \n");
printf("\t2.-Quitar un elemento de la pila (pop): \n");
printf("\t3.-Imprimir la pila\n");
printf("\t4.-Salir\n\n");

printf("\tIngrese una opcion: ");
scanf("%d", &opcion);

switch(opcion){
case 1:  //Agregar un valor dentro de la pila
printf("\tIngresa el numero de producto: ");
scanf("%d", &numProd);

push(&pilaPtr, numProd);
break;

case 2:  //Quitar un elemento de la pila
if(!vacio(pilaPtr))
printf("\nEl valor sacado es %d", pop(&pilaPtr));
else
printf("\nla pila se encuentra vacia");

break;

case 3:   //Imprimir la pila
imprimir(pilaPtr);
break;

case 4:   //Salir del programa
salir();
break;

default:
printf("\nOpcion invalida, Intente de nuevo ENTER para continuar");
getch();
break;

}

   printf("\n\tDesea una nueva opcion(S/N)? ");
   ejecucion = getch();
   ejecucion = tolower(ejecucion);


   }while(ejecucion == 's' || ejecucion == 's');

printf("\nConfirmar para salir del `programa(S/N)? ");
salida = getch();
salida = tolower(salida);

if(salida == 's' || salida == 'S'){
printf("Saliendo del programa ENTER para continuar");
exit(EXIT_SUCCESS);
getch();


}else
goto REGRESA;  //Regresa al inicio de la ejecucion del programa



//}//Fin de switch Termina el programa


return 0;
}//Fin de main

//Permite al usuario salir del programa desde el menu de opciones
void salir()
{
char salida;
printf("\n\nConfirmar para salir del `programa ");
salida = getch();
salida = tolower(salida);

if(salida == 's' || salida == 'S'){
printf("\nSaliendo del programa ENTER para continuar");
exit(EXIT_SUCCESS);
getch();


}
}//Fin de salir

//Insertar un nuevo elemento en la pila
void push(NODOPILAPTR *bordePtr, int valor )
{
NODOPILAPTR nuevoPtr;

nuevoPtr = (NODOPILAPTR) malloc(sizeof(NODOPILA));
if(nuevoPtr != NULL){
printf("\tIngresa el numero de producto:");
fflush(stdin);
scanf("%d", &nuevoPtr->numProducto);

printf("\tIngresa el nombre del producto");
   fflush(stdin);
gets(nuevoPtr->nombre);

printf("\tIndica la existencia del producto");
fflush(stdin);
scanf("%d", &nuevoPtr->existencia);


printf("\tIngresa el costo del producto");
fflush(stdin);
scanf("%f", &nuevoPtr->costo);


nuevoPtr->numProducto = valor;
nuevoPtr->sigPtr = *bordePtr;
*bordePtr = nuevoPtr;

while(getchar() != '\n');


}else
printf("\tProducto No. = %d No se inserto. No se tiene memoria disponible", valor);


}//Fin de push

//Remover un nodo del tope de la pila
int pop(NODOPILAPTR *topePtr)
{
NODOPILAPTR tempPtr;
int remueve;

tempPtr = *topePtr;
remueve = (*topePtr)->numProducto;
*topePtr = (*topePtr)->sigPtr;

return remueve;
}//Fin de pop

//Imprimir el contenido de la lista
void imprimir(NODOPILAPTR correspPtr)
{
if(correspPtr == NULL)
printf("\nLa pila se encuentra vacia");
else{
printf("\nla pila es \n");

while(correspPtr != NULL){
printf("  Nombre %s\n", correspPtr->nombre);
printf("  Costo\n", correspPtr->costo);
printf("  En existencia %c\n", correspPtr->existencia );

printf(" %d --> ", correspPtr->numProducto);

   correspPtr = correspPtr->sigPtr;

}
printf("NULL");


}
}//Fin de imprimir


 //Si la pila se encuentra vacia
int vacio(NODOPILAPTR bordePtr)
{
return bordePtr == NULL;

}//Fin de vacio


























No hay comentarios:

Publicar un comentario