Verkette Liste sortieren / FILE

  • C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verkette Liste sortieren / FILE

    Jo FSBler!

    Ich habe hier ein kleines Prog welches eine CD Datenbank darstellen soll...
    Die Eingabe wird über eine verkette Liste eingelesen und danach in ein .txt File geschrieben...Ich würde die Liste gerne bevor sie in die txt Datei geschieben wird alphabetisch nach Interpret sortieren:

    hier mal mein code:

    C-Quellcode

    1. #include <conio.h>
    2. #include<iostream.h>
    3. #include <stdio.h>
    4. #include <stdlib.h>
    5. #include <fstream.h>
    6. void main (void)
    7. {
    8. struct music //Struktur wird angelegt
    9. {
    10. char interpret[20];
    11. char album [20];
    12. char genre[20];
    13. char year[5];
    14. music *next;
    15. };
    16. char n;
    17. music cd;
    18. char auswahl;
    19. char auswahl2;
    20. music *h1;
    21. FILE *f;
    22. h1=&cd;
    23. //Eingabe
    24. do
    25. {
    26. cout<<"### DATEIVERARBEITUNG ###\n\n\n"; // Auswahl wird angezeigt
    27. cout<<"Bitte waehlen Sie..\n\n\n";
    28. cout<<"Die 1 fuer Datei einlesen..\n\n";
    29. cout<<"Die 2 fuer Datei ausgeben..\n\n";
    30. cout<<"Die 3 fuer Datei loeschen..\n\n";
    31. cout<<"Auswahl:\t";
    32. cin>>auswahl;
    33. if (auswahl=='1') // Auswahl 1: Datei einlesen
    34. {
    35. system("cls");
    36. do { // Einlesen in Verketteliste
    37. cout<<"Bitte geben Sie die das den Interpreten ein:\t";
    38. cin>>h1->interpret;
    39. cout<<"\nBitte geben Sie den Albumtitel ein:\t";
    40. cin>>h1->album;
    41. cout<<"\nBitte geben Sie das Genre ein:\t";
    42. cin>>h1->genre;
    43. cout<<"\nBitte geben Sie das Veroeffentlichungsjahr ein:\t";
    44. cin>>h1->year;
    45. cout<<"\nWeitere CD einlesen? J/N:\t";
    46. cin>>n;
    47. system("cls");
    48. if(n=='j'||n=='J')
    49. {
    50. h1->next=new music;
    51. h1=h1->next;
    52. }
    53. else
    54. h1->next=NULL;
    55. }
    56. while(n != 'n' && n != 'N');
    57. h1=&cd;
    58. do //Inhalt der Liste wird in File gespeichert
    59. {
    60. f = fopen("test.txt","a");
    61. fprintf(f,"%s",h1->interpret);
    62. fprintf(f,"\n");
    63. fprintf(f,"%s",h1->album);
    64. fprintf(f,"\n");
    65. fprintf(f,"%s",h1->genre);
    66. fprintf(f,"\n");
    67. fprintf(f,"%s",h1->year);
    68. fprintf(f,"\n");
    69. fprintf(f,"---------------------------");
    70. fprintf(f,"\n\n");
    71. fclose(f);
    72. h1=h1->next;
    73. }
    74. while(h1!=NULL);
    75. auswahl = 2;
    76. }
    77. if (auswahl=='2') // Auswahl 2: Datei ausgeben
    78. {
    79. system("cls");
    80. char string[100];
    81. f = fopen("test.txt","r");
    82. do{
    83. fscanf(f,"%s\n",string);
    84. printf("%s\n",string);
    85. }
    86. while(!feof(f));
    87. fclose(f);
    88. getch();
    89. }
    90. if (auswahl=='3') // Auswahl 3: Datei löschen
    91. {
    92. remove("test.txt");
    93. system("cls");
    94. cout<<"Datei geloescht!\n\n\n";
    95. getch();
    96. system("cls");
    97. auswahl2='j';
    98. }
    99. }
    100. while (auswahl2=='j' || auswahl2=='J');
    101. cout<<"\nMoechten Sie das Programm neu starten?\n";
    102. cout<<"Auswahl:\t";
    103. cin>>auswahl2;
    104. }
    Alles anzeigen



    Wenn da jmd. ne idee hat wäre ich sehr dankbar...

    MfG Rainis
  • @OT
    nutze Strings anstatt char[] die lassen sich vergleichen und sind beliebig lang..

    getch und cout zusammen ist unschön...entweder alles in C++ oder alles in C

    C -> getch, printf, scanf
    C++ -> cin, cout

    ach ja alles was man mit new erzeugt muss mit delete wieder beseitigt werden...

    Zusätzlich wäre das Nutzen einer Klasse besser weil praktischer, bzw das ist der Sinn von C++

    siehe auch: Datenstrukturen

    @topic
    du solltest über eine andere Datenstruktur nachdenken eine verkettete Liste lässt sich doof sortieren

    aber
    Google plus ""verkettete Liste" sortieren" ohne die äußeren "" liefert eine Menge Foren Einträge zu deinem Thema
    [SIZE=1]
    Was ist der Unterschied zwischen einem U-Boot und MS Windows?
    Keiner, sobald man ein Fenster aufmacht, fangen die Probleme an
    Alle Tips von mir ohne Gewähr und auf eigenes Risiko !!
    UP1 UP2 UP3[/SIZE][SIZE=1]
    [/SIZE]
  • Jo und eigentlich solltest du auch mal ne vernünftige Frage stellen.
    Nen Code einfach mal hinhauen und sagen, jetzt macht ihr mal, ist nicht grade sehr hilfreich.

    Ansonsten, verkette Listen sind halt schon sowas von alt. Deshalb gibts dazu auch zigtausende Sachen im Netz. Wie bereits erwähnt, google ist dein Freund hierbei :D