Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con la función printf()

Estas en el tema de Problema con la función printf() en el foro de C/C++ en Foros del Web. Buenas, estoy haciendo un código que permita introducir actores y canciones (de ópera) en varias listas para después exportarlo, sin embargo, la función que tendría ...
  #1 (permalink)  
Antiguo 02/07/2015, 11:07
 
Fecha de Ingreso: junio-2015
Mensajes: 4
Antigüedad: 8 años, 9 meses
Puntos: 0
Pregunta Problema con la función printf()

Buenas, estoy haciendo un código que permita introducir actores y canciones (de ópera) en varias listas para después exportarlo, sin embargo, la función que tendría que mostrar todos los datos introducidos da un error:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. //Vamos a hacer una función que recoja la arias que se desean cantar en una funcion y sus respectivos cantantes
  6.  
  7. struct cantante{
  8.     char nombre[20];
  9.     char apellido[20];
  10.     char tesitura_c[20];
  11.     struct cantante *siguiente;
  12. };
  13.  
  14. typedef struct cantante Tcantante; /*Cantante*/
  15.  
  16. struct aria{
  17.     char nombre[60]; /*Nombre del Aria*/
  18.     char autor[20];  
  19.     int tiempo, anio;  /*Duración del aria y año de composición*/
  20.     float popularidad; /*Medida del 1 al 10*/
  21.     char tesitura_a[20];
  22.     //Tcantante interprete;  
  23.     struct aria* siguiente;     /*Siguiente interpretacion*/   
  24. };
  25.  
  26. typedef struct aria Taria; /*Aria*/
  27.  
  28. int IntroducirCantante(Tcantante **);
  29. int IntroducirAria(Taria **);
  30. void VistaPreliminar(Tcantante *, Taria *);
  31. void Bienvenida();
  32. void Despedida();
  33. void menu();
  34.  
  35. int main (){
  36.    
  37.     Bienvenida();
  38.     menu();
  39.     Despedida();   
  40.    
  41.     return 0;
  42.    
  43. }
  44.  
  45. int IntroducirCantante(Tcantante **Inicio){ //Función para introducir un cantante
  46.    
  47.     Tcantante *cantante;
  48.     Tcantante *Recorrer;
  49.     Tcantante *Ultimo;
  50.    
  51.     Recorrer = *Inicio;
  52.    
  53.     while(Recorrer!=NULL){
  54.        
  55.         Ultimo = Recorrer;
  56.         Recorrer = Recorrer->siguiente;
  57.     }
  58.    
  59.     cantante = (Tcantante *) malloc(sizeof(Tcantante));
  60.    
  61.     if(cantante==NULL)
  62.         return -1;
  63.        
  64.     printf("\nIndicar nombre: ");
  65.     scanf("%s", cantante->nombre);
  66.    
  67.     fflush(stdin);
  68.    
  69.     printf("\nIndicar apellido: ");
  70.     scanf("%s", cantante->apellido);
  71.    
  72.     fflush(stdin);
  73.    
  74.     printf("\nIndicar tesitura: ");
  75.     scanf("%s", cantante->tesitura_c);
  76.    
  77.     fflush(stdin);
  78.    
  79.     cantante->siguiente = NULL;
  80.    
  81.     printf("\nEl cantante introducido se llama %s %s, y es %s.\n\n", cantante->nombre, cantante->apellido, cantante->tesitura_c);
  82.    
  83.     if(Ultimo == NULL)
  84.         *Inicio = cantante;
  85.     else
  86.         Ultimo->siguiente = cantante;  
  87.    
  88.     return 0;
  89. }
  90.  
  91. int IntroducirAria(Taria **funcion){ //Función para introducir un aria
  92.    
  93.     Taria *aria;
  94.     Taria *Recorrer;
  95.     Taria *Ultima;
  96.    
  97.     Recorrer = *funcion;
  98.    
  99.     while(Recorrer!=NULL){
  100.         Ultima = Recorrer;
  101.         Recorrer = Recorrer->siguiente;
  102.     }
  103.    
  104.     aria = (Taria *) malloc(sizeof(Taria));
  105.    
  106.     if(aria==NULL)
  107.         return -1;
  108.        
  109.     printf("\nIndicar nombre: ");
  110.     scanf("%s", aria->nombre);
  111.    
  112.     fflush(stdin);
  113.    
  114.     printf("\nIndicar autor: ");
  115.     scanf("%s", aria->autor);
  116.    
  117.     fflush(stdin);
  118.    
  119.     printf("\nIndicar tesitura del aria: ");
  120.     scanf("%s", aria->tesitura_a);
  121.    
  122.     fflush(stdin);
  123.    
  124.     printf("\nIndique el anio de creacion: ");
  125.     scanf("%i", &aria->anio);
  126.    
  127.     printf("\nIndique la puntuacion de la obra: ");
  128.     scanf("%f", &aria->popularidad);
  129.    
  130.     printf("\nIndique la duracion del aria: ");
  131.     scanf("%d", &aria->tiempo);
  132.    
  133.     aria->siguiente = NULL;
  134.    
  135.     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);
  136.    
  137.      
  138.    
  139.     if(Ultima == NULL)
  140.         *funcion = aria;
  141.     else
  142.         Ultima->siguiente = aria;
  143.        
  144.     return 0;
  145.    
  146. }
  147.  
  148. void VistaPreliminar(Tcantante *Inicio, Taria *funcion){
  149.    
  150.     Tcantante *Recorrer_c = Inicio;
  151.     Taria *Recorrer_a = funcion;
  152.    
  153.     printf("De momento ha introducido los siguientes cantantes: \n");
  154.    
  155.     while(Recorrer_c!=NULL && Inicio!=NULL){
  156.         printf("%s %s, %s\n", Recorrer_c->nombre, Recorrer_c->apellido, Recorrer_c->tesitura_c);
  157.         Recorrer_c = Recorrer_c->siguiente;
  158.     }
  159.    
  160.     printf("\nY las siguientes arias: \n");
  161.    
  162.     while(Recorrer_a!=NULL && funcion!=NULL);{
  163.         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");
  164.         Recorrer_a = Recorrer_a->siguiente;
  165.     }
  166.    
  167.    
  168.    
  169.  
  170. }
  171.  
  172.  
  173. void Bienvenida(){ //Mensaje de bienvenida
  174.    
  175.     printf("\n/---------------------------------------------/\n");
  176.     printf("/----------PROGRAMADOR DE LA FUNCION----------/\n");
  177.     printf("/---------------------------------------------/\n\n");
  178.    
  179.     printf("El objetivo de este programa es el de proporcionarle una\nherramienta para poder realizar su tan ansiada funcion musical.\n\n");
  180.     printf("Elija los cantantes que van a interpretar dicha funcion y haga\nuna hoja con el curso de las arias. \n\n");
  181.    
  182. }
  183.  
  184. void Despedida(){ //Mensaje de despedida
  185.    
  186.     printf("/--------------------------------------------/\n");
  187.     printf("/--------GRACIAS POR USAR EL PROGRAMA--------/\n");
  188.     printf("/--------------------------------------------/\n\n");
  189.    
  190. }
  191.  
  192. void menu(){
  193.    
  194.     int opcion;
  195.    
  196.     Taria* funcion = NULL;
  197.     Tcantante* Inicio = NULL;
  198.    
  199.     do{
  200.         printf("/---------------MENU PRINCIPAL---------------/\n");
  201.         printf("/ (1) Introducir cantante                    /\n");
  202.         printf("/ (2) Introducir arias                       /\n");
  203.         printf("/ (3) Eliminar cantantes                     /\n");
  204.         printf("/ (4) Eliminar arias                         /\n");
  205.         printf("/ (5) Vista preliminar                       /\n");
  206.         printf("/ (6) Exportar funcion                       /\n");
  207.         printf("/ (7) Eliminar todo                          /\n");
  208.         printf("/ (8) Salir                                  /\n");
  209.         printf("/--------------------------------------------/\n\n");
  210.    
  211.         printf("Elija una opcion: ");
  212.         scanf("%d", &opcion);
  213.        
  214.         switch(opcion){
  215.             case 1: IntroducirCantante(&Inicio);
  216.                     break;
  217.                    
  218.             case 2: IntroducirAria(&funcion);
  219.                     break;
  220.                    
  221.             case 5: VistaPreliminar(Inicio, funcion);
  222.         }  
  223.    
  224.     }
  225.    
  226.     while(opcion!=8);
  227. }

El error ocurre en la función "VistaPreliminar". No tengo ni idea de por qué no sale por pantalla.
  #2 (permalink)  
Antiguo 02/07/2015, 13:24
 
Fecha de Ingreso: julio-2015
Mensajes: 7
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Problema con la función printf()

Si de referís la linea 163 simplemente te olvidaste de poner los nombres de las variables :D
  #3 (permalink)  
Antiguo 04/07/2015, 09:05
 
Fecha de Ingreso: junio-2015
Mensajes: 4
Antigüedad: 8 años, 9 meses
Puntos: 0
Respuesta: Problema con la función printf()

Corregí ese error, pero sigue sin funcionar, es más, ni siquiera se imprimen los nombres de los cantantes en la función VistaPreliminar().

Última edición por GerardoVF78; 04/07/2015 a las 11:02

Etiquetas: printf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:14.