Ich praktizierte Sortierung und Zeiger für meine Alg-Klasse - es ist ein einfaches Programm, das einen Benutzer fragt nach der Anzahl der Namen, die man eingeben möchte, fragt dann nach diesen Namen und sortiert sie dann aus.Löschen eines Zeigers zu einem sortierten String-Array gibt mir einen Fehler nach der Ausführung
string *sortname(string array[], int number)
{
for (int i = 0; i < number - 1; i++)
{
int smallestIndex = i;
for (int j = i + 1; j < number; j++)
{
if (array[smallestIndex] > array[j])
smallestIndex = j;
}
swap(array[i], array[smallestIndex]);
}
return array;
}
int main()
{
cout << "enter the number of names you wish to enter." << endl;
int number;
cin >> number;
string *array = new string[number];
for (int i = 0; i < number; i++)
{
cout << "enter name #" << i+1 << ":";
cin >> array[i];
}
cout << "the names are: " << endl;
for (int i = 0; i < number; i++)
{
cout << array[i] << endl;
}
string *sorted;
sorted = sortname(array, number);
cout << "the sorted names are: " << endl;
for (int i = 0; i < number; i++)
{
cout << sorted[i] << endl;
}
delete[] array;
delete[] sorted;
return 0;
}
Ich bin mir bewusst, dass die Funktion sortname
kann void
und Rückkehr nichts eingestellt werden, aber ich wollte nur, um zu versuchen (aus Gründen der Praxis) zurückkehrt. Wenn ich jedoch am Ende ein delete[] sorted
hinzufüge, stürzt die Konsole ab, nachdem es den sortierten Namen auflistet. Wenn ich nur delete[] array
es funktioniert gut, obwohl die sortierten sollte auch gelöscht werden ... irgendwelche Hinweise?
Weil Sie das gleiche Array doppelt löschen. –
ah ich sehe, danke dafür, jetzt macht es vollkommen Sinn! –
Ich habe nichts mit dem Zeiger sortiert, da das Haupt-Array gelöscht wurde. Danke für die Hilfe –