Mein Programm wird ausgeführt, um eine Benutzereingabe einer angegebenen Ganzzahl anzufordern, gefolgt von der Speicherung weiterer Ganzzahlen in einem dynamischen Array. Die Ausgabe gibt ein Histogramm aus und verwendet Sterne, um zu zeigen, wie viele jeder Integer sind.Histogramm-Funktion mit dynamischen Arrays C++ 11
Ich habe alle Aufgaben bis auf eine abgeschlossen. Ich habe versucht, eine Swap-Funktion für Stunden zu implementieren, konnte aber keine Lösung für mein Problem finden.
Mein Problem ist, dass ich meine Ausgabe in Reihenfolge von am wenigsten zum größten erhalten möchte. Zum Beispiel
Enter number of grades: 5 Enter grades (each on a new line): 20 4 10 10 20 Histogram: 20 ** 4 * 10 **
Allerdings möchte ich die folgende Ausgabe ist stattdessen
Histogram: 4 * 10 ** 20 **
Hier mein Code:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
void hist(int arr[], int n);
void swap(int &a, int &b);
int main(){
int* arr = NULL;
int number;
cout << "Enter number of grades:" << endl;
cin >> number;
cout << "Enter grades (each on a new line):" << endl;
arr = new int[number];
for(int i = 0; i < number; i++){
cin >> arr[i];
}
hist(arr, number);
return 0;
delete [] arr;
}
void hist(int arr[], int n){
cout << "Histogram:" << endl;
for (int i = 0; i < n; i++){
int j;
for (j = 0; j < i; j++)
if(arr[i] == arr[j])
break;
if (i == j){
int xx = count(arr, arr+n, arr[i]);
cout << setw(3) << arr[i] << " ";
for (int j = 0; j < xx; ++j){
cout << "*";
}
cout << endl;
}
}
}
void swap(int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
siehe [std :: swap] (http://en.cppreference.com/w/cpp/algorithm/swap). Sie verwenden 'namespace std;', also fügen Sie zu 'std :: swap's Überladungsmenge hinzu. Haben Sie versucht, Ihre Swap-Funktion von einer einfacheren Funktion aus aufzurufen, um zu sehen, ob Sie dadurch Probleme bekommen? Hören Sie auch auf, dies zu tun: 'int x; x = 1; 'und tun Sie einfach' int x = 1; ' –