Ich versuche ein Programm zu erstellen, das Informationen in einem dynamischen Array von Strukturen empfängt und speichert. Und das Programm sollte die Teams sortieren und anzeigen, die überdurchschnittlich, durchschnittlich und unterdurchschnittlich sind. Das ist bisher mein Code. . Also was ich tue, ist, dass ich die Benutzereingabe erhalte, die die Eingabe prüft, bevor ich sie im dynamischen Struktur-Array ablege. Dann zeige ich schließlich alle Informationen an, die in der Struktur gespeichert sind. Hier ist die Ausgabe, die ich gerade bekomme und ich bin mir nicht sicher, warum ich diese negativen Zahlen bekomme. DankAbrufen von Werten aus dynamischem Strukturarray
How many teams do you want to store? 2
Enter the name of the team 1:Vikings
Enter the team 1 percentage: 90
Enter the name of the team 2:PackersGreen Bay Packers
Enter the team 2 percentage: 80
Above Average :
Vikings 90%
PackersGreen Bay Packers 80%
Average :
5.00136e-317%
None
Below Average :
None
9.25737e-306%
Hier ist mein Code.
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
struct aboveAverage
{
string name9;
double percentage1;
};
struct average
{
string name10;
double percentage2;
};
struct belowAverage
{
string name11;
double percentage3;
};
int numOfteams;
double userInput;
cout << "How many teams do you want to store? ";
cin >> numOfteams;
cin.get();
aboveAverage * arrayOfAboveAverage = new aboveAverage[numOfteams];
average * arrayOfAverage = new average[numOfteams];
belowAverage * arrayOfbelowAverage = new belowAverage[numOfteams];
for (int i = 0; i < numOfteams; i++)
{
start:
int x = i + 1;
string name5;
cout << "Enter the name of the team " << x << ":";
getline(cin, name5);
cout << "Enter the team " << x << " percentage: ";
cin >> userInput;
cin.get();
if (userInput >= 66 && userInput <= 100)
{
arrayOfAboveAverage[i].percentage1 = userInput;
arrayOfAboveAverage[i].name9 = name5;
}
else if (userInput <= 66 && userInput >= 33)
{
arrayOfAverage[i].name10 = name5;
arrayOfAverage[i].percentage2 = userInput;
}
else if (userInput <= 33 && userInput >= 0)
{
arrayOfbelowAverage[i].name11 = name5;
arrayOfbelowAverage[i].percentage3 = userInput;
}
else
{
cout << "Percent cannot be greater than 100" << endl;
goto start;
}
}
cout << "Above Average :" << endl;
for (int j = 0; j < numOfteams; j++)
{
if (arrayOfAboveAverage[j].percentage1 != NULL ||
arrayOfAboveAverage[j].name9 != "")
{
cout << arrayOfAboveAverage[j].name9 <<" ";
cout << arrayOfAboveAverage[j].percentage1 <<"%"<< endl;
}
else
{
cout << "None" << endl;
}
}
cout << "Average :" << endl;
for (int j = 0; j < numOfteams; j++)
{
if (arrayOfAverage[j].percentage2 > 0 ||
arrayOfAverage[j].name10 != "")
{
cout << arrayOfAverage[j].name10 <<" ";
cout << arrayOfAverage[j].percentage2 <<"%"<<endl;
}
else
{
cout << "None" << endl;
}
}
cout << "Below Average : "<< endl;
for (int k = 0; k < numOfteams; k++)
{
if (arrayOfbelowAverage[k].percentage3 > 0 ||
arrayOfbelowAverage[k].name11 != "")
{
cout << arrayOfbelowAverage[k].name11 << " ";
cout << arrayOfbelowAverage[k].percentage3 <<"%"<< endl;
}
else
{
cout << "None" << endl;
}
}
delete[] arrayOfAboveAverage;
delete[] arrayOfAverage;
delete[] arrayOfbelowAverage;
return 0;
}
Sie brauchen wirklich nicht 3 verschiedene Arrays und 3 verschiedene Typen hier. Sie brauchen nur einen Team-Typ und dann können Sie dieses einzelne Array durchlaufen, um die oberen, unteren und durchschnittlichen Teams zu finden. – NathanOliver
Das funktioniert, aber die Frage will, dass wir 3 verschiedene Strukturen erstellen. – Becca
'5.00136e-317' ist nicht negativ, es ist positiv, aber sehr klein. Sie müssen die Arrays ordnungsgemäß initialisieren oder nachverfolgen, wie viele gültige Elemente jeweils enthalten sind. – molbdnilo