PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : EDV - Java



Haru-kun
07.01.2007, 12:00
Hi, ich hab Probleme mit nen paar Aufgaben in EDV, zum Thema Schleifen in Java. Würd mich freuen wenn mir jemand helfen kann.

Also hier die Aufgaben:

1. Es soll so of gewürfelt werden( mit (int)(Math.random()*6)+1 ) bis 2 mal 6 erreicht wird

2. Wie groß ist die Summe aller Zahlen von 1-100

3.Der Holländer Peter Minuit kaufte im Jahr 1725 von den Indianern die Halbinsel Manhatten für 24$. Wieviel müsste er im aktuellen Jahr bezahlen
wenn die Indianer den Preis pro Jahr um 3% erhöhr hätten ?

Freierfall
07.01.2007, 12:10
wie, 2 mal 6? du meinst, bis zwei mal hintereinander eine 6 geworfen wurde? oder insgesamt?

ich würds mit ner while schleife lösen,

die dann macht (kann java syntax ned grad gut, will dir nur das prinzip zeigen)

Variable2x6 = 0;
while Variable2x6 != 2
{
würfeln
if würfelwurf == 6
{ Variable2x6++ }
}

so in etwa müsste es funktionieren.

das zweite:

for (i = 1; i <= 100; i++) {
wert von i ausgeben
}

for i = 0; i <= (2007-1725); i++ {
variable_die_du_vorher_initialisierst_und_so = (selbe_variable) + 3/100*(selbe_variable)
}

so in etwa müsste das gehn.

imported_scribble
07.01.2007, 12:44
Beim ersten hat Freierfall schon den richtigen Ansatz, ich mach noch Java-Code draus ;)

int wuerfel = 0; // Variable für die Zufallszahl, vor der Schleife deklariert und initialisiert
int sechsen = 0; // Zähler, wieviele Sechsen schon gewürfelt wurden, beginne mit 0
while (sechsen < 2) // solange weniger als zwei mal eine Sechs gewürfelt wurde
{
wuerfel = (int)(Math.random()*6)+1; // würfeln
if (wuerfel == 6) // wenn Sechs gewürfelt
{
sechsen++; // erhöhe Zähler um eins
}
}Bei der zweiten Aufgabe ist der Ansatz leider falsch. Freierfalls Code würde die Zahlen von 1 bis 100 auflisten, nicht aufaddieren ;) Richtig wäre etwas wie
int summe = 0; // zu Beginn ist die Summe 0
for (int i=1; i<=100; i++) // durchlaufe alle Zahlen von 1 bis 100
{
summe = summe + i; // addiere die aktuelle Zahl zur bisherigen Summe
}Beim dritten würde ich keine Substraktion machen. Die Intention der Aufgabe ist mMn zu zeigen, daß eine for-Schleife nicht unbedingt bei 0 oder 1 starten muß :)
double preis = 24.0; // Anfangswert
for (int jahr = 1725; jahr <=2007; jahr++)
{
preis = preis + (preis * 3 / 100); // addiere 3/100 dazu
}
Bis dann,

scribble

Freierfall
07.01.2007, 13:35
oh, beim zweiten hab ich mich verlesen ^^

und beim dritten war ich zu faul, das im kopf auszurechnen, aber wenns bei o oder 1 anfängt, ists meist erheblich übersichtlicher etc.

Haru-kun
07.01.2007, 13:50
Hey, danke euch beiden :] Werds gleich mal aus probieren^^

Haru-kun
07.01.2007, 14:50
Hab leider nochmal ne Frage:

Wo muss ich bei den Aufgaben System.out.println(); hin setzen damit es mir das Ergebniss ausgibt ?

Und die erste Ausgabe hab ich euch leider falsch gestellt, sie hieß wirklich:

Es muss mit zwei Würfeln solange gewürfelt werden bis ein Doppelpasch erreit wurde (Würfel 1 =6 Würfel 2 =6)?

Sorry wenn ich euch Umstände mach -.-

Freierfall
07.01.2007, 15:03
das hab ich mir fast gedacht xD


ich weiß ned, wie weit ihr schons eid, eigentlich müsste hier was mit break hin


int wuerfel = 0; // Variable für die Zufallszahl, vor der Schleife deklariert und initialisiert
int wuerfel2 = 0; // Zähler, wieviele Sechsen schon gewürfelt wurden, beginne mit 0
while (wuerfel) // immer wahr, geht auch alles andere... vllt auch while () ?
{
wuerfel = (int)(Math.random()*6)+1; // würfeln
wuerfel2 = (int)(Math.random()*6)+1; // würfeln
if (wuerfel == 6) and (wuerfel2 == 6) // wenn beide 6 sind
break;
}
System.out.println("Hui, beide WÜrfel sind auf 6!");



das System.out.println() kommt immer wenn das ergebnis berechnet wurde, und ausgegeben werden soll.


z.b. bei der letzen:



double preis = 24.0; // Anfangswert
for (int jahr = 1725; jahr <=2007; jahr++)
{
preis = preis + (preis * 3 / 100); // addiere 3/100 dazu
}
System.out.println("Der Preis würde heute " + preis + "Euro lauten");


so in etwa.



http://www.galileocomputing.de/openbook/javainsel6/

lies das xD
gibt gute Noten ;P

Haru-kun
07.01.2007, 15:31
Danke, hat funktioniert^^ Und bei der ersten isch mir eingefallen dass mir des mit if machen mussten, weil "break" kennen wir noch nicht.

imported_scribble
07.01.2007, 18:24
break brauchst Du an der Stelle auch gar nicht :) Setz Dir vor der Schleife eine boolsche Variable auf false
boolean pasch = false;Die Schleife läuft dann, solange diese Variable false ist
while(!pasch)
{
...
}Wenn Du einen Pasch gewürfelt hast, setzt Du die Variable auf true, und die Schleife wird beendet
if (wuerfel == 6) and (wuerfel2 == 6) // wenn beide 6 sind
pasch = true; Das geht sogar noch ein Stück einfacher: Dein Vergleich bringt Dir ja direkt einen boolschen Wert. Also kannst Du den einfach in die Variable schreiben
pasch = (wuerfel == 6) && (wuerfel2 == 6);
Bis dann,

scribble

Freierfall
07.01.2007, 20:54
ich habs so geschrieben, wie ichs immer mache, d.h. eigentlich while-break für alles und jeden benutzen ;)

break ist nützlich, kannst das system.out.println aber auch anstelle des breaks setzen.

das untere ginge ja bis hin zu
while (wuerfel == 6) and (wuerfel2 == 6) {...}

Haru-kun
08.01.2007, 14:58
Des ganze hat sich nun erledigt, da wir heute morgen die Arbeit geschrieben haben, war gar nicht so schlecht^^ Danke nochmal euch beiden das ihr mir geholfen habt^^