Forum: Hjälp med sortering!

Forum huvudsida -> Programmering -> Hjälp med sortering!

Sidor: 1

Till botten

Baracuda87 14:44 - 31:a Juli 2009 | Post #1
Medlem
Inlägg: 2


Skicka PM
Hej!
Jag ska programmera en enkel highscore lista där man får skriva i namn och poäng och sen ska listan skrivas ut i rätt ordning. Jag har lite problem med sorteringen och det borde inte vara så svårt, men jag kan inte se vad det är för fel =/
fick nämligen inte använda vectorns inbyggda funktion Sort så därför använder jag istället BubbleSort.
Någon som kan se vad den gör för fel?

  1. #include <iostream>
  2. #include <string>
  3. #include <iomanip>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <cstdlib>
  7. using namespace std;
  8.  
  9. //Skapar en struct över en person
  10. struct Person
  11. {
  12. char namn[40];
  13. int hiscore;
  14. };
  15.  
  16.  
  17. void bubbleSort(vector<Person> spelare)
  18. {
  19. for(int i=0 ; i<spelare.size(); i++)
  20. {
  21. for(int j=0 ; j<i; j++)
  22. {
  23. if(spelare[i].hiscore>spelare[j].hiscore)
  24. {
  25.  
  26. Person temp;
  27. temp = spelare[i];
  28. spelare[j],=spelare[i];
  29. spelare[j]=temp;
  30.  
  31.  
  32. }
  33. }
  34. }
  35.  
  36. }
  37.  
  38. //Funktion som sorterar och visar highscore
  39. void lista( vector<Person> spelare)
  40. {
  41. cout<<"Sorted highscore:"<<endl<<endl;
  42.  
  43. bubbleSort(spelare);//sortera med funktionen bubbleSort()
  44.  
  45.  
  46. for(int i=0; i<spelare.size(); i++)
  47. {
  48. if(i>4)//Visa endast topp 5
  49. break;
  50. //utskrift och formatering
  51. cout << setw(8) << std::left << spelare[i].hiscore << spelare[i].namn<<endl;
  52. }
  53. cout<<"Do you want to enter a new name? (yes/no): ";
  54. }
  55.  
  56.  
  57. //main funktionen
  58. int main(int argc, char *argv[])
  59. {
  60.  
  61. string temp=" ";
  62. Person person[6];
  63. vector<Person> spelare; //deklarerar en vektor av structen Person
  64.  
  65. //Fyller Highscore:n
  66. strcpy(person[0].namn, "Anna"); person[0].hiscore=1000; spelare.push_back(person[0]);
  67. strcpy(person[1].namn, "Linda"); person[1].hiscore=800; spelare.push_back(person[1]);
  68. strcpy(person[2].namn, "Peter"); person[2].hiscore=600; spelare.push_back(person[2]);
  69. strcpy(person[3].namn, "Ulla-Bella"); person[3].hiscore=500; spelare.push_back(person[3]);
  70. strcpy(person[4].namn, "David"); person[4].hiscore=100; spelare.push_back(person[4]);
  71.  
  72. lista(spelare);
  73.  
  74.  
  75. //Loopa så länge man inte skriver "no"
  76. while(temp!="no")
  77. {
  78. //inmatning
  79. cin >> temp;
  80.  
  81. if (temp=="no")
  82. break;//gå ur loop inmatning är "no"
  83.  
  84. if(temp=="yes")
  85. {
  86. Person nyperson;
  87. cout << endl << "Enter new name: ";
  88. cin >> nyperson.namn;
  89.  
  90. cout << "Enter score: ";
  91. cin >> nyperson.hiscore;
  92. cout << endl;
  93. //Sätter in ny player i vektorn
  94. spelare.push_back(nyperson);
  95.  
  96. //Sorterar och skriver ut Highscore
  97. lista(spelare);
  98. }
  99. else //Om fel inmatning"
  100. cout<<"Please enter yes or no! Do you want to enter a new name? (yes/no): ";
  101. }
  102.  
  103. system("PAUSE");
  104. return 0;
  105. }





Vitdom 20:19 - 31:a Juli 2009 | Post #2
Medlem
Inlägg: 71


Skicka PM
På rad 28 har du skrivit ett kommatecken mitt i satsen: spelare[j],=spelare[i];
Tag bort den.

Inkludera biblioteket cstring för att använda funktionen strcpy.

-------------------------





GregerW 22:45 - 31:a Juli 2009 | Post #3
Medlem
Inlägg: 16


Skicka PM
Prova med att spara inmatningen på fil, sedan sortera den på filen och läs in tillsammans med highscorelistan, så får du bättre överblick över händelseförloppet, vad jag kan se så det du tror att du sorterar läggs till i listan och sorteras men jag kan inte se att det sorteras utan samma gamla lista skrivs ut igen.

-------------------------
-----------------------------
MVH
std::cout <<"Greger";

Senast redigerad 09:38 - 2:a Augusti 2009


Sidor: 1

Forum huvudsida -> Programmering -> Hjälp med sortering!
Atom feed

Du får inte posta i den här tråden | Till toppen