Hello I am pretty new to C++
I am having some problems fixing the code below.
If I input scores and names such as Sam "100" and John "20" it will sort them correctly in ascending order
"Sam 20
"John,100"
If I do it the opposite way around Sam "20" and then John "100"
it ignores the name assigned to the "20"
Also is there a simple way to list the unsorted list before the sorted list.
Thank you in advance for any advice provided
Code:#include "stdafx.h" #include <iostream> #include <string> using namespace std; struct StudentGrades { string name; double grade; }; void sort (StudentGrades *score, int size); int main () { StudentGrades *sGrade; int mass; cout << "Please enter the amount of student grades you wish to enter \n"; cin >> mass; sGrade = new StudentGrades[mass]; for (int index = 0; index < mass; index ++) { cout << "Please enter the [NAME] of student #" << (index + 1) << ": "; cin >> (sGrade + index)->name; cout << "Please enter the [SCORE] of student #" << (index + 1) << ": "; cin >> (sGrade + index)->grade; while (sGrade[index].grade < 0) { cout << "Negative numbers are not accepted, please try again with positive values \n"; cin >> (sGrade + index)->grade; } } cout << "The sorted names and scores are:"; cout << endl; sort (sGrade, mass); //cout << fixed << showpoint << setprecision(2); delete []sGrade; sGrade = 0; system ("pause"); return 0; } void sort (StudentGrades *score, int size) { int minIdx; double minGrade; string id; for (int scan = 0; scan < (size - 1); scan ++) { minIdx = scan; minGrade = (score + scan)->grade; for (int count = scan + 1; count < size; count ++) { if ((score + count)->grade < minGrade) { minGrade = (score + count)->grade; minIdx = count; id = (score + count)->name; } } (score + minIdx)->grade = (score + scan)->grade; (score + scan)->grade = minGrade; (score + minIdx)->name = (score + scan)->name; (score + scan)->name = id; } for (int count = 0; count < size; count ++) { cout << (score + count)->name << " "; cout << (score + count)->grade << " "; cout << endl; } }




Reply With Quote