Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <string.h> //Vamos a hacer una función que recoja la arias que se desean cantar en una funcion y sus respectivos cantantes struct cantante{ char nombre[20]; char apellido[20]; char tesitura_c[20]; struct cantante *siguiente; }; typedef struct cantante Tcantante; /*Cantante*/ struct aria{ char nombre[60]; /*Nombre del Aria*/ char autor[20]; int tiempo, anio; /*Duración del aria y año de composición*/ float popularidad; /*Medida del 1 al 10*/ char tesitura_a[20]; //Tcantante interprete; struct aria* siguiente; /*Siguiente interpretacion*/ }; typedef struct aria Taria; /*Aria*/ int IntroducirCantante(Tcantante **); int IntroducirAria(Taria **); void VistaPreliminar(Tcantante *, Taria *); void Bienvenida(); void Despedida(); void menu(); int main (){ Bienvenida(); menu(); Despedida(); return 0; } int IntroducirCantante(Tcantante **Inicio){ //Función para introducir un cantante Tcantante *cantante; Tcantante *Recorrer; Tcantante *Ultimo; Recorrer = *Inicio; while(Recorrer!=NULL){ Ultimo = Recorrer; Recorrer = Recorrer->siguiente; } if(cantante==NULL) return -1; cantante->siguiente = NULL; printf("\nEl cantante introducido se llama %s %s, y es %s.\n\n", cantante->nombre, cantante->apellido, cantante->tesitura_c); if(Ultimo == NULL) *Inicio = cantante; else Ultimo->siguiente = cantante; return 0; } int IntroducirAria(Taria **funcion){ //Función para introducir un aria Taria *aria; Taria *Recorrer; Taria *Ultima; Recorrer = *funcion; while(Recorrer!=NULL){ Ultima = Recorrer; Recorrer = Recorrer->siguiente; } if(aria==NULL) return -1; aria->siguiente = NULL; printf("\nEl aria para %s fue compuesta por %s en %d.\nSe llama %s y dura %d segundos.\nSu puntuacion es de %.2f/10.\n\n", aria->tesitura_a, aria->autor, aria->anio, aria->nombre, aria->tiempo, aria->popularidad); if(Ultima == NULL) *funcion = aria; else Ultima->siguiente = aria; return 0; } void VistaPreliminar(Tcantante *Inicio, Taria *funcion){ Tcantante *Recorrer_c = Inicio; Taria *Recorrer_a = funcion; while(Recorrer_c!=NULL && Inicio!=NULL){ Recorrer_c = Recorrer_c->siguiente; } while(Recorrer_a!=NULL && funcion!=NULL);{ printf("Aria para %s\n compuesta por %s en %d.\nSe llama %s y dura %d segundos.\nSu puntuacion es de %.2f/10.\n\n"); Recorrer_a = Recorrer_a->siguiente; } } void Bienvenida(){ //Mensaje de bienvenida printf("El objetivo de este programa es el de proporcionarle una\nherramienta para poder realizar su tan ansiada funcion musical.\n\n"); printf("Elija los cantantes que van a interpretar dicha funcion y haga\nuna hoja con el curso de las arias. \n\n"); } void Despedida(){ //Mensaje de despedida } void menu(){ int opcion; Taria* funcion = NULL; Tcantante* Inicio = NULL; do{ switch(opcion){ case 1: IntroducirCantante(&Inicio); break; case 2: IntroducirAria(&funcion); break; case 5: VistaPreliminar(Inicio, funcion); } } while(opcion!=8); }
El error ocurre en la función "VistaPreliminar". No tengo ni idea de por qué no sale por pantalla.