Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
1 2 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Retos, Propongo que se haga uno

OtroElBrujo
post Apr 6 2005, 02:06 PM
Publicado: #16


Miembro Avanzado
***

Grupo: Members
Mensajes: 91
Registrado: 31-January 05
Miembro nº: 72.241



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 biggrin.gif 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 thumbsup.gif
Yo voy a seguir practicando Java que falta me hace wacko.gif

Suerte

PD: Esta hecho asi porque no nos dejaban utilizar funciones(No se por que...).





User is offlineProfile CardPM
Go to the top of the page
+Quote Post

 
1 2
Closed TopicTopic OptionsStart new topic

Collapse

> Topicos similares

Retos Dimension-X 6.051 137 Sep 30 2005, 04:48 PM
By: Nicelan
Acerca de los retos ARCANGEL D&D 512 6 Apr 21 2005, 03:32 AM
By: andresz
retos(como beo que serraron el otro ps abri uno ... edegardo_loco 687 1 Mar 10 2005, 12:03 PM
By: Dimension-X

Google
Web www.trucoswindows.net