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

Recopilacion Programas C/C++

Estas en el tema de Recopilacion Programas C/C++ en el foro de C/C++ en Foros del Web. Hola ! Amigos de foros del web. En verdad me gusta mucho ver sus post en este Foro. Pero ahora quisiera pedirles un super super ...
  #1 (permalink)  
Antiguo 06/06/2012, 22:21
Avatar de rodolfolopes  
Fecha de Ingreso: enero-2012
Ubicación: Raccon City
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Información Recopilacion Programas C/C++

Hola ! Amigos de foros del web. En verdad me gusta mucho ver sus post en este Foro. Pero ahora quisiera pedirles un super super super super super grande favor. Actualmente estudio Ingenieria En Sistemas Computacionales. Utilizamos actualmente Java pero actualmente necesito aprender a usar C y C++. Asi que quisiera que ustedes postearan programas que ustedes ya hayan hechos no importa si son simples o complejos . Para que yo pudiera analizarlos :)
Actualmente quiero aprender completamente el lenguaje C++ y C


Enserio Se los agradeceria mucho.
Ire editando el Post para que pudieran tener acceso todos :)
Gracias :)
  #2 (permalink)  
Antiguo 07/06/2012, 00:40
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 3 meses
Puntos: 94
Respuesta: Recopilacion Programas C/C++

Hola! creo q vas a aprender mas rapido haciendo tus propios codigos que analizando el de los demas, ya que cada una tiene distintas formas de programar. En fin te dejo uno de listas en C que hice el año pasado(esto fue un parcial)
Código C:
Ver original
  1. /******** includes **********/
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define NOMBRE 10
  8.  
  9. /* definicion de una estructura autoreferenciada */
  10. struct nodo {
  11.   char nombre[NOMBRE];
  12.   int inventario;
  13.   int stock;
  14.   //float costo;
  15.   //int ganancia;
  16.   //float precio;
  17.   struct nodo *siguiente;
  18. };
  19.  
  20. /*********** Prototipos de funciones ************/
  21.  
  22. void agregar_nodo(struct nodo **);
  23. void mostrar_lista(struct nodo *);
  24. void buscar_nodo(struct nodo *);
  25. void modificar_nodo(struct nodo *);
  26. void insertar_nodo(struct nodo *);
  27. void borrar_nodo(struct nodo **);
  28. void menu();
  29. struct nodo *crear_nodo();
  30.  
  31. /**********         Main        ***********/
  32.  
  33. int main(void)
  34. {
  35.   int opcion;
  36.   /* creo un puntero, a struct nodo, que siempre va a ser la cabeza de la lista */
  37.   struct nodo *ptr_cabeza=NULL; /* inicialmente la lista se encuentra vacia */
  38.  
  39.   menu();
  40.  
  41.   do
  42.   {
  43.     printf("opcion: ");scanf("%d",&opcion);
  44.    
  45.     switch(opcion)
  46.     {
  47.       case 1:
  48.     agregar_nodo(&ptr_cabeza);
  49.     break;
  50.       case 2:
  51.     mostrar_lista(ptr_cabeza);
  52.     break;
  53.       case 3:
  54.     buscar_nodo(ptr_cabeza);
  55.     break;
  56.       case 4:
  57.     modificar_nodo(ptr_cabeza);
  58.     break;
  59.       case 5:
  60.     insertar_nodo(ptr_cabeza);
  61.     break;
  62.       case 6:
  63.     borrar_nodo(&ptr_cabeza);
  64.     break;
  65.       case 7:
  66.     printf("\n\t\t********** FIN DEL PROGRAMA **********\n\n");
  67.     break;
  68.       default:
  69.     system("clear");
  70.     printf("OPCION NO VALIDA\n");
  71.     menu();
  72.     break;
  73.     } /* fin del switch */
  74.   } /* fin del do */
  75.   while(opcion!=7);
  76.  
  77.   return 0;
  78.  
  79. }
  80.  
  81. void menu(void)
  82. {
  83.   printf("\n\t\t******** Menu principal ********\n");
  84.   printf("1 - Agregar nodo\n");
  85.   printf("2 - Mostrar lista\n");
  86.   printf("3 - Buscar nodo\n");
  87.   printf("4 - Modificar nodo\n");
  88.   printf("5 - Insertar nodo\n");
  89.   printf("6 - Borrar nodo\n");
  90.   printf("7 - Salir\n");
  91. }
  92.  
  93.  
  94. /************** Funcion: agregar_nodo ***************/
  95.  
  96. /* cada vez que se crea un nodo este se crea a la izquierda del que ya se encuentra en la lista,
  97. es decir el primer nodo ingresado va a ser la cola de la lista y el ultimo a ingresar va a ser
  98. el primero(cabeza) de la lista */
  99.  
  100. void agregar_nodo(struct nodo **enlace) /* preguntar por que se pasa puntero a puntero ??? se pasa xq recibe un puntero al cual
  101. se le cambia la direccion a donde apunta  */
  102. {
  103.   struct nodo *ptr_nuevo; /* creo un puntero a la estructura nodo */
  104.   ptr_nuevo=crear_nodo();
  105.  
  106.   if(ptr_nuevo==NULL) /* no se reservo memoria */
  107.   {
  108.     printf("No se pudo asignar memoria\n");
  109.     return;
  110.   }
  111.   ptr_nuevo->siguiente=*enlace;//el nodo creado ahora apunta al nodo que se encuentra a su derecha (cuando la lista se encuentra vacia el primenr nodo creado apunta a NULL)
  112.   *enlace=ptr_nuevo;//el puntero enlace(cabeza) ahora apunta al nodo creado
  113. }
  114.  
  115.  
  116.  
  117. /*************** Funcion mostrar_lista ********************/
  118.  
  119. /* Imprime en pantalla los nodos de la lista, si esta se encuentra vacia informa que no hay nodos creados */
  120.  
  121. void mostrar_lista(struct nodo *p_actual)
  122.  
  123. {
  124.   if(p_actual==NULL) /* la lista se encuentra vacia */
  125.   {
  126.     printf("Lista vacia\n");
  127.     return;
  128.   }
  129.   /* existe la lista */
  130.   printf("\n\t\t********* LISTA *********\n");
  131.   while(p_actual!=NULL){/* imprime los miembros de cada nodo hasta que el ultimo nodo apunte a NULL */
  132.     printf("Nombre: %s  ",p_actual->nombre);
  133.     printf("Inventario: %d  ",p_actual->inventario);
  134.     printf("Stock: %d  -->  ",p_actual->stock);
  135.     p_actual=p_actual->siguiente;
  136.   } /* fin del while */
  137.   printf("NULL\n\n");
  138. }
  139.  
  140. void buscar_nodo(struct nodo *p)
  141. {
  142.   if(p==NULL)//la lista se encuentra vacia
  143.   {
  144.     printf("Lista vacia\n");
  145.     return;
  146.   }
  147.  
  148.   int opcion,inven;
  149.   char name[NOMBRE];
  150.  
  151.   printf("0 - Para busqueda por nombre\n");
  152.   printf("1 - Para busqueda por inventario\n");
  153.   printf("?: ");scanf("%d",&opcion);
  154.   while(opcion!=0&&opcion!=1)
  155.   {
  156.     printf("Opcion no valida\n");
  157.     printf("?: ");scanf("%d",&opcion);
  158.   }
  159.   switch(opcion)
  160.   {
  161.     /* la busqueda se realiza por nombre */
  162.     case 0:
  163.       printf("Ingrese nombre a buscar: ");
  164.       scanf("%s",name);
  165.       while((p!=NULL)&&strcmp(name,p->nombre)!=0)//preguntar por el orden ???
  166.     p=p->siguiente; /* cambia al nodo a su derecha */
  167.       if(p==NULL) /* no se encontro el nodo */
  168.     printf("Nodo no encontrado\n");
  169.       else /* se encontro el nodo */
  170.       {
  171.     printf("Nodo encontrado\n");
  172.     printf("Nombre: %s\n",p->nombre);
  173.     printf("Inventario: %d\n",p->inventario);
  174.     printf("Stock: %d\n",p->stock);
  175.       }
  176.       break;
  177.       /* la busqueda se realiza por inventario */
  178.       case 1:
  179.     printf("Ingrese numero de inventario: ");
  180.     scanf("%d",&inven);
  181.     while(p!=NULL&&(p->inventario!=inven))
  182.       p=p->siguiente;
  183.     if(p==NULL) /* nose encontro nodo */
  184.       printf("Nodo no encontrado\n");
  185.     else /* se encontro el nodo */
  186.     {
  187.       printf("Nodo encontrado\n");
  188.       printf("Nombre: %s\n",p->nombre);
  189.       printf("Inventario: %d\n",p->inventario);
  190.       printf("Stock: %d\n",p->stock);
  191.     }
  192.   }/* fin del switch */
  193. }
  194.  
  195. void modificar_nodo(struct nodo *p)
  196. {
  197.   if(p==NULL) /* la lista se encuentra vacia */
  198.   {
  199.     printf("Lista vacia. No hay nodos para modificar\n");
  200.     return;
  201.   }
  202.   char name[NOMBRE];
  203.  
  204.   printf("Inserte un nombre para modificar su nodo\n");
  205.   printf("name: ");scanf("%s",name);
  206.  
  207.   while(p!=NULL&&strcmp(name,p->nombre)!=0)
  208.     p=p->siguiente;
  209.  
  210.   if(p==NULL)
  211.     printf("El nombre no se encuentra en la lista\n");
  212.   else
  213.   {
  214.     printf("Modifique los campos del nodo\n");
  215.     printf("Stock: ");scanf("%d",&p->stock);
  216.   }
  217. }
  218.  
  219. void insertar_nodo(struct nodo *p)
  220.  
  221. {
  222.   if(p==NULL) /* la lista se encuentra vacia */
  223.   {
  224.     printf("Lista vacia\n");
  225.     return;
  226.   }
  227.   char name[NOMBRE];
  228.  
  229.   printf("Especifique delante de que elemento desea insertar un nodo:\n");
  230.   printf("name: ");scanf("%s",name);
  231.  
  232.   /* bucle de  busqueda, del elemento indicado, en la lista */
  233.   while(p!=NULL&&strcmp(name,p->nombre)!=0)
  234.     p=p->siguiente;
  235.  
  236.   if(p==NULL)
  237.     printf("El elemento no se encuentra en la lista\n");
  238.   else{
  239.     struct nodo *ptr_nuevo;
  240.     ptr_nuevo=crear_nodo();
  241.  
  242.     if(ptr_nuevo==NULL)/* no se reservo memoria */
  243.       printf("No se pudo asignar memoria\n");
  244.     else{ /* se creo el nuevo nodo; se enlazan los punteros */
  245.       ptr_nuevo->siguiente=p->siguiente; /* el nuevo nodo apunta a su derecha. Si es el ultimo nodo donde se inserto apunta a NULL */
  246.       p->siguiente=ptr_nuevo; /* el nodo izquierdo del nuevo nodo ahora apunta al nuevo nodo */
  247.     } /* fin del else interno */
  248.   } /* fin del else externo */
  249. }
  250.  
  251. void borrar_nodo(struct nodo **cabeza)
  252. {
  253.   if(*cabeza==NULL) /* la lista se encuentra vacia */
  254.   {
  255.     printf("Lista vacia. No hay nodos para borrar\n");
  256.     return;
  257.   }
  258.   struct nodo *actual,*anterior;
  259.   char name[NOMBRE];
  260.  
  261.   actual=*cabeza;
  262.  
  263.   printf("Especifique un nombre para borrar su nodo:\n");
  264.   printf("name: ");scanf("%s",name);
  265.  
  266.   /* bucle de busqueda, del elemento indicado, en la lista */
  267.   while(actual!=NULL&&strcmp(name,actual->nombre)!=0)
  268.   {
  269.     anterior=actual;
  270.     actual=actual->siguiente;
  271.   }
  272.  
  273.   if(actual==NULL)
  274.     printf("El elemento no se encuentra en la lista\n");
  275.   else
  276.   {/* se distingue entre si el nodo a borrar es la cabeza de la lista o no */
  277.     if(actual==*cabeza) /* si el nodo a borrar es la cabeza */
  278.       *cabeza=actual->siguiente;/* ahora la *cabeza es el nodo que se encuentra a su derecha */
  279.     else /*el nodo a borrar no es la cabeza */
  280.       anterior->siguiente=actual->siguiente;/*el nodo anterior al nodo a borrar ahora apunta al nodo que esta a la derecha del nodo a borrar */
  281.      
  282.     free(actual);//libero el espacio de memoria del nodo borrado  
  283.     printf("Nodo borrado\n");
  284.   }
  285. }
  286.  
  287. struct nodo *crear_nodo(void)
  288. {
  289.   struct nodo *p_crear;
  290.   p_crear=(struct nodo*)malloc(sizeof(struct nodo));
  291.  
  292.   if(p_crear==NULL)/* no se pudo almacenar memoria para el nuevo nodo */
  293.     return NULL;
  294.  
  295.   /* se creo y se ingresan los campos del nodo */
  296.   printf("Ingrese nombre: ");
  297.   scanf("%s",p_crear->nombre);
  298.   printf("Ingrese numero de inventario: ");
  299.   scanf("%d",&p_crear->inventario);
  300.   printf("Ingrese Stock: ");scanf("%d",&p_crear->stock);
  301.   p_crear->siguiente=NULL;
  302.  
  303.   return p_crear;
  304. }

Saludos

Etiquetas: programa, programas
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 22:04.