Wenn fertig, bitte Fenster schließen
|
// Lösung zu einfachen Klassen // Dateien einbinden #include <iostream> #include <iomanip> #include <cstdlib> using std::cout; using std::endl; // Aktuelle Anzahl der Bereiche const int ANZKLASSEN = 10; // Obere Grenze des zu klassifizierenden Wertebereichs const unsigned short OGRENZE = 99; // Anzahl der Daten const unsigned short NUMWERTE = 100; // Klassendefinition class Histogramm { // Eigenschaften unsigned short werteZaehler[ANZKLASSEN]; // Zähler für Wertebereiche unsigned short intervall; // Intervall eines Wertebereichs public: // Schnittstellen void Init(); // Initialisierung void AddValue(const unsigned short val); // Wert hinzufügen void PrintHistogramm() const; // Histogramm ausgeben }; // Defínition der Memberfunktionen // Eigenschaften initialisieren void Histogramm::Init() { intervall = (OGRENZE+1) / ANZKLASSEN; // Intervall pro Wertebereich } // Wert hinzufügen void Histogramm::AddValue(const unsigned short val) { // Abfrage ob Wert innerhalb des erlaubten Bereichs if ((val<0) || (val>OGRENZE)) return; // Index des entspr. Zählers berechnen (Klasse) unsigned short klasse = val / intervall; // Zähler erhöhen werteZaehler[klasse]++; } // Anzahl der Werte pro Klasse ausgeben void Histogramm::PrintHistogramm() const { cout << "\nVerteilung:\n"; for (unsigned short index=0; index<ANZKLASSEN; index++) cout << index*intervall << "..." << (index+1)*intervall-1 << ": " << werteZaehler[index] << endl; } // Histogrammobjekt definieren Histogramm myHist; // main() Funktion int main() { // Histogrammobjekt initialisieren myHist.Init(); // Zufallswerte in Histogramm übertragen for (int i=0; i<NUMWERTE; i++) { int val = rand() % (OGRENZE+1); cout << val << ", "; myHist.AddValue(static_cast<unsigned short>(val)); } cout << endl; // Histogramm ausgeben myHist.PrintHistogramm(); } |