Hallo zusammen,
ich befinde mich gerade in der Vorbereitung zur Klausur.
Eine Aufgabe an der ich schon einige Stunden sitze, bei der ich einfach nicht weiter komme.
Vielleicht könnte mir einer auf die Sprünge helfen.
Weiter unten mein bisheriger Code:
Hier die Aufgabe:
Geben Sie ein Programm an, das zu einem nichtleeren Feld mit int-Werten ein Histogramm in einer vorgegebenen Form
auf dem Bildschirm ausgibt. Die Werte des Feldes sind alles int-Werte zwischen 0 und 5, die das Programm in der Kommandozeile
übergeben bekommt (siehe Beispielaufruf unten). Aus der Anzahl der Werte ergibt sich auch die Feldlänge.
Ein Histogramm gibt an, wie oft Werte in dem Datenfeld vorkommen. Die Ausgabe soll so sein, dass es zu jedem möglichen
Wert eine Ausgabezeile gibt, von der Zeile für den Wert 0 bis zur Zeile für den Wert 5 (siehe Beispiele unten).
Zuerst wird der Wert selber ausgegeben, direkt gefolgt von einem Doppelpunkt. Danach kommt ein Leerzeichen, dann
eine bestimmte Anzahl an Sternen, dann ein Leerzeichen und dann in Klammern durch Komma getrennt die Anzahl der
Vorkommen dieses Wertes und die Anzahl der Sternchen.
Die Anzahl an Sternchen nstern zu einem Wert ergibt sich wie folgt. Zur höchsten ermittelten Wertanzahl nmax werden
immer 10 Sternchen ausgegeben. Die Anzahl an Sternchen für alle anderen Werte ergibt sich proportional zu dem Referenzverhältnis
nmax zu 10. Wenn also zum Beispiel nmax = 4 ist, so wird für eine Anzahl von 2 dann 5 Sternchen
ausgegeben. Ermittelt man auf diese Weise eine nichtganzzahlige Sternchenanzahl, so wird diese Anzahl gerundet (siehe
dazu die Klasse Math). Für nichtvorkommende Werte (die Anzahl ist also 0) wird kein Sternchen angezeigt.
Überlegen Sie sich zuerst anhand eines überschaubaren Beispiels, wie Sie die Gesamtaufgabe in Teilaufgaben zerlegen
können und anschließend, wie Sie die Teilaufgaben in Java lösen können. Setzen Sie sinnvoll Methoden für Teillösungen
ein.
Beispiele:
• Für das Feld 1 1 1 2 würden folgende Sternchen ausgegeben (in Zahlen dahinter die Anzahl der aufgetretenen
Werte und die Anzahl an Sternchen):
> java Histogramm 1 1 1 2
0: (0,0)
1: ********** (3,10)
2: *** (1,3)
3: (0,0)
4: (0,0)
5: (0,0)
ich komm beim letzten Teil, der Ausgabe der Sterne einfach nicht auf die Lösung
vielen Dank im voraus!
ich befinde mich gerade in der Vorbereitung zur Klausur.
Eine Aufgabe an der ich schon einige Stunden sitze, bei der ich einfach nicht weiter komme.
Vielleicht könnte mir einer auf die Sprünge helfen.
Weiter unten mein bisheriger Code:
Hier die Aufgabe:
Geben Sie ein Programm an, das zu einem nichtleeren Feld mit int-Werten ein Histogramm in einer vorgegebenen Form
auf dem Bildschirm ausgibt. Die Werte des Feldes sind alles int-Werte zwischen 0 und 5, die das Programm in der Kommandozeile
übergeben bekommt (siehe Beispielaufruf unten). Aus der Anzahl der Werte ergibt sich auch die Feldlänge.
Ein Histogramm gibt an, wie oft Werte in dem Datenfeld vorkommen. Die Ausgabe soll so sein, dass es zu jedem möglichen
Wert eine Ausgabezeile gibt, von der Zeile für den Wert 0 bis zur Zeile für den Wert 5 (siehe Beispiele unten).
Zuerst wird der Wert selber ausgegeben, direkt gefolgt von einem Doppelpunkt. Danach kommt ein Leerzeichen, dann
eine bestimmte Anzahl an Sternen, dann ein Leerzeichen und dann in Klammern durch Komma getrennt die Anzahl der
Vorkommen dieses Wertes und die Anzahl der Sternchen.
Die Anzahl an Sternchen nstern zu einem Wert ergibt sich wie folgt. Zur höchsten ermittelten Wertanzahl nmax werden
immer 10 Sternchen ausgegeben. Die Anzahl an Sternchen für alle anderen Werte ergibt sich proportional zu dem Referenzverhältnis
nmax zu 10. Wenn also zum Beispiel nmax = 4 ist, so wird für eine Anzahl von 2 dann 5 Sternchen
ausgegeben. Ermittelt man auf diese Weise eine nichtganzzahlige Sternchenanzahl, so wird diese Anzahl gerundet (siehe
dazu die Klasse Math). Für nichtvorkommende Werte (die Anzahl ist also 0) wird kein Sternchen angezeigt.
Überlegen Sie sich zuerst anhand eines überschaubaren Beispiels, wie Sie die Gesamtaufgabe in Teilaufgaben zerlegen
können und anschließend, wie Sie die Teilaufgaben in Java lösen können. Setzen Sie sinnvoll Methoden für Teillösungen
ein.
Beispiele:
• Für das Feld 1 1 1 2 würden folgende Sternchen ausgegeben (in Zahlen dahinter die Anzahl der aufgetretenen
Werte und die Anzahl an Sternchen):
> java Histogramm 1 1 1 2
0: (0,0)
1: ********** (3,10)
2: *** (1,3)
3: (0,0)
4: (0,0)
5: (0,0)
Java:
import java.util.*;
public class Aufg4Ueb9 {
public static int[] fuellen(String s) {
int l = s.length();
int[] a = new int[l];
for (int i = 0; i < a.length; i++) {
a[i] = Integer.parseInt(s.valueOf(s.substring(i, i + 1)));
}
zeahlen(a, l);
return a;
}
public static void zeahlen(int[] a, int c) {
int count = 0;
int[] b = new int[6];
// füllt das zweite Array von 1-5
for (int i = 0; i < b.length; i++) {
b[i] = i;
}
// guckt nach ob es gleich gibt und schreibt
for (int y = 0; y < b.length; y++) {
int x = b[y];
for (int j = 0; j < a.length; j++) {
if (a[j] == x) {
count++;
}
}
b[y] = count;
count = 0;
}
sterne(b);
}
public static void sterne(int[] a) {
// zählen wo die 3 größten sind und dann sterne ausgeben
int[][] c = new int[a.length][a.length];
int nmax = 0;
// nmax suchen
for (int i = 0; i < a.length; i++) {
if (a[i] > nmax) {
nmax = a[i];
}
}
for (int i = 0; i < a.length; i++) {
System.out.print(i + ":\t");
System.out.println(a[i]);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String s = sc.next();
sc.close();
fuellen(s);
}
}
ich komm beim letzten Teil, der Ausgabe der Sterne einfach nicht auf die Lösung
vielen Dank im voraus!