hello
I have build a high score list that asks the user to enter name and score and then sort the list so the score comes in the right order.
My problem is that the sort function only works once, the second time I enter name and score the list is not sorted..any one see why?
#include <iostream>
#include <string>
using namespace std;
int main()
{
int myArray[5]= {1000,800,700,500,100};
std::string names[5]= {"Erik","Andy","Emma","Tyra","ulla"};
int i;
int j;
int flag = 1;
int temp; // behållare för värde i arrayen
int a;
int e=0;
std::string answer;
std::string tempnamn;
int numLength =5; // längden på arrayen
for (e=1; e<2; e++) // evig loop
{
cout << "Highscore list:\n\n";
for (a=0; a<5; a++) // skiver ut arrayen
{
cout << names[a] << "\t\t" << myArray[a] << "\n";
}
cout << "Do you want to enter a new name? (yes/no)";
cin >> answer;
if (answer=="yes")
{
e=0;
cout << "Fyll i din poäng:\n";
cin >> myArray[4];
cout << "\n";
cout << "Fyll i ditt namn:\n";
cin >> names[4];
cout << "\n";
for(i = 1; (i <= numLength) && flag; i++)// så länge i är mindre eller lika med 5 + flaggan, körs loopen.
{
flag = 0;
for (j=0; j < (numLength -1); j++) // loopen kör så länge j är mindre än 4
{
if (myArray[j+1] > myArray[j]) // villkor som kontrollerar vilka värden som jämförs
{
temp = myArray[j]; // byter plats på element i arrayen
myArray[j] = myArray[j+1];
myArray[j+1] = temp;
tempnamn = names[j];
names[j] = names[j+1];
names[j+1] = tempnamn ;
flag = 1; // visar att ett byte är gjort och att loppen ska köras igen/ om inget byte är gjort har flag värde 0 och arrayen är sorterad
}
}
}
} //yes
} // avslutar den eviga loopen
return 0;
}