Bienvenido

Bienvenido
Disfruta el contenido

miércoles, 21 de octubre de 2015

Compendio de programas utiles en C++



Hola en esta entrada les comparto algunos programas utiles y curiosos en C++ para todo aquel que va empezando y desea empezar a conocer sobre uno de los lenguajes mas completos que se hayan realizado. Actualmente este lenguaje a pesar de elegir otras opciones tales como Java o Python para scripts web (muy utilizado en Fb )  este lenguaje aun tiene una fuerte presencia en areas de finanzas y sin duda es la primera opcion en el desarrollo de videojuegos. Muchos de los motores de videojuegos se manejan con C++ incluyendo Ogre 3D una interesante opcion de un motor grafico orientado a escenas y el bien conocido Unreal Engine; el motor utilizado en la popular serie de los juegos de Gears of War.  






APOYO A ENCUESTA
Hola les agradeceria mucho si me apoyan con una encuesta por medio del sitio web de Encuesta Facil solo te tomara un minuto y es sobre video juegos Gracias por tu visita y continua visitando este blog que es para la comuidad

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



Bibliografia recomendada
Aqui les dejo unos titulos que son bastante bueno para todo aquel que busca sumergirse en el mundo de C++

Este libro esta escrito por el responsable de la concepcion de C++ Bjarne Stroustrup. Excelente opcion para quien busca de lleno entrar por este camino al mundo de posibilidades de este poderoso lenguaje de programacion. 


El libro de Savitch es mucho mas practico enfocado en la resolucion practica de problemas de programacion asi como familiarizarse con el lenguaje





/*
Inicializacion de un arreglo

*/

#include <iostream>
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main()
{
int n[10 ], s[10 ];
const int tamArreglo = 10;  //las variables constantes se deben inicializar

int a[tamArreglo] = {3, 5, 6, 7, 5, 3, 2, 4, 2, 15};
int total = 0;   //acumulador



for(int i = 0; i < 10; i++)
 n[i] = 0;

cout << "Elemento" << setw(13) << "valor\n" << endl;

//imprime el valor de cada elemento del arreglo
cout << "Elementos " << endl;
for(int jk = 0; jk < 10; jk++)
cout << setw(7) << jk <<  setw(13 ) << n[jk ] << endl;



for(int j = 0; j < tamArreglo; j++)
 s[j] = 2 + 2 * j;

//imprime el contenido del arreglo en fomato tubular
cout << "Aumento de los arreglos" << endl;
for(int k = 0; k < tamArreglo; k++)
 cout << setw(7) << k << setw(13) << s[k ] << endl;


for(int h = 0; h < tamArreglo; h++)
 total += a[h ];  

cout << "El total de los elementos es: "<< total << endl;
//for(int estrellas = 0; estrellas < a[h]; estrellas++)  
//  cout << '*';
return 0;



}





/*Programacion de factorial recursivo

*/

#include <iostream>
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;

unsigned long factorial(unsigned long);

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv)
{
for(int cont = 0; cont <= 10; cont++)
 cout << setw(2) << cont << "! = "<< factorial(cont) << endl;

return 0;
}

//definicion recursiva de factorial
unsigned long factorial(unsigned long numero)
{
if(numero <= 1)
 return 1;
else
 return numero * factorial(numero - 1);
}


USO BASICO DE CICLOS Y ACUULADORES EN C++



/*Ejercicio de programacion ¿Que imprime este programa?

*/

#include <iostream>
using std::cout;
using std::cin;
using std::endl;


/* */

int main()
{
int y;
int x = 1;
int total = 0;

while(x <= 10)
{
y = x * x;
cout << y << endl;
total += y;
x++;
}

cout << "El total es: " << total << endl;  //muestra el resultado

return 0;
}



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