Eine Fuktion, die ein Histogramm ausgibt.
-
Hallo zusammen,
ich bin gerade ein wenig am verzweifeln. Wir in einer Hausaufgabe folgende Aufgabe bearbeiten und nach drei Tagen lesen und probieren, brauche ich jetzt doch ganz dringend Hilfe.
Zunächst einmal die Aufgabenstellung.
Schreiben Sie eine Funktion, die ein Histogramm ausgibt.
Der Funktionskopf soll folgende Form haben:
void hist( int a[], int n)
Dabei ist a ein Array mit Werten und n die Gröÿe des übergebenen Arrays.
Hier sehen Sie ein Programmfragment und daneben die erwartete Ausgabe:int daten[] = { 3, 5, 1, 2 };
hist( daten, 4 );
*
*
**
** *
****Das habe ich soweit programmiert und kann es leider nicht Ausführen.
#include <stdio.h> void hist(int a[], int n) { // Allgemeine Funktion hist return hist(a, n); } int main(void) { int max = 5; int daten[] = {3, 5, 1, 2}; hist(daten, 4); if(max > daten[0]) { printf("\n"); } else { for(max; max <= daten[0]; max--) { printf("*\n"); } } /* int daten[] = {3, 5, 1, 2}; hist(daten, 4); printf("%i\n", daten); */ return 0; }
Wie muss ich bei der Aufgabe vorgehen und wo sind meine Fehler.
Ich bin für jede Hilfe dankbar...MfG
IB
-
imanxxl schrieb:
[code]
void hist(int a[], int n) { // Allgemeine Funktion histreturn hist(a, n);
}
zwei dinge erstmal, die nicht klappen können:
- die funktion ruft sich selbst auf, aber ohne ende.
- die funktion ist 'void', hat aber was im return-statement (nämlich sich selber, auch void), das sieht sehr strange aus und wird dem compiler wohl nicht schmecken.
-
Hi,
imanxxl schrieb:
hier sehen Sie ein Programmfragment und daneben die erwartete Ausgabe:
int daten[] = { 3, 5, 1, 2 };
hist( daten, 4 );
*
*
**
** *
****Die Ausgabe hätte ich jetzt nicht erwartet.
Eher sowas:
*
**
***
*****
oder andreasherum.
Gruß,
B.B.
-
^^ich würde als ausgabe sowas erwarten:
* eine 1 * eine 2 * eine 3 keine 4 * eine 5
-
-
Die Ausgabe sollte so aussehen:
PPP
PPP
**PP
**P*
****Ich habe jetzt P für Platzhalter eingesetzt, damit es nicht wieder umformatiert wird.
-
^^ok, gib für jede zahl eine reihe sternchen aus, dann dreh den bildschirm um 90 grad gegen den uhrzeigersinn. *fg*
-
;fricky schrieb:
^^ok, gib für jede zahl eine reihe sternchen aus, dann dreh den bildschirm um 90 grad gegen den uhrzeigersinn. *fg*
imanxxl schrieb:
Die Ausgabe sollte so aussehen:
PPP
PPP
**PP
**P*
****Ich habe jetzt P für Platzhalter eingesetzt, damit es nicht wieder umformatiert wird.
Na wie auch immer, dann schreib die Funktion so, das sie erstmal die Zahlen anzeigt. Irgendwelche Sternchen kannst du immmer noch zwischen bauen.