Un saludo
Bueno, ya veo que no ha habido mucho movimiento por aqui..... una pena
Me habeis hecho desempolvar el modulo de c++ que hice el año pasado

y mirando alguno de los ejercicios he visto este:
| QUOTE |
/*programa que realiza varias operaciones con una cola circular*/ #include<stdio.h> #include<conio.h>
typedef struct elemento //Es la parte del nodo que contiene los datos {long dni; //El typedef es para no tener que escribir todo el char nombre[10]; //co¤azo de la struc cada vez que se utilice una }telemento; //variable de este tipo
typedef struct nodo //Es el nodo en si con la parte de los datos. Fijate que es un tipo struct con el tipo struct de arriba dentro {telemento datos; //que es la de arriba y el puntero al siguiente struct nodo *sig; //valor del nodo que es *sig }tnodo; //El typedef vale para lo mismo que el de arriba
typedef tnodo *cola; //Es un puntero a un tnodo
typedef enum boolean {FALSE, TRUE} tboolean; //En teoria es para hacer mas sencillo //lo de usar booleanos pero no se si a mi no me complicara mas las cosas
/*En esta parte voy a volver a declarar las funciones que me hagan falta porque como estan colocadas sabe dios como paso de lios*/ telemento aceptar_elemento();
//Empiezo el programa
cola cola_nueva() /*Funcion que inicializa la cola c sin elementos*/ {cola c; c=NULL; //Con esta funcion creas una cola nueva que apunta a null return©; }//Fin de funcion cola_nueva /*-----------------------------------------------------------------------*/
tboolean cola_vacia(cola c) //Esta funcion no modificia la cola por lo que se le pasa una copia /*Funcion que mira si la cola c esta vacia*/ {if(c==NULL) return(TRUE); else return(FALSE); }//Fin de funcion cola_vacia() /*------------------------------------------------------------------*/
tnodo * nuevo_elemento() /*Funcion que reserva memoria para un nuevo elemento*/ {tnodo *ind=(tnodo *) malloc(sizeof(tnodo)); //Esta funcion reserva un espacion de memoria para un nodo return (ind); //nuevo. despues se van a meter valores en el nodo y se va a unir a una pila }//Fin de funcion nuevo_elemento() /*---------------------------------------------------------------------*/
void encolar(cola *c, telemento t) //Se le pasa *c que es un puntero a una cola y telemento t que es la parte del nodo que contiene los datos /*Funcion que almacena el elemento t en una cola *c */ {tnodo *aux; //puntero a un tipo tnodo (puntero a un nodo de una cola)
aux=nuevo_elemento(); //Almacena el valor tipo tnodo que devuelve la funcion nuevo_elemento() en el puntero a un tnodo que se llama aux aux->datos=t; //Introduce los datos que contiene la variable tipo telemento t en la parte del nodo destinada a los datos if(cola_vacia(*c)) {*c=aux; aux->sig=aux; } else {aux->sig=(*c)->sig; (*c)->sig=aux; *c=aux; } }//Fin de funcion encolar() /*-------------------------------------------------------------------*/
telemento desencolar (cola *pcol) /*Funcion que quita un elemento de la cola *c y lo devuelve con return()*/ {tnodo *aux; telemento aux2;
aux=(*pcol)->sig; (*pcol)->sig=aux->sig; aux2=aux->datos; if(aux==*pcol) *pcol=NULL; free(aux); return(aux2); }//Fin de funcion desencolar() /*----------------------------------------------------------------*/
void meter_elemento(cola *c) /*Funcion que introduce un elemento en una cola*/ {telemento tdatos; tdatos=aceptar_elemento(); encolar(c, tdatos); }//Fin de funcion meter_elemento() /*-----------------------------------------------------------------*/
void quitar_elemento(cola *c) /*Funcion que llama a desencolar() para quitar un elemento de una cola y lo visualiza*/ {telemento vis; cola *pcol; pcol=c;
if (!cola_vacia(*c)) {vis=desencolar(pcol); fflush(stdin); printf("\nHas retornado a %s, con DNI: ", vis.nombre); fflush(stdin); printf("%ld", vis.dni); } else printf("\nLa cola ya esta vacia\n"); getch(); }//Fin de funcion quitar_elemento() /*------------------------------------------------------------------*/
void borrar_cola(cola *c) /*Funcion que libera memoria e inicializa la cola*/ {while(!cola_vacia(*c)) {quitar_elemento©; }//Fin de bucle while }//Fin de funcion borrar_cola() /*------------------------------------------------------------------*/
telemento aceptar_elemento() /*Funcion que recoge por teclado los datos del elemento*/ {telemento dat;
clrscr(); printf("\n\nIntroduce el DNI: "); scanf("%ld", &dat.dni); fflush(stdin); printf("\n\nIntroduce el nombre: "); gets(dat.nombre); return(dat); }//Fin de funcion aceptar_elemento() /*--------------------------------------------------------------------*/
void visualizar_elemento(cola c) /*Funcion que visualiza el primer elemento de una cola*/ {tnodo *aux;
aux=c->sig; clrscr(); if(!cola_vacia©) { fflush(stdin); printf("El nombre del primero es %s, ", aux->datos.nombre); fflush(stdin); printf("con DNI: %ld\n", aux->datos.dni); printf("\n"); }//fin de condicion if else printf("\nLa cola ya esta vacia"); getch();
}//Fin de funcion visualizar_elemento() /*-------------------------------------------------------------------*/
void visualizar_cola(cola c) /*Funcion que visualiza todos los elementos de una cola*/ {tnodo *aux; int sw=1;
aux=c->sig; clrscr(); if(!cola_vacia©) {do {fflush(stdin); printf("El nombre es %s, ", aux->datos.nombre); fflush(stdin); printf("con DNI: %ld\n", aux->datos.dni); printf("\n"); if(aux==c) sw=0; else aux=aux->sig; }while(sw!=0);//Fin de bucle do-while }//fin de condicion if else printf("\nLa cola ya esta vacia"); getch();
}//Fin de funcion visualizar_cola() /*-------------------------------------------------------------------*/
int aceptar () /*Funcion que acepta una opcion del menu*/ {int opc; do{ printf("\n\nSelecciona una opcion: "); scanf("%d", &opc); if (opc<1 || opc>6) printf("\nEsa opcion no existe Vuelve a intentarlo.\n"); }while(opc<1 || opc>6); return(opc); }//Fin de funcion aceptar() /*----------------------------------------------------------------*/
void eleccion (int x,cola *c) /*Funcion que llama al menu seleccionado*/ { switch(x) {case 1:meter_elemento©; break; case 2:quitar_elemento©; break; case 3:borrar_cola©; break; case 4:visualizar_cola(*c); break; case 5:visualizar_elemento(*c); } }//Fin de funcion eleccion() /*--------------------------------------------------------------------*/
void menu() /*Funcion que muestra un menu por pantalla*/ {printf(" __ \n"); printf(" ( ) ---- \n"); printf(" ¨ ¨ *-*-*-*-*-* |MENU| *-*-*-*-*-*-*-* \n"); printf(" _)\\/(_ /|* ---- *| \n"); printf(" \\\\/(*)(*)\\_/ */*| 1- Meter un elemento. |*\n"); printf(" ) ( - |/|* 2- Quitar elemento. *| \n"); printf(" ( V ) */*| 3- Borrar cola. |* \n"); printf(" \\ |/ |/|* 4- Visualizar cola. *| \n"); printf(" )| */*| 5- Visualizar 1§ elemento. |* \n"); printf(" (| |/|* 6- Salir. *| \n"); printf(" |/|| |* \n"); printf(" */*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-* \n"); printf(" |////////////////////////////////// \n"); printf(" *-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-* \n"); }//Fin de funcion menu() /*------------------------------------------------------------------*/
void main () /*Funcion principal main*/ {int opc; cola c=cola_nueva(); textbackground(11+14); textcolor(14);
do{ clrscr(); menu(); opc=aceptar(); eleccion(opc, &c); }while(opc!=6);//Fin de bucle do-while printf("\nHas seleccionado salir, pulsa un boton."); getch(); }//Fin de funcion main()
|
ya se que es muy grande pero bueno, ehcarle un vistazo.... ya ni me acordaba.....
Tengo uno hecho que calcula si una fecha que se le introduce es correcta o no teniendo en cuenta si el año es bisiesto. A ver si conseguis hacerlo
Yo voy a seguir practicando Java que falta me hace
Suerte
PD: Esta hecho asi porque no nos dejaban utilizar funciones(No se por que...).