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;
}

Edited 5 Years Ago by Narue: Adjusted the formatting to be non-stupid

This article has been dead for over six months. Start a new discussion instead.