C   34
struct musica
Guest on 11th February 2023 01:15:18 PM


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define anoAtual 2011
  5.  
  6. typedef struct musica{
  7.     char nome[50];
  8.     int duracao;
  9.     int ano;
  10. }Musica;
  11.  
  12. void ordena(Musica *vetMusicas, int numeroMusicas){
  13.     int  i, j;
  14.     Musica aux;
  15.  
  16.     for(i = 0; i < numeroMusicas-1; i ++){
  17.         for(j = i+1; j < numeroMusicas; j ++){
  18.             if(vetMusicas[j].duracao <= vetMusicas[i].duracao){
  19.                 aux = vetMusicas[i];
  20.                 vetMusicas[i] = vetMusicas[j];
  21.                 vetMusicas[j] = aux;
  22.             }
  23.         }
  24.     }
  25. }
  26.  
  27. int qtdadeMinutos (int segundos){
  28.     int minutos;
  29.  
  30.     minutos = segundos/60;
  31.  
  32.     return minutos;
  33. }
  34.  
  35. int qtdadeSegundos (int segundos){
  36.     int segundosRestantes;
  37.  
  38.     segundosRestantes = segundos % 60;
  39.  
  40.     return segundosRestantes;
  41. }
  42.  
  43. void idade (int ano, FILE *saida){
  44.     if(ano == anoAtual){
  45.         fprintf(saida, "lancada este ano.\n");
  46.     }
  47.     else{
  48.         fprintf(saida, "lancada %d anos atras.\n", anoAtual-ano);
  49.     }
  50. }
  51.  
  52. int main()
  53. {
  54.     FILE *entrada = fopen("entrada.txt", "r");
  55.     FILE *saida = fopen("saida.txt", "w");
  56.     int numeroMusicas, i;
  57.     Musica *vetMusicas;
  58.  
  59.     fscanf(entrada, "%d", &numeroMusicas);
  60.  
  61.     vetMusicas = (Musica *) malloc (numeroMusicas * sizeof(Musica));
  62.  
  63.     for(i = 0; i < numeroMusicas; i ++){
  64.         fscanf(entrada, "%s", vetMusicas[i].nome);
  65.         fscanf(entrada, "%d", &vetMusicas[i].duracao);
  66.         fscanf(entrada, "%d", &vetMusicas[i].ano);
  67.     }
  68.  
  69.     ordena(vetMusicas, numeroMusicas);
  70.  
  71.     for(i = 0; i < numeroMusicas; i ++){
  72.         if(qtdadeSegundos(vetMusicas[i].duracao) < 10)
  73.             fprintf(saida, "%s %d:0%d ", vetMusicas[i].nome, qtdadeMinutos(vetMusicas[i].duracao), qtdadeSegundos(vetMusicas[i].duracao));
  74.         else
  75.             fprintf(saida, "%s %d:%d ", vetMusicas[i].nome, qtdadeMinutos(vetMusicas[i].duracao), qtdadeSegundos(vetMusicas[i].duracao));
  76.  
  77.         idade(vetMusicas[i].ano, saida);
  78.     }
  79.  
  80.     fclose(entrada);
  81.     fclose(saida);
  82.     return 0;
  83. }

Raw Paste

Login or Register to edit or fork this paste. It's free.