Dies ist ein Arbeitsprogramm, das ich habe versucht C++ aus diesen Eingaben von einer Datei Strings zu lernen und verdoppelt und legt sie in ihre Perspektive Arrays. Was ich festhalte, ist, während ich die Strings sortiere, will ich das Array der Doubles in aufsteigender Reihenfolge sortieren und die Punktzahlen mit dem Namen behalten, mit dem sie verknüpft sind. Ich versuche es zu lernen, ohne Vektoren zu benutzen, bevor ich weiterführe, um zu lernen, wie man sie manipuliert. Das ist der Grund dafür, keine Vektoren zu benutzen, bevor jemand fragt. Ist es am besten, die Spalten des 2D-Arrays zu sortieren und sie dann mit dem 1D-Array zu sortieren oder einfach nur eine Anweisung zu haben, die alles bietet? Was wäre der beste Sortieralgorithmus für diese Anwendung? Meine Versuche sind bisher alle gescheitert, deshalb wende ich mich hier an die Gemeinde um Hilfe. Die Logik ist wahrscheinlich ein einfaches Konzept, das ich noch zu begreifen habe. Wir müssen alle irgendwo anfangen. Vielen Dank im Voraus für Ihre Hilfe.Problem beim Sortieren von 2d Double Array neben 1d String Array.
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void ArraySort (string x[], double y[][3], int length);
int main()
{
ifstream inFile;
inFile.open("bowlers2.txt");
const int SIZE = 10;
int i,j;
double scores[10][3];
string names[SIZE];
string mystring;
if (!inFile)
{
cout << "Can not open the input file"
<< " This program will end."<< "\n";
return 1;
}
for(i = 0; i < SIZE; i++)
{
getline(inFile, names[i]);
for(j = 0; j < 3; j++)
{
getline(inFile, mystring);
scores[i][j] = atoi(mystring.c_str());
}
}
for(int i=0;i<SIZE;i++)
{
cout << names[i] << "\n";
for(j = 0; j < 3; j++)
cout << scores[i][j] << "\n";
}
inFile.close();
ArraySort (names, scores, SIZE);
return 0;
}
void ArraySort (string x[], double y[][3], int LENGTH)
{
int i,j;
string sValue;
double dValue;
for(i = 1; i < LENGTH; i++)
{
sValue = x[i];
for(j = i - 1; j >= 0 && x[j] > sValue; j--)
{
x[j + 1] = x[j];
}
x[j + 1] = sValue;
}
cout << "\n";
for(int i=0;i<LENGTH;i++)
{
cout << x[i] << "\n";
for(j = 0; j < 3; j++)
cout << y[i][j] << "\n";
}
}
Datei durch das Programm lesen:
Linus too good
100
23
210
Charlie brown
1
2
12
Snoopy
300
300
100
Peperment Patty
223
300
221
Pig Pen
234
123
212
Red Headed Girl
123
222
111
Marcey
1
2
3
keith hallmark
222
300
180
anna hallmark
222
111
211
roxie hallmark
100
100
2
Ich rate Ihnen, die Sätze von Zahlen neu zu ordnen und die Zahlen innerhalb der Sätze sortieren in * zwei unabhängige Operationen. * Versuchen Sie das und sagen Sie uns, mit welcher Operation Sie Hilfe brauchen. – Beta