Tutorial creado por Quasi / Javier Fernández Rivera                                          http://ircorion.net | javier@...
#include <stdio.h>struct {                            //creamos estructurachar name[50];char perso[50];char tipo[50];}anim...
case 2:{addanimal(2);break;}   case 3:{searchani();break;}   case 4:{seefiles(1);break;}   case 5:{seefiles(2);break;}   c...
openclosef("c+",0);     break;    }   else{printf("nFin de la busqueda");getch();return;}  } }getch();openclosef("c+",0);}...
}void cheklogin(int *password){char c;int userpass;system("CLS");printf("nnnnnnnnn          Enter password: ");scanf("%d",...
cprintf("ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³"); printf("n"); cprintf("          º ¸2001 by Quasi ³ quasi@w...
Programacion en C: Juego del RATON.Descripción: Realizar un juego que se basa en un raton que seencuentra en una isla. Est...
#include <stdio.h> //libreria estandar stout-stdin#include <stdlib.h>#include "allegro.h" //libreria para modo grafico#inc...
posrx=posry=center; isla[center][center]=¾;       //estableciendo posicion central del raton seeisla();                //m...
if(num==3){ posry++; } if(isla[posrx][posry]==Û){final(1);} //raton se salva por el puente if(isla[posrx][posry]==±){final...
the_imagen y con una resolucion marcada con la paleta "the_pallete"*/ blit(the_image,screen,0,0,(SCREEN_W-the_image->w)/2,...
Programación en C: Gestión dinámica en memoria.Descripción: Realizar programas que nos muestre elfuncionamiento básico de ...
//PILAS#include <stdio.h>void menu();void addelem(int nume);void delelem();void savelefile();void getlefile();struct snum ...
cprintf("ÛÛº [] º > Buscar un elemento             º | ºÛÛ");printf("n"); cprintf("ÛÛº [] º > Mostrar pila               º...
pilasfile=fopen("pilas- file.txt","w");while(nue!=NULL){printf("nGrabando[%d]...",nue->num);fprintf(pilasfile,"n%d",nue->n...
FILE *colasfile;main () {nue=act=fin=NULL;menu();system("CLS");}void menu() {char opc;int num;do {system("CLS");  textcolo...
}while(opc!=*);}void addelem(int x){ nue=(struct snum*)malloc(sizeof(struct snum)); nue->num=x; nue->next=NULL; if(fin==NU...
printf("nObteniendo datos del fichero...n");colasfile=fopen("colas- file.txt","r");while(feof(colasfile)==0){ fscanf(colas...
cprintf("ÛÛº [2] º > Eliminar un elemento            º | ºÛÛ");printf("n"); cprintf("ÛÛº [3] º > Mostrar lista enlazada   ...
void delelem(int x) { if(act==NULL){text("La lista se encuentra vacia");return;} //no hay le if(act->num==x){             ...
int var; nue=act=ini=fin=NULL; printf("nObteniendo datos del ficheron"); lefile=fopen("le-file.txt","r");     //modo lectu...
void addelem(int x);void delelem(int x);void seelist(int x,int y);void savelefile();void getlefile();void text(char txt[10...
cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n");  gotoxy(45,22);  opc=getch(); //tratamiento de ...
while(fin->num!=x&&fin!=NULL){   if(fin==act){fin=fin->next;}   else{ini=ini->next;fin=fin->next;}  }  if(fin==NULL){text(...
}void text(char txt[100]){     //funcion para mensajes automatizados _setcursortype(0); textbackground(1);textcolor(14);pr...
Upcoming SlideShare
Loading in …5
×

Quasi - Practicas de Programacion en C

293 views
192 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
293
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Quasi - Practicas de Programacion en C

  1. 1. Tutorial creado por Quasi / Javier Fernández Rivera http://ircorion.net | javier@ircorion.net PRACTICAS DE PROGRAMACION EN CProgramacion en C: Servicio de búsqueda de animales perdidos.Descripción: Realizar un programa interactivo, que te almaceneen dos ficheros animales perdidos y encontrados, funcionandocomo base de datos. Incluir una opción que verifique aquellosanimales que encuentra en la base de datos de animales perdidos yen la base de datos de animales encontrados. Resultando pues serun animal perdido y encontrado posteriormente.Mostrar por pantalla lista de animales perdidos y luegoencontrados.Aportación especial: He realizado un algoritmo para lavalidación de passwords, a la hora de entrar al programa.Estas passwords son almacenadas en un fichero de forma binaria,asi que su lectura es imposible (método de codificación-decodificación implantado). No sería bueno, que entrara en elsistema de búsqueda de animales, un gracioso a poner suhipotético animal perdido, sin que este lo este, reduciendo lafiabilidad del programa (finalidad de password).Objetivo de la practica: Desarrollo y trabajo con ficheros.Ejecutable: animales.exeCódigo C: animales.c
  2. 2. #include <stdio.h>struct { //creamos estructurachar name[50];char perso[50];char tipo[50];}animal;FILE *fanimal,*fae,*fap;void menu();void addanimal(int x);void cleanbuffers();void searchani();void seefiles(int x);void openclosef(char c[2],int x);void getocfnull();main() {int *password;char *code[5];getpassword(password);cheklogin(password);getocfnull();menu();openclosef("c+",0);}void menu(){char opc; do { system("CLS"); printf("n[1] Introducir animal perdido"); printf("n[2] Introducir animal encontrado"); printf("n[3] Ver animales perdidos y luego encontrados"); printf("n[4] Ver animales perdidos"); printf("n[5] Ver animales encontrados"); printf("n[6] Ver resultados anteriores"); printf("n[7] Imprimir resultados"); printf("n[*] Salir del programa"); printf("nIntroduce una opci¢n "); opc=getch(); switch(opc){ case 1:{addanimal(1);break;}
  3. 3. case 2:{addanimal(2);break;} case 3:{searchani();break;} case 4:{seefiles(1);break;} case 5:{seefiles(2);break;} case 6:{seefiles(3);break;} case *:{break;} default:{clrscr();printf("nIntroduce una opci¢n valida.");getch();} } } while (opc!=*);}void addanimal(int x){cleanbuffers();if(x==1){ printf("nTipo de animal: ");gets(animal.tipo); printf("nNombre del animal: ");gets(animal.name); printf("nNombre del due¤o: ");gets(animal.perso); openclosef("w+",1); fwrite(&animal,sizeof(animal),1,fap);printf("ia lo hizo");getch(); openclosef("c",1); } if(x==2){ printf("nTipo de animal: ");gets(animal.tipo); printf("nNombre del animal: ");gets(animal.name); printf("nNombre del due¤o: ");gets(animal.perso); openclosef("w+",2); fwrite(&animal,sizeof(animal),1,fae); openclosef("c",2); }}void searchani() {char strani1[50],strani2[50];printf("nProcesando busqueda...");openclosef("r",1);openclosef("r",2);openclosef("w",3);clrscr();while(feof(fap)==0){ rewind(fae); strcpy(strani1,"NULL");strcpy(strani2,strani1); if(fread(&animal,sizeof(animal),1,fap)){strcpy(strani1,animal.name);} while(feof(fae)==0){ if(fread(&animal,sizeof(animal),1,fae)){strcpy(strani2,animal.name);} if((strcmp(strani1,strani2)==0)&&(strcmp(strani1,"NULL")!=0)){ printf("nAnimal: %s ~ Nombre: %s ~ Amo:%s",animal.tipo,animal.name,animal.perso); fprintf(fanimal,"nAnimal: %s ~ Nombre: %s ~ Amo:%s",animal.tipo,animal.name,animal.perso);
  4. 4. openclosef("c+",0); break; } else{printf("nFin de la busqueda");getch();return;} } }getch();openclosef("c+",0);}void cleanbuffers(){fflush(stdin);fflush(stdout);}void seefiles(int x){ char strfileread[15]; if(x==1){strcpy(strfileread,"a-p.txt");} if(x==2){strcpy(strfileread,"a-e.txt");} if(x==3){system("more a-r.txt");printf("nFin del listado");getch();return;} fanimal=fopen(strfileread,"r"); while(feof(fanimal)==0) { if(fread(&animal,sizeof(animal),1,fanimal)){printf("nAnimal: %s ~ Nombre: %s ~Amo: %s",animal.tipo,animal.name,animal.perso);} } printf("nFin del listado"); openclosef("c",3); getch();}void openclosef(char c[2],int x){ char opc[2]; if(strcmp(c,"r")==0){strcpy(opc,"r");} if(strcmp(c,"w+")==0){strcpy(opc,"w+");} if(strcmp(c,"w")==0){strcpy(opc,"w");} if(strcmp(c,"c")==0){printf("aquinta el error");getch();strcpy(opc,"c");} if(strcmp(c,"c+")==0){fclose(fap);fclose(fae);fclose(fanimal);return;} if(x==1){printf("dentro fap %s",opc);fap=fopen("a-p.txt",opc);} if(x==2){fae=fopen("a-e.txt",opc);} if(x==3){fanimal=fopen("a-r.txt",opc);}}void getocfnull(){ openclosef("r",1);openclosef("r",2);openclosef("r",3); if (fap==NULL||fae==NULL||fanimal==NULL){ printf("nAlgun fichero no existe en su directorio."); printf("nPresione una tecla para crearlo y continuar con el programa"); openclosef("w",1); openclosef("w",2); openclosef("w",3); } openclosef("c+",0); getch();
  5. 5. }void cheklogin(int *password){char c;int userpass;system("CLS");printf("nnnnnnnnn Enter password: ");scanf("%d",&userpass);textbackground(0);textcolor(4);if(*password!=userpass){system("CLS");printf("nn");cprintf(" User_Password invalido");printf("nnnnnnnnn");exit(0);}void getpassword(int *password){int num; ftienda=fopen("password.$cb","rb"); if(ftienda==NULL){printf("nERROR al abrir el fichero");} num=getw(ftienda); *password=num; fclose(ftienda);}void setpassword() {int num;system("CLS");ftienda=fopen("password.$cb","wb"); if(ftienda==NULL){printf("nERROR al abrir el fichero");} printf("nDebe ser un numero entero"); printf("nNo debe empezar por ceron"); printf("nIntroduce la nueva password: "); scanf("%d",&num); putw(num,ftienda); fclose(ftienda);}void final() { char c; clrscr(); _setcursortype(0); textcolor(11); printf("nnnnnnnn"); cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ");printf("n"); cprintf(" ÉÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻÿ "); printf("n"); cprintf(" º ²²²±±±°°° juego de los dados °°°±±±²²² º³³ "); printf("n");
  6. 6. cprintf("ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³"); printf("n"); cprintf(" º ¸2001 by Quasi ³ quasi@wanadoo.es º³³ "); printf("n"); cprintf(" º www.ircorion.cjb.net ³ inet@wanadoo.es º³³ "); printf("n"); cprintf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÁÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÁÙ "); printf("nnnnnn"); system("CLS"); _setcursortype(2);getch(); exit(0);}
  7. 7. Programacion en C: Juego del RATON.Descripción: Realizar un juego que se basa en un raton que seencuentra en una isla. Esta isla esta rodeada de agua, y solo posedos puentes. Al raton puede sucederle 3 cosas: 1. Que se muera de hambre 2. Que se salve por el puente 3. Que se ahogueLos movimientos del ratón serán generados aleatoriamente, aligual que los posicionamientos de los dos puentes que debe haber.La isla por lo general será de un tamaño prefijado por el usuario.Aportación especial: Muestreo por pantalla de imágenes.Mediante el algoritmo usado se cargan y leen en buffers imágenesen formato PCX y BMP.Para ello me he servido de una librería especializada en larealización de graficos y juegos para C, especial para elcompilador DJGPP (allegro.h), los ejemplos que aporta la propialibrería me han servido de mucha ayuda.Objetivo de la practica: Tratamiento de arrays o matricesbidimensionales.Ejecutable: raton.exeCódigo C: raton.c
  8. 8. #include <stdio.h> //libreria estandar stout-stdin#include <stdlib.h>#include "allegro.h" //libreria para modo grafico#include <dos.h>void play(); //juegovoid cleanisla(); //limpia los caracteres grabados en islavoid addp(); //algoritmo para a¤adir puentesvoid movie(int x); //funcion de posicionamiento del ratonvoid seeisla(); //visualiza/muestra por stdout la islavoid final(int x); //declara el tipo de final de juegovoid verimgraton(int w); //muestra por stdout imgsint securep2(int x, int y); //algoritmo declarativo de un puentevoid about(); //creditos, about...char isla[21][21]; //mapa de islaint islaf,islac; //dimensiones de islaint posrx,posry; //posiciones del ratonint nmovie; //numero de movimientos antes de morir de hambremain () { //funcion principalplay(); //comenzando el juego}void play(){ int x,y,p1,p2,center,pos,nmovie2; //declarando var necesarias cleanisla(); //eliminando caracteres de isla for(x=0;x<=3;x++){verimgraton(x);} //imgs load-game verimgraton(4); do { printf("nDimensi¢n de la isla (10,15,20)?: "); //estableciendo dimensiones scanf("%d",&islac); printf("nMovimientos del raton (20, 40, 80)?: "); scanf("%d",&nmovie); }while(islac>20||islac<5||nmovie<1); //anti manos largas ;) islaf=(islac+(islac/2)); for(x=0;x<=islac;x++){isla[0][x]=±;} //rellenando isla for(x=0;x<=islac;x++){isla[islac][x]=±;} for(x=0;x<=islac;x++){isla[x][0]=±;} for(x=0;x<=islac;x++){isla[x][islac]=±;} center=islac/2;
  9. 9. posrx=posry=center; isla[center][center]=¾; //estableciendo posicion central del raton seeisla(); //mostrando isla _setcursortype(0); addp(); //a¤adiendo puentes printf("nIsla generada"); printf("nDurante el transcurso del juego no pulse niguna telca."); printf("nPresione una tecla para comenzar...");getch(); for(x=nmovie;x>0;x--){movie(x);} //realizando movimientos clrscr(); final(3); //raton murio de hambre, finalizando...}void cleanisla() { int x,y; for(x=0;x<=20;x++){ //recorriendo isla y eliminando caracteres printf("n"); for(y=0;y<=20;y++){isla[x][y]= ;} }}void addp() { int p0,p,x,y; for(y=0;y<=1;y++){ //hacer numero de puentes... x=1; while(x!=0){ //mientras no sean generados... srandom(time(1)); //semilla temporal _aleatoriedad p0=random()%4; //decidiendo lado para puente p=random()%islac; //decidiendo casilla para puente if((p0==0)&&(securep2(0,p)!=1)){isla[0][p]=Û;x--;} //viendo si ia hay if((p0==1)&&(securep2(islac,p)!=1)){isla[islac][p]=Û;x--;} if((p0==2)&&(securep2(p,0)!=1)){isla[p][0]=Û;x--;} if((p0==3)&&(securep2(p,islaf)!=1)){isla[p][islac]=Û;x--;} } }}int securep2(int x, int y){ if (isla[x][y]==Û){return 1;} //examinando si ya existe puente else {return 0;}}void movie(int x){ int num; srandom(time(0)); num=random()%4; //deciendo direccion de movimiento isla[posrx][posry]= ; if(num==0){ posrx--; } //realizando movimientos... if(num==1){ posrx++; } if(num==2){ posry--; }
  10. 10. if(num==3){ posry++; } if(isla[posrx][posry]==Û){final(1);} //raton se salva por el puente if(isla[posrx][posry]==±){final(2);} //raton muere ahogado isla[posrx][posry]=¾; //estableciendo posicion del raton clrscr(); textcolor(11);cprintf("Muerte por hambre: [%d]",x); textcolor(4);if (x<10){cprintf(" > FAME: ¤an-¤an, me vo a morir....");}printf("n"); textcolor(11);cprintf("Posicion en isla: [%d]-[%d]",posrx,posry);printf("n"); textcolor(14); seeisla(); //visualizando isla delay(200); //retardo, (100miliS) interactividad}void seeisla(){ int x,y; //recorriendo array para ver isla for(x=0;x<=20;x++) { printf("n"); for(y=0;y<=20;y++){ printf("%c",isla[x][y]); } }}void final(int x){ clrscr(); //declarando tipo de final textcolor(4); printf("nnnnnnnnn"); if(x==1){cprintf(" >El raton se ha salvado");getch();;verimgraton(6);} if(x==2){cprintf(" >Que el raton se ta glu- glu-glu");getch();verimgraton(5);} if(x==3){cprintf(" >El raton la palmo porfame");getch();verimgraton(5);} about(); exit(0);}void verimgraton(int w){ BITMAP *the_image; //declarando puntero de tipo imagenBIT PALLETE the_pallete; //declarando paleta de color disponible if(w==0){the_image=load_bitmap("imgs/raton1.bmp",the_pallete);} //leyendo if(w==1){the_image=load_bitmap("imgs/raton2.bmp",the_pallete);} //cargando if(w==2){the_image=load_bitmap("imgs/raton3.bmp",the_pallete);} //fichero if(w==3){the_image=load_bitmap("imgs/raton4.bmp",the_pallete);} //de imagen if(w==4){the_image=load_bitmap("imgs/logoraton.pcx",the_pallete);} if(w==5){the_image=load_bitmap("imgs/raton-1.pcx",the_pallete);} if(w==6){the_image=load_bitmap("imgs/raton0.pcx",the_pallete);} install_keyboard(); set_gfx_mode(GFX_VGA,320,200,0,0); //cargando modo grafico en GFX_VGA set_pallete(the_pallete); //seleccionando paleta para img bit /*blit muestra por pantalla en posicion w y h la img cargada con el puntero
  11. 11. the_imagen y con una resolucion marcada con la paleta "the_pallete"*/ blit(the_image,screen,0,0,(SCREEN_W-the_image->w)/2,(SCREEN_H-the_image->h)/2,the_image->w,the_image->h); destroy_bitmap(the_image); //liberando buffers destruyendo vars y punteros readkey(); //img estatica hasta pulsar una tecla... allegro_exit(); //cerrando modo en funcion de allegro}void about() { char c; clrscr(); _setcursortype(0); //haciendo desaparecer el cursor textcolor(11); //cambiando modo texto el color printf("nnnnnnnn"); cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ");printf("n"); cprintf(" ÉÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻÿ "); printf("n"); cprintf(" º ²²²±±±°°° RaToN Game by Quasi °°°±±±²²² º³³ "); printf("n"); cprintf("ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³"); printf("n"); cprintf(" º ¸2001 by Quasi ³ quasi@wanadoo.es º³³ "); printf("n"); cprintf(" º www.ircorion.cjb.net ³ inet@wanadoo.es º³³ "); printf("n"); cprintf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÁÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÁÙ "); printf("nnnnnn"); c=getchar(); c=getchar(); system("CLS"); _setcursortype(2); //volviendo a reparecer el cursor exit(0); //facilitando salida sin error}
  12. 12. Programación en C: Gestión dinámica en memoria.Descripción: Realizar programas que nos muestre elfuncionamiento básico de las principales técnicas de gestióndinámica de memoria: Pilas, listas enlazadas, listas doblementeenlazadas.Aportación especial: 1. He realizado un menú bat, para que sea mas llevadera la navegación por los programas relacionados con los métodos de gestión dinámica de memoria 2. Además, he programado el apartado correspondiente a las colas. 3. En las listas enlazadas y doblemente enlazadas he implementado un método de mensajes automatizados que simplifican mucho el código y mejora la presentación por pantalla.Objetivo de la practica: Tratamiento y desarrollo de lametodología de programación para la gestión dinámica dememoriaEjecutable: menu.batCódigo C: *.c
  13. 13. //PILAS#include <stdio.h>void menu();void addelem(int nume);void delelem();void savelefile();void getlefile();struct snum {int num;struct snum *back;}*nue,*act;FILE *pilasfile;main () {nue=act=NULL;menu();system("CLS");_setcursortype(1);}void menu() {char opc;int nume;do {system("CLS");_setcursortype(1); //cambiando el tipo de cursor textcolor(1); //cambiando color en letra textbackground(7); //cambiando color de fondo letra gotoxy(0,10); //posicionando cursorcprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ0ÍXÍ»ÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº --> Pilas ºÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("n");
  14. 14. cprintf("ÛÛº [] º > Buscar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [] º > Mostrar pila º | ºÛÛ");printf("n"); cprintf("ÛÛº [5] º > Almacenar pila en file º | ºÛÛ");printf("n"); cprintf("ÛÛº [6] º > Recuperar pila del file º | ºÛÛ");printf("n"); cprintf("ÛÛº º º ºÛÛ");printf("n"); cprintf("ÛÛº [*] º >> Salir del programa º | ºÛÛ");printf("n"); cprintf("ÛÛÈÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛº Introduce una opci¢n...[ ] ºÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ");printf("n");cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); gotoxy(45,22); opc=getch(); //tratamiento de opciones posiblesswitch (opc) {case 1:{system("CLS");printf("nNumero a introducir:");scanf("%d",&nume);addelem(nume);break;}case 2:{system("CLS");delelem();break;}case 3:{break;}case 4:{break;}case 5:{system("CLS");savelefile();break;}case 6:{system("CLS");getlefile();break;}case *:{break;}default:{system("CLS");printf("nIntroduce una opci¢n valida");getch();}}}while(opc!=*);}void addelem(int nume){ nue=(struct snum*)malloc(sizeof(struct snum)); nue->num=nume; if(act==NULL){nue->back=NULL;act=nue;} else { nue->back=act; act=nue; }}void delelem() { if(act==NULL){return;} nue=act; printf("nEliminado elemento [%d]",nue->num); act=act->back; getch(); free(nue);}void savelefile(){nue=act;
  15. 15. pilasfile=fopen("pilas- file.txt","w");while(nue!=NULL){printf("nGrabando[%d]...",nue->num);fprintf(pilasfile,"n%d",nue->num);sleep(1);nue=nue->back;}printf("nFin de grabado en fichero");fclose(pilasfile);getch();}void getlefile() { int numef=1,x=0,y=0,var,*listnum; nue=act=NULL; printf("nObteniendo datos del fichero...n"); pilasfile=fopen("pilas- file.txt","r"); while(feof(pilasfile)==0){fscanf(pilasfile,"%d",&var);numef++;} listnum=(int*)malloc(numef*sizeof(int)); rewind(pilasfile);x=numef; while(feof(pilasfile)==0){ x--; fscanf(pilasfile,"%d",(listnum+x)); printf("n>>%d",*(listnum+x)); } for(y=1;y<numef;y++){addelem(*(listnum+y));} getch(); return; addelem(var); fclose(pilasfile); getch();}//COLAS#include <stdio.h>void menu();void addelem(int x);void delelem();void seelist(int x,int y);void savelefile();void getlefile();struct snum {int num;struct snum *next;}*nue,*act,*fin;
  16. 16. FILE *colasfile;main () {nue=act=fin=NULL;menu();system("CLS");}void menu() {char opc;int num;do {system("CLS"); textcolor(1); //cambiando color en letra textbackground(7); //cambiando color de fondo letra gotoxy(0,10); //posicionando cursorcprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ0ÍXÍ»ÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº --> Colas ºÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [3] º > Buscar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [4] º > Mostrar cola º | ºÛÛ");printf("n"); cprintf("ÛÛº [5] º > Almacenar cola en file º | ºÛÛ");printf("n"); cprintf("ÛÛº [6] º > Recuperar cola del file º | ºÛÛ");printf("n"); cprintf("ÛÛº º º ºÛÛ");printf("n"); cprintf("ÛÛº [*] º >> Salir del programa º | ºÛÛ");printf("n"); cprintf("ÛÛÈÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛº Introduce una opci¢n...[ ] ºÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ");printf("n");cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); gotoxy(45,22); opc=getch(); //tratamiento de opciones posiblesswitch (opc) {case 1:{system("CLS");printf("nNumero a introducir:");scanf("%d",&num);addelem(num);break;}case 2:{system("CLS");delelem();break;}case 3:{system("CLS");printf("nNumero a buscar:");scanf("%d",&num);seelist(1,num);break;}case 4:{system("CLS");seelist(0,0);break;}case 5:{system("CLS");savelefile();break;}case 6:{system("CLS");getlefile();break;}case *:{break;}default:{system("CLS");printf("nIntroduce una opci¢ n valida");getch();}}
  17. 17. }while(opc!=*);}void addelem(int x){ nue=(struct snum*)malloc(sizeof(struct snum)); nue->num=x; nue->next=NULL; if(fin==NULL){fin=act=nue;} else{fin->next=nue;fin=nue;}}void delelem() { if(act==NULL){return;} nue=act; act=act->next; free(nue);}void seelist(int x,int y){int result=0;nue=act;while (nue!=NULL){ if(x==0){printf("nNumero:[%d]",nue->num);} if(x==1&&nue->num==y){result=nue->num;break;} nue=nue->next;}if(x==1){if(result>0){printf("nNumero encontrado: [%d]",result);}else{printf("nNumero no encontrado");}}getch();}void savelefile(){nue=act;colasfile=fopen("colas- file.txt","w");while(nue!=NULL){printf("nGrabando[%d]...",nue->num);fprintf(colasfile,"n%d",nue->num);sleep(1);nue=nue->next;}printf("nFin de grabado en fichero");fclose(colasfile);getch();}void getlefile() {int var;
  18. 18. printf("nObteniendo datos del fichero...n");colasfile=fopen("colas- file.txt","r");while(feof(colasfile)==0){ fscanf(colasfile,"%d",&var); printf("nNumero: %d",var); } fclose(colasfile); getch();}//LISTAS ENLAZADAS#include <stdio.h>void menu(); //menu de opcionesvoid addelem(int x); //a¤ade elementos en levoid delelem(int x); //elimina elementosvoid seelist(int x,int y); //visualizando o buscando elemto/svoid savelefile(); //grabando en ficherovoid getlefile(); //recuperando del ficherovoid text(char txt[100]); //mensajes interactivos internosvoid final(); //creditos, about, ...struct snum { int num; //reservando espacio para numero entero struct snum *next; //creando puntero (flecha)}*nue,*act,*ini,*fin; //creando punteros a usar en leFILE *lefile; //puntero para gestion de filesmain () { //funcion principal nue=act=ini=fin=NULL; //punteros a null para evitar errores menu(); //llamando al menu de opciones final(); //finalizando con about...}void menu() { char opc; int num; do { system("CLS"); _setcursortype(1); //cambiando el tipo de cursor textcolor(1); //cambiando color en letra textbackground(7); //cambiando color de fondo letra gotoxy(0,10); //posicionando cursorcprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ0ÍXÍ»ÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº --> Listas enlazadas ºÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("n");
  19. 19. cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [3] º > Mostrar lista enlazada º | ºÛÛ");printf("n"); cprintf("ÛÛº [4] º > Buscar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [5] º > Almacenar lista en file º | ºÛÛ");printf("n"); cprintf("ÛÛº [6] º > Recuperar lista del file º | ºÛÛ");printf("n"); cprintf("ÛÛº º º ºÛÛ");printf("n"); cprintf("ÛÛº [*] º >> Salir del programa º | ºÛÛ");printf("n"); cprintf("ÛÛÈÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛº Introduce una opci¢n...[ ] ºÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ");printf("n");cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); gotoxy(45,22); opc=getch(); //tratamiento de opciones posibles switch (opc) { case 1:{system("CLS");printf("nNumero a introducir:");scanf("%d",&num);addelem(num);break;} case 2:{system("CLS");printf("nNumero a eliminar:");scanf("%d",&num);delelem(num);break;} case 4:{system("CLS");printf("nNumero a buscar:");scanf("%d",&num);seelist(1,num);break;} case 3:{system("CLS");seelist(0,0);break;} case 5:{system("CLS");savelefile();break;} case 6:{system("CLS");getlefile();break;} case *:{break;} default:{system("CLS");printf("nIntroduce una opci¢n valida");getch();} } }while(opc!=*);}void addelem(int x){ nue=(struct snum*)malloc(sizeof(struct snum)); //creamos espacio predefinido nue->num=x; //le metemos el numero nue->next=NULL; //que apunte a null if (act==NULL) {act=nue;} //lista vacia, pon num el primero else { if(nue->num<=act->num){nue->next=act;act=nue;} //si es menor poner antes else{ //si es mayor recorrer ini=fin=act; //algoritmo de recorrido secuencial while(nue->num>fin->num&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } ini->next=nue; nue->next=fin; } } text("Elemento a¤adido...");}
  20. 20. void delelem(int x) { if(act==NULL){text("La lista se encuentra vacia");return;} //no hay le if(act->num==x){ //si es el elemento 1, eliminalo ini=act; act=act->next; free(ini); } else { //si- no recorre y elimina ini=fin=act; while(fin->num!=x&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } if(fin==NULL){text("No se ha encontrado el elemento");return;}//no hubo num ini->next=fin->next; free(fin); } text("Elemento eliminado");}void seelist(int x,int y){ //funcion que lista o busca en funcion de argumento int result=0; nue=act; while (nue!=NULL){ //recorriendo le if(x==0){printf("nNumero:[%d]",nue->num);result=1;} //listando elementos if(x==1&&nue->num==y){printf("Numero encontrado: [%d]",nue->num);result=1;break;} nue=nue->next ; } if(result==0){text("Numero no encontrado");} text("Fin del listado");}void savelefile(){ nue=act; lefile=fopen("le-file.txt","w"); //abriendo file para kribir while(nue!=NULL){ printf("nGrabando[%d]...",nue->num); fprintf(lefile,"n%d",nue->num); //escribiendo en file sleep(1); //retardo de un seg nue=nue->next; } text("Grabaci¢n en fichero finalizada"); fclose(lefile);}void getlefile() {
  21. 21. int var; nue=act=ini=fin=NULL; printf("nObteniendo datos del ficheron"); lefile=fopen("le-file.txt","r"); //modo lectura while(feof(lefile)==0){ fscanf(lefile,"%d",&var); //obteniendo datos printf("n>>> Numero: %d",var); addelem(var); //re- insertandolos en le } fclose(lefile); text("Fin de lectura del fichero");}void text(char txt[100]){ //funcion para mensajes automatizados _setcursortype(0); textbackground(1);textcolor(14);printf("n"); cprintf(" MSG: >>> %50s ",txt);getch(); _setcursortype(2);}void final() { //funcion credit, about... system("CLS"); _setcursortype(0); textbackground(0); textcolor(11); printf("nnnnnnnn"); cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ");printf("n"); cprintf(" ÉÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻÿ "); printf("n"); cprintf(" º ²²²±±±°°° Listas enlazadas °°°±±±²²² º³³ "); printf("n"); cprintf("ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³"); printf("n"); cprintf(" º ¸2001 by Quasi ³ quasi@wanadoo.es º³³ "); printf("n"); cprintf(" º www.ircorion.cjb.net ³ inet@wanadoo.es º³³ "); printf("n"); cprintf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÁÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÁÙ "); printf("nnnnnn"); _setcursortype(0); sleep(2); system("CLS"); _setcursortype(2); exit(0);}//LISTAS DOBLEMENTE ENLAZADAS#include <stdio.h>void menu();
  22. 22. void addelem(int x);void delelem(int x);void seelist(int x,int y);void savelefile();void getlefile();void text(char txt[100]); //mensajes interactivos internosvoid final();struct snum {int num;struct snum *next;struct snum *back;}*nue,*act,*ini,*fin;FILE *l2efile;main () {nue=act=ini=fin=NULL;menu();final();}void menu() {char opc;int num;do {system("CLS");_setcursortype(1); //cambiando el tipo de cursor textcolor(1); //cambiando color en letra textbackground(7); //cambiando color de fondo letra gotoxy(0,10); //posicionando cursorcprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ0ÍXÍ»ÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº --> Listas DOBLEMENTE enlazadas ºÛÛÛÛÛÛÛÛ");printf("n"); cprintf("ÛÛº ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÎÍÍÍÍÍ»ÛÛ");printf("n"); cprintf("ÛÛº [1] º > Introducir un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [2] º > Eliminar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [3] º > Mostrar lista enlazada º | ºÛÛ");printf("n"); cprintf("ÛÛº [4] º > Buscar un elemento º | ºÛÛ");printf("n"); cprintf("ÛÛº [5] º > Almacenar lista en file º | ºÛÛ");printf("n"); cprintf("ÛÛº [6] º > Recuperar lista del file º | ºÛÛ");printf("n"); cprintf("ÛÛº º º ºÛÛ");printf("n"); cprintf("ÛÛº [*] º >> Salir del programa º | ºÛÛ");printf("n"); cprintf("ÛÛÈÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍ͹ÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛº Introduce una opci¢n...[ ] ºÛÛ");printf("n"); cprintf("ÛÛÛÛÛÛÛÛÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼÛÛ");printf("n");
  23. 23. cprintf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ");printf("n"); gotoxy(45,22); opc=getch(); //tratamiento de opciones posiblesswitch (opc) {case 1:{system("CLS");printf("nNumero a introducir:");scanf("%d",&num);addelem(num);break;}case 2:{system("CLS");printf("nNumero a eliminar:");scanf("%d",&num);delelem(num);break;}case 3:{system("CLS");printf("nNumero a buscar:");scanf("%d",&num);seelist(1,num);break;}case 4:{system("CLS");seelist(0,0);break;}case 5:{system("CLS");save lefile();break;}case 6:{system("CLS");getlefile();break;}case *:{break;}default:{system("CLS");printf("nIntroduce una opci¢n valida");getch();}}}while(opc!=*);}void addelem(int x){nue=(struct snum*)malloc(sizeof(struct snum));nue->num=x;nue->next=NULL; nue->back=NULL;if (act==NULL) {act=nue;}else {if(nue->num<act->num){nue->next=act;act=nue;act->back=NULL;}else{ini=fin=act;while(nue->num>fin->num&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } ini->next=nue;nue->back=ini; nue->next=fin;fin->back=nue; }} text("Elemento a¤adido...");}void delelem(int x) {if(act==NULL){text("La lista se encuentra vacia");return;}if(act->num==x){ini=act;act=act->next;act->back=NULL;free(ini);}else {ini=fin=act;
  24. 24. while(fin->num!=x&&fin!=NULL){ if(fin==act){fin=fin->next;} else{ini=ini->next;fin=fin->next;} } if(fin==NULL){text("No se ha encontrado el elemento");return;} ini->next=fin->next; free(fin); }text("Elemento eliminado");}void seelist(int x,int y){ //funcion que lista o busca en funcion de argumento int result=0; nue=act; while (nue!=NULL){ //recorriendo le if(x==0){printf("nNumero:[%d]",nue->num);result=1;} //listando elementos if(x==1&&nue->num==y){printf("Numero encontrado: [%d]",nue->num);result=1;break;} nue=nue->next; } if(result==0){text("Numero no encontrado");} text("Fin del listado");}void savelefile(){nue=act;l2efile=fopen("l2e-file.txt","w");while(nue!=NULL){printf("nGrabando[%d]...",nue->num);fprintf(l2efile,"n%d",nue->num);sleep(1);nue=nue->next;}text("Grabaci¢n en fichero finalizada");fclose(l2efile);}void getlefile() {int var;nue=act=ini=fin=NULL;printf("nObteniendo datos del fichero...n");l2efile=fopen("l2e-file.txt","r");while(feof(l2efile)==0){ fscanf(l2efile,"%d",&var); addelem(var); printf("n>>>Numero: %d",var); } fclose(l2efile); text("Fin de lectura del fichero");
  25. 25. }void text(char txt[100]){ //funcion para mensajes automatizados _setcursortype(0); textbackground(1);textcolor(14);printf("n"); cprintf(" MSG: >>> %50s ",txt);getch(); _setcursortype(2);}void final() { //funcion credit, about... system("CLS"); _setcursortype(0); textbackground(0); textcolor(11); printf("nnnnnnnn"); cprintf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ");printf("n"); cprintf(" ÉÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͻÿ "); printf("n"); cprintf(" º ²²²±±±°°° Listas enlazadas °°°±±±²²² º³³ "); printf("n"); cprintf("ÌÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĹ³³"); printf("n"); cprintf(" º ¸2001 by Quasi ³ quasi@wanadoo.es º³³ "); printf("n"); cprintf(" º www.ircorion.cjb.net ³ inet@wanadoo.es º³³ "); printf("n"); cprintf(" ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÁÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÁÙ "); printf("nnnnnn"); _setcursortype(0); sleep(2); system("CLS"); _setcursortype(2); exit(0);}

×