Título: [ayuda] programa en C
Publicado por: anunnaki en 2 Marzo 2012, 12:04 pm
Buenas a tod@s, estoy en un curso de aplicaciones informáticas y han pedido un proyecto de un reproductor en C realmente lo que tiene que hacer el reproductor es añadir, Nombre, Titulo, Genero, Duració, el problema es que he faltado varios días por motivos personales y no se realizar muy bien el tad, yo he hecho un pequeño programa sobre el reproductor muy sucio y casi todo printf, si me pueden dar una ayuda o base o manual para los tad lo agradezco // La mitad del codigo es de mi profesor que no lo da como una base. Codigo : 92-ma-heredia-tad-lista.c #include "92-ma-heredia-tad-lista.h" #include <stdio.h> #include <stdlib.h>
Lista listaNew(){ Lista lista; lista= (Lista) malloc( sizeof( struct nodoStruct ) ); if ( lista == NULL ) return NULL; lista->siguiente= NULL; return ( lista ); } int listaVacia(Lista lista){ return ( lista->siguiente == NULL ); } int listaInsertarPrimero(Lista lista, Dato dato){ Nodo nodoNuevo; nodoNuevo= (Nodo) malloc( sizeof( struct nodoStruct ) ); if ( nodoNuevo == NULL ) return 1; nodoNuevo->dato= dato; nodoNuevo->siguiente= lista->siguiente; lista->siguiente= nodoNuevo; return 0; } int listaSuprimirPrimero(Lista lista){ Nodo nodoAux; if ( listaVacia(lista) ) return 1; nodoAux= lista->siguiente; lista->siguiente= nodoAux->siguiente; free(nodoAux); return 0; } Dato listaObtenerValorPrimero(Lista lista){ Dato datoAux; if ( listaVacia(lista) ) return ( datoAux ); //critico return ( lista->siguiente->dato ); } int listaDestroy(Lista lista){ while ( !listaVacia(lista) ) listaSuprimirPrimero(lista); free(lista); return 0; } int listaMostrar(Lista lista){ Nodo nodo; nodo= lista->siguiente; while (nodo!= NULL){ printf(" %d ",nodo->dato); nodo= nodo->siguiente; }
//critico return 0; }
int listaInsertarUltimo(Lista lista, Dato dato){ Nodo nodoAux; Nodo nodoNuevo; nodoAux= lista; while (nodoAux->siguiente != NULL) nodoAux= nodoAux->siguiente; nodoNuevo= (Nodo) malloc( sizeof( struct nodoStruct ) ); if ( nodoNuevo == NULL ) return 1; nodoNuevo->dato= dato; nodoNuevo->siguiente= NULL; nodoAux->siguiente= nodoNuevo; return 0; } int listaSuprimirUltimo(Lista lista){ Nodo nodoAux; if (listaVacia( lista )) return 1; nodoAux= lista; while (nodoAux->siguiente->siguiente!= NULL) nodoAux= nodoAux->siguiente; free(nodoAux->siguiente); nodoAux->siguiente= NULL; return 0; } Dato listaObtenerValorUltimo(Lista lista){ Dato datoAux; Nodo nodoAux; if ( listaVacia(lista) ) return ( datoAux ); //critico nodoAux= lista; while (nodoAux->siguiente != NULL) nodoAux= nodoAux->siguiente; return ( nodoAux->dato ); }
codigo : 92-ma-heredia-tad-lista.h
[code]#ifndef MA_HEREDIA_92_TAD_LISTA_H #define MA_HEREDIA_92_TAD_LISTA_H 1 typedef int *Dato;
struct nodoStruct{ Dato dato; struct nodoStruct *siguiente; };
typedef struct nodoStruct *Nodo; typedef struct nodoStruct *Lista;
Lista listaNew(); int listaInsertarPrimero(Lista lista, Dato dato); int listaSuprimirPrimero(Lista lista); int listaVacia(Lista lista); Dato listaObtenerValorPrimero(Lista lista); int listaMostrar(Lista lista); int listaDestroy(Lista lista); int listaInsertarUltimo(Lista lista, Dato dato); int listaSuprimirUltimo(Lista lista); Dato listaObtenerValorUltimo(Lista lista); int listaIncluye(Lista lista, Dato dato); int listaDeCanciones(Lista lista);
#endif
int listaIncluye(Lista lista, Dato dato){ Nodo nodoAux; if (listaVacia( lista )) return 0; nodoAux= lista; while ( (nodoAux->siguiente != NULL) && (nodoAux->siguiente->dato != dato) ) nodoAux= nodoAux->siguiente; return ( !(nodoAux->siguiente == NULL) );
}
Codigo : 92-ma-heredia-tad-lista-test.c #include "92-ma-heredia-tad-lista.h" #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h>
int reproductor(Lista lista,Dato contador); int Tracklist(Lista lista); int menu(Lista lista,Dato contador); int cargando(Lista lista);
int main(){
Lista lis; int contador; Dato contadores; contadores=&contador; system("clear"); cargando(lis);
for (;;){ system("clear"); for (contador=0;contador==contador;){ lis=listaNew(); reproductor(lis, contadores); Tracklist(lis); listaDeCanciones(lis); contador++; menu(lis, contadores);
}
}
return 0; }
int listaDeCanciones(Lista lista){ int num; do{ printf("\n\t\tEscribe el tema deseado a escuchar : "); scanf("%d",&num); printf("\n\n\t\tEl tema selecionado es : "); switch (num){ case 1 : printf("1.Limosna De Amor\n"); break; case 2 : printf("2.Adios, Adios\n"); break; case 3 : printf("3.Vacaciones\n"); break; case 4 : printf("4.Enfermo De Amor\n"); break; case 5 : printf("5.Que Bonita Eres\n"); break; case 6 : printf ("6.La Paya\n"); break; case 7 : printf ("7.Sin Ti No Puedo Estar\n"); break; case 8 : printf ("8.Ven Por Favor\n"); break;
default : printf("No existe la cancion inserte de nuevo : "); } }while(num<0||num>8);
return 0; }
int reproductor(Lista lista,Dato contador){ printf("\t\t\tReproductor Winump 3.02\n\n"); printf("\t\tTemas escuchados : %d",(*contador)); printf("\n\t\tArtista : Los Chungitos\n"); printf("\n\t\tDisco : Limosna de amor\n"); printf("\n\n\t\tTracklist\n"); return 0;} int Tracklist(Lista lista){ printf("\n\t\t1.Limosna De Amor"); printf("\n\t\t2.Adios, Adios"); printf("\n\t\t3.Vacaciones"); printf("\n\t\t4.Enfermo De Amor"); printf("\n\t\t5.Que Bonita Eres"); printf("\n\t\t6.La Paya"); printf("\n\t\t7.Sin Ti No Puedo Estar"); printf("\n\t\t8.Ven Por Favor\n"); return 0;}
int menu(Lista lista,Dato contador){ printf("\n\t\tAbriendo. . .\n\n"); sleep(3); printf("\t\t***********************WINUMP***********************\n"); printf("\t\tW W\n"); printf("\t\tI I\n"); printf("\t\tN N\n"); printf("\t\tU TEMA ESCUCHADOS : %3d U\n",(*contador)); printf("\t\tM M\n"); printf("\t\tP P\n"); printf("\t\t***********************WINUMP***********************\n");
sleep(10); system("clear"); return 0;} int cargando(Lista lista){
printf("\t\t%s\n"," ,+? "); printf("\t\t%s\n"," ,I?,, "); printf("\t\t%s\n"," ??~~, , "); printf("\t\t%s\n"," =~~=~, "); printf("\t\t%s\n"," =+~~~=, "); printf("\t\t%s\n"," =+~~~~~: "); printf("\t\t%s\n"," ==~===~~ "); printf("\t\t%s\n"," ~?++++===:, "); printf("\t\t%s\n"," :?=???+++$7777$$$7+ "); printf("\t\t%s\n"," :?+I???????++++++=++: "); printf("\t\t%s\n"," :?+??WINUMP 3 02++++= "); printf("\t\t%s\n"," =?I?I?I????????+???= "); printf("\t\t%s\n"," ~=+++++=+=??+?I???: "); printf("\t\t%s\n"," ,+?II??I?, "); printf("\t\t%s\n"," =?IIII?: "); printf("\t\t%s\n"," ?III?+: "); printf("\t\t%s\n"," ~III?~ "); printf("\t\t%s\n"," ?II?=, "); printf("\t\t%s\n"," =?I+ , , "); printf("\t\t%s\n"," ??, ,,,,:::, "); printf("\t\t%s\n"," EJECUTANDO PROGRAMA "); sleep(8); return 0;}
Makefile : makefile CC= gcc CFLAGS= -Wall -lm
#CC_DEFINES= #CC_INCLUDES=
92-ma-heredia-tad-lista.o: 92-ma-heredia-tad-lista.c 92-ma-heredia-tad-lista.h $(CC) $(CFLAGS) -c 92-ma-heredia-tad-lista.c 92-ma-heredia-tad-lista-test.o: 92-ma-heredia-tad-lista.h 92-ma-heredia-tad-lista-test.c $(CC) $(CFLAGS) -c 92-ma-heredia-tad-lista-test.c 92-ma-heredia-tad-lista-test.sh: 92-ma-heredia-tad-lista.o 92-ma-heredia-tad-lista-test.o $(CC) 92-ma-heredia-tad-lista.o 92-ma-heredia-tad-lista-test.o $(CFLAGS) -o 92-ma-heredia-tad-lista-test.sh
Gracias :D [/code]
Título: Re: [ayuda] programa en C
Publicado por: rir3760 en 2 Marzo 2012, 14:21 pm
Si buscas cursos sobre listas vinculadas un par muy bueno pero en ingles se puede descargar de la pagina de la universidad de Stanford (http://cslibrary.stanford.edu/).
Un saludo
Título: Re: [ayuda] programa en C
Publicado por: anunnaki en 6 Marzo 2012, 09:36 am
Gracias por la ayuda ya casi tengo el programa :D
|