[ayuda] programa en C

Iniciado por anunnaki, 2 Marzo 2012, 12:04 PM

0 Miembros y 1 Visitante están viendo este tema.

anunnaki

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]

rir3760

Si buscas cursos sobre listas vinculadas un par muy bueno pero en ingles se puede descargar de la pagina de la universidad de Stanford.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

anunnaki

Gracias por la ayuda ya casi tengo el programa :D