Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
04.01.13, 19:05
|
#1
|
Eskapistin
Registriert seit: Apr 2009
Beiträge: 2.745
Bedankt: 3.573
|
Hilfe bei zwei Java-Aufgäbchen (Schleifen, Arrays)
Hallo liebe Programmierer,
ich habe nun in der Weihnachtszeit einen ganzen Haufen Übungsaufgaben aus meinem Programmierkurs abgearbeitet. Alles mehr oder weniger simple Aufgaben rund um bedingte Anweisungen, Schleifen und Arrays.
Bei zweien fällt mir leider GAR NICHTS ein, wie die zu lösen sein könnten.
Daher frage ich euch mal kurzerhand um Rat.
Das erste Übel:
Zitat:
Schreiben Sie in der Klasse blubbs eine Methode blablabla(), welche in einer Schleife die Zahlen von 1 bis 10 durchläuft und danach wieder bis 1 rückwärts läuft.
Die Zahlen sollen, nebeneinander durch Komma getrennt ausgegeben werden.
Vermeiden Sie dabei den eventuell auftretenden Schönheitsfehler, dass hinter der letzten oder vor der ersten Zahl noch ein Komma steht.
Die Ausgabe sähe etwa so aus: 1, 2, 3, . . . , 10, 9, 8, . . . 2, 1
Bedingung: Es darf nur eine Schleife benutzt werden.
|
Meine Lösung, die jedoch zwei Schleifen enthält und die den "Schönheitsfehler" vielleicht auch nicht auf besonders elegante Weise vermeidet:
Code:
public void zahlenAusgabeV1()
{
for(int i = 1; i<=10; i++)
{
System.out.print(i + ", ");
if(i==10)
{
for(int j = 9; j>1; j--)
{
System.out.print(j + ", ");
}
}
}
System.out.print(1);
}
Was schlagt ihr vor?
Und das andere Übel:
Zitat:
Erstellen Sie eine Methode blablabla(), welche alle im Array gespeicherten Zahlen mit einem Faktor multipliziert, der so gewählt wird, dass danach die Summe der Elemente den Wert 1 ergibt.
|
Da fällt mir rein gar nichts ein. Ich hab z.B. ein Array
double[] zahlen = {5, 9, 42, 666, 0};
Ich weiß vom mathematisch her gar nicht, wie das gehen soll
|
|
|
04.01.13, 20:43
|
#2
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
@uebel_1
PHP-Code:
int x = 1; int iIncr = +1; while(x>0) { System.out.print(x); x += iIncr; if (x>0) System.out.print(", "); if (x>9) { // x = 10; iIncr = -1; } }
|
|
|
04.01.13, 20:45
|
#3
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
@uebel_2
Die erste Zahl x ungleich Null multipiziere mit 1/x. Alle anderen Zahlen multipliziere mit 0.
|
|
|
04.01.13, 21:12
|
#4
|
Eskapistin
Registriert seit: Apr 2009
Beiträge: 2.745
Bedankt: 3.573
|
Vielen Dank schonmal
@uebel_1 
Warum schreibst du ein '+' bei 'int iIncr = +1'
Hat das eine Bedeutung? Also z.B. 'x+=1' heißt 'x=x+1' ...das ist mir klar. Aber x=+1 ???
Ich hab den Code jetzt nicht gestestet, bin ihn nur mal mit meinem Super-Hirn durchgegangen und was ich nicht verstehe:
die zweite if-Anweisung wird doch auf jeden Fall true beim ersten Durchlauf. Und da sagst du x ist 10.
Dann prüft er wieder die Bedingung in der Schleife, x=10 ist >0 = true und dann macht er doch System.out.print(10);
Das führt doch nicht zum erwünschten Ausgabe auf der Konsole
Was die zweite Aufgabe betrifft schaue ich morgen nochmal hier rein. Kann mich nicht mehr konzentrieren. Freitag abends programmieren macht niemandem Spaß^^
|
|
|
04.01.13, 21:23
|
#5
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Zitat:
Zitat von mona_lisa
Warum schreibst du ein '+' bei 'int iIncr = +1'
Hat das eine Bedeutung?
|
Das hat keine Bedeutung, soll nur den Gegensatz zu iIncr=-1 verdeutlichen.
Zitat:
die zweite if-Anweisung wird doch auf jeden Fall true. Und da sagst du x ist 10.
Dann prüft er wieder die Bedingung in der Schleife, 10 ist >0 = true und dann macht er doch System.out.print(10);
????
|
Das x=10 kannst du weglassen
Zitat:
Freitag abends programmieren macht niemandem Spaß^^
|
Wo du recht hast, hast du recht ...
|
|
|
04.01.13, 22:10
|
#6
|
Eskapistin
Registriert seit: Apr 2009
Beiträge: 2.745
Bedankt: 3.573
|
Das kann aber irgendwie immer noch nicht ganz korrekt funktionieren^^ ( .... ODER?)
Ich gehe mal gedanklich durch:
x ist 1 und iIncr ist 1
Schleifenbedingung 1>0 ist erfüllt
Er druckt 1 aus
x=1 wird zu x=2
Er druckt ein Komma
iIncr=1 wird zu iIncr=-1
ENDE 1. Durchlauf
x ist 2 und iIncr ist -1
Schleifenbedingung 2>0 ist erfüllt
Er druckt 2
x=2 wird wieder zu x=1
Drucke Komma
iIncr=-1 bleibt iIncr=-1
Irgendwie geht das nicht ganz auf, oder?
Ist mir jedenfalls immer noch ein Rätsel, wie man das mit einer einzigen Schleife lösen soll 
So, nun endgültig Schluss für heute >.<
|
|
|
04.01.13, 20:56
|
#7
|
Echter Freak
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
|
Vorher sollte man noch prüfen ob die 1. Zahl nicht 0 ist.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
|
|
|
04.01.13, 21:02
|
#8
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
Zitat:
Zitat von spartan-b292
Vorher sollte man noch prüfen ob die 1. Zahl nicht 0 ist.
|
Deswegen steht auch "die erste Zahl x ungleich Null" (Null=0).
|
|
|
04.01.13, 21:05
|
#9
|
Echter Freak
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.856
Bedankt: 1.701
|
Sorry. Das hab ich übersehn.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
|
|
|
04.01.13, 21:08
|
#10
|
bla
Registriert seit: Mar 2010
Beiträge: 312
Bedankt: 302
|
@uebel_2.2
Du könntest auch jede Zahl xn ungleich Null mit
k = 1/(xn * zahlen.length)
multiplizieren.
EDIT: Funktioniert nur ohne Nullen bzw eigenes length ohne Nullen berechnen.
|
|
|
05.01.13, 13:55
|
#11
|
Banned
Registriert seit: Mar 2012
Beiträge: 337
Bedankt: 93
|
Probieren geht über studieren!
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:42 Uhr.
().
|