Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #define LEN 10
  3.  
  4. typedef struct {
  5. char title[31];
  6. char artist[31];
  7. long duration; } song_t;
  8.  
  9. void clearbuffer(void)
  10. {
  11.     while(getchar() != '\n');
  12.     return;
  13. }
  14.  
  15. void insertItem(song_t items[], long len)
  16. {
  17.     int i=0;
  18.     while(items[i].duration && i++<LEN);
  19.     if(i==LEN)
  20.     {
  21.         printf("KEIN PLATZ FREI!\n");
  22.         return;
  23.     }
  24.     printf("TITEL: ");
  25.     scanf("%s", items[i].title);
  26.     clearbuffer();
  27.     printf("INTERPRET: ");
  28.     scanf("%s", items[i].artist);
  29.     clearbuffer();
  30.     printf("LAENGE: ");
  31.     scanf("%ld", &items[i].duration);
  32.     clearbuffer();
  33.     return;
  34. }
  35.  
  36.  
  37. void printItem(song_t *item)
  38. {
  39.     printf("%s - %s - %ld\n",item->title, item->artist,
  40.                 item->duration);
  41. }
  42.  
  43. void printList(song_t items[], long len)
  44. {
  45.     int i;
  46.     for(i=0;i<len;i++)
  47.         if(items[i].duration)
  48.             printItem(&items[i]);
  49. }
  50.  
  51. void swap(song_t *a, song_t *b)
  52. {
  53.     song_t t=*a;
  54.     *a=*b;
  55.     *b=t;
  56.     return;
  57. }
  58.  
  59.  
  60. void sortListDsc(song_t items[], long len, long attr)
  61. {
  62.     int i, j;
  63.     for(i=len-1;i>0;i--)
  64.     {
  65.         for(j=0;j<i;j++)
  66.         {
  67.             switch(attr)
  68.             {
  69.             case 0:
  70.                 if(items[j].title[0]<items[j+1].title[0])
  71.                     swap(&items[j],&items[j+1]);
  72.                 break;
  73.             case 1:
  74.                 if(items[j].artist[0]<items[j+1].artist[0])
  75.                     swap(&items[j],&items[j+1]);
  76.                 break;
  77.             case 2:
  78.                 if(items[j].duration<items[j+1].duration)
  79.                     swap(&items[j],&items[j+1]);
  80.                 break;
  81.             }
  82.         }
  83.     }
  84.     return;
  85. }
  86.  
  87. void sortListAsc(song_t items[], long len, long attr)
  88. {
  89.     int i, j;
  90.     for(i=1;i<len-1;i++)
  91.     {
  92.         for(j=0;j<i;j++)
  93.         {
  94.             switch(attr)
  95.             {
  96.             case 0:
  97.                 if(items[j].title[0]>items[j+1].title[0])
  98.                     swap(&items[j],&items[j+1]);
  99.                 break;
  100.             case 1:
  101.                 if(items[j].artist[0]>items[j+1].artist[0])
  102.                     swap(&items[j],&items[j+1]);
  103.                 break;
  104.             case 2:
  105.                 if(items[j].duration>items[j+1].duration)
  106.                     swap(&items[j],&items[j+1]);
  107.                 break;
  108.             }
  109.         }
  110.     }
  111.     return;
  112. }
  113.  
  114.  
  115. int main()
  116. {
  117.     char menusel;
  118.     song_t tracklist[LEN]=
  119.     {
  120.         { "DEMOTITLE_1","DEMOARTIST_1", 10 },
  121.         { "DEMOTITLE_2","DEMOARTIST_2", 20 },
  122.         { "DEMOTITLE_3","DEMOARTIST_3", 30 },
  123.         { "DEMOTITLE_4","DEMOARTIST_4", 40 },
  124.         { "DEMOTITLE_5","DEMOARTIST_5", 500 }
  125.     };
  126.  
  127.     while(1)
  128.     {
  129.         printf("\n\n\n");
  130.         printf("-1- ALLE DATEN AUSGEBEN\n");
  131.         printf("-2- EINTRAG HINZUFUEGEN\n\n");
  132.         printf("SORTIEREN AUFSTEIGEND:\n");
  133.         printf("-3- NACH TITEL\n");
  134.         printf("-4- NACH INTEPRET\n");
  135.         printf("-5- NACH LAENGE\n\n");
  136.         printf("SORTIEREN ABSTEIGEND:\n");
  137.         printf("-6- NACH TITEL\n");
  138.         printf("-7- NACH INTEPRET\n");
  139.         printf("-8- NACH LAENGE\n\n");
  140.         printf("-9- ENDE \n");
  141.         scanf("%c",&menusel);
  142.         clearbuffer();
  143.         switch(menusel)
  144.         {
  145.         case '1':
  146.             printList(tracklist,LEN);  
  147.             break; 
  148.         case '2':
  149.             insertItem(tracklist,LEN);
  150.             break; 
  151.         case '3':
  152.             sortListAsc(tracklist,LEN,0);
  153.             break; 
  154.         case '4':
  155.             sortListAsc(tracklist,LEN,1);
  156.             break; 
  157.         case '5':
  158.             sortListAsc(tracklist,LEN,2);
  159.             break; 
  160.         case '6':
  161.             sortListDsc(tracklist,LEN,0);
  162.             break; 
  163.         case '7':
  164.             sortListDsc(tracklist,LEN,1);
  165.             break; 
  166.         case '8':
  167.             sortListDsc(tracklist,LEN,2);
  168.             break; 
  169.         case '9':
  170.             return 0;
  171.         default:
  172.             continue;
  173.         }
  174.         printf("\n*** EINGABETASTE DRUECKEN ***\n");
  175.         getchar();
  176.     }          
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement