[ Foro de C ]

Ejercicio 5.5.2

11-Dec-2012 16:06
Francisco Garcia Ansuategui
1 Respuestas

Me gustaría agradecer la realización de este tutorial,he intentado
en varias ocasiones seguir un curso que tengo por fasciculos de
programación de la época del windows 95 y nunca he podido pasar del
primer tema, este tutorial se me hace ameno GRACIAS.
El ejercicio 5.5.2 me ha costado mucho pero me funciona se que se puede mejorar agradeceria hechara un vistazo



/*El programa pedira datos de un cancion artista,titulo,duracion y tamaño
se almacenara en un struct de hasta 100 canciones tendra un menu que permitira
añadir canciones mostrar el titulo de todas las canciones y buscar una cancion  
que contenga un determinado texto en el titulo o en el artista*/
#include<stdio.h>
#include<string.h>
main()
{
     
     struct
     {
           char artista[10];
           char titulo[10];
           int duracion;
           float tamanyo;
           } canciones[100];
           
           int opcion,x,mascanciones,acumulado=0,coincidencia;
           char textobuscar[20],y;
           
           do
           {
           printf("\n elija una opcion:\n");
           printf("\n 1=anyadir canciones\n");
           printf(" 2=mostrar el titulo de todas las canciones\n");
           printf(" 3=buscar una cancion que contenga un texto\n");
           printf(" 4=salir   ");
           scanf("%d",&opcion);
             
           
           switch (opcion)
           {
            case 1: for(x=acumulado; x<100; x++)
            {          
            printf("\n nombre del artista  ");scanf("%s",canciones[x].artista);
            printf(" titulo de la cancion  ");scanf("%s",canciones[x].titulo);
            printf(" duracion en segundos  ");scanf("%d",&canciones[x].duracion);
            printf(" tamanyo en kb  ");scanf("%f",&canciones[x].tamanyo);
            acumulado++;                    
            printf(" si desea introducir mas canciones pulse 1 si no otro numero:  ");scanf("%d",&mascanciones);          
            if(mascanciones!=1) break;
            }
            break;
           
            case 2: for(x=0; x<acumulado; x++)
            printf(" Titulo: %s\n",canciones[x].artista);
            break;
           
            case 3:printf("\n Introduce el texto que quieres buscar  ");scanf("%s",textobuscar);
            coincidencia=0;
            for(x=0; x<acumulado; x++)
            {                      
            if (strstr(canciones[x].artista,textobuscar)||strstr(canciones[x].titulo,textobuscar)!=NULL)
               {                                  
                printf("\n Se encontro coincidencia en %s ,%s \n",canciones[x].artista,canciones[x].titulo);
                coincidencia=1;
                }
            }
            if(coincidencia==0) printf("\n no se encontro coincidencia con %s \n",textobuscar);        
            break;                  
                 
            case 4: printf("Fin"); break;
           
            default: printf("%d no es una opcion\n",opcion);    
            }
            }          
            while (opcion!=4);    
                   
           getchar();
           getchar();
           }
 


15-Dec-2012 11:49
Nacho Cabanes (+30)

Sí, la apariencia es buena. Diez letras (9 reales, además de la marca de final de cadena) me parecen pocas para un título o para un artista, pero la estructura general es buena.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)