# Hamsterprogramm



## candybabe (2. Mai 2009)

Hallo, ich muss ein Hamsterprogramm programmiereb, komme aber einfach nicht weiter. Ich verstehe allgemein nicht was ich machen muss und wie man das mit den variablen und java handeln muss. 
ich hoffe ihr könnt mir  helfen. danke   
_______________ 

Der Hamster hat eine ihm unbekannte Zahl Körner im Maul. 
Er soll feststellen, wie viele Körner das sind und dann auf die Felder einer Spalte eine Anzahl Körner legen, die der entsprechenden Stelle der Zahl entspricht. 
Hat er zB 523 Körner im Maul, so sollte er in der 1. Spalte (Hunderterstelle) 5, in der 2. Spalte (Zehnerstelle) 2 und in der 3. Spalte (Einerstelle) 3 Körner untereinander legen. 
Das Programm soll für beliebige ein, -zwei- oder dreistelligen Zahlen funktionieren. 

Das feld besteht aus 3 Spalten und 10 zeilen, der Hamster befindet sich am Anfang in der oberen, linken Ecke mit Blcikrichtung Ost. In der 1. Spalte liegen also die Körner, die der Hunderterstelle entsprechen, in der 2. die der Zehnerstelle und in der 3., die der Einerstelle. 
Bei wenigen Körnern sind also nicht alle Spalten belegt. 

GRUNDIDEE 

Zunächst muss der Hamster ermitteln, wie viele Körner er im Maul trägt. Dazu kann er, solange Körner im Maul sind, diese herauslegen und dabei mit einer Variablen die Körner zählen. 
Dazu muss man die neue Variable am Programmanfang einfügen und festlegen 
zB. int a = 0; 
Nach jedem abgelegtem Korn wird dann zu a eine 1(eins) addiert und damit die Körnerzahl gezählt 
zB a = a+1; 
bedeutet, dass das neue a gleich dem alten a+1 ist. 
Dann nimmt der Hamster die Körner wieder auf. Nun muss er sich mit Mathematik beschäftigen, denn er muss die Ziffern an der Hunderter/Zehner/Einersetlle berechnen. 
Beispiel: 523/100= 5 Rest 23 523-5*100=23 
23/10= 2 Rest 3 23-2*10=3 
Das Zeichen für die ganzzahlige Division ist Java. 
Also: erg = 523/100 liefert Java den Wert 5, der in der variablen erf gespeichert ist. 
das Zeichen zur Ermittelung des Restes bei der ganzzahligen Division ist %. 
Also: rest = 523%100 liefert in Java den Wert 23, der in der Variablen rest gespeichert ist, 
Man muss darauf achten, dass man diese Variablen am Programmanfang festlegt: 
int erg; int rest; 
Wenn der Hamster mehr als 99 Körner im Maul hat, beginnt er also mit der Division druch 100. 
Hat er mehr als 9, aber weniger als 100 Körner im Maul, beginnt er mit der Division durch 10, sonst braucht er nicht zu rechnen. 
Mehr als 9 UND weniger als 100 -> x>9&&x<100 
________________________


----------



## DosCoder (2. Mai 2009)

candybabe hat gesagt.:


> wie man das mit den variablen und java handeln muss


Hi, dir ist schon klar, das du da ins falsche Forum gerutscht bist?
Außerdem erkärst du UNS, wie Java funtioniert, hast aber gleichzeitig eine Frage?
So wie du dich mit Java auszukennen scheinst, hast du doch sicher schon ein bisschen Code geschrieben. Kannst du den mal posten, denn (fast) keiner hat hier Lust am Samstagabend noch ein ganzes Hamsterprgamm zu schreiben.
Ciao
DosCoder


----------



## port29 (3. Mai 2009)

Und was genau ist jetzt deine Frage?

Die Grundfunktionen könnte man in einem 5min / ca. 7 Zeilen Programm schreiben...


----------



## candybabe (4. Mai 2009)

mein programm das ich erstellt habe, lautet

_____

void main() {
int a=0;
int erg, rest;
while(!maulLeer()){
gib();
a=a+1;
}
while(kornDa())
nimm();
erg=a/100;
rest=a%100;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();linksUm();
while(vornFrei()){
vor(); 
}
linksUm();linksUm();linksUm();
vor();

erg=rest/10;
rest=rest%10;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();linksUm();
while(vornFrei()){
vor(); 
}
linksUm();linksUm();linksUm();
vor();

erg=rest;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();
linksUm();
while(vornFrei()){
vor();}
linksUm();
linksUm();
linksUm();
}
___


mein programm das ich erstellt habe, lautet

_____

void main() {
int a=0;
int erg, rest;
while(!maulLeer()){
gib();
a=a+1;
}
while(kornDa())
nimm();
erg=a/100;
rest=a%100;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();linksUm();
while(vornFrei()){
vor(); 
}
linksUm();linksUm();linksUm();
vor();

erg=rest/10;
rest=rest%10;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();linksUm();
while(vornFrei()){
vor(); 
}
linksUm();linksUm();linksUm();
vor();

erg=rest;

linksUm();linksUm();linksUm();
for(int i=0;i<erg;i++){
gib();
vor();
}
linksUm();
linksUm();
while(vornFrei()){
vor();}
linksUm();
linksUm();
linksUm();
}
___

ich habe das mit den variablen jetzt schon verstanden, nun möchte ich wissen, wie ich  x>9&&x<100 im programm unterbringen soll, denn die aufgabenstellung lautete ja :
Wenn der Hamster mehr als 99 Körner im Maul hat, beginnt er also mit der Division druch 100.
Hat er mehr als 9, aber weniger als 100 Körner im Maul, beginnt er mit der Division durch 10, sonst braucht er nicht zu rechnen.
Mehr als 9 UND weniger als 100 -> x>9&&x<100


----------



## port29 (4. Mai 2009)

candybabe hat gesagt.:


> Hat er mehr als 9, aber weniger als 100 Körner im Maul, beginnt er mit der Division durch 10, sonst braucht er nicht zu rechnen.
> Mehr als 9 UND weniger als 100 -> x>9&&x<100



Sorry, habe gerade wenig Zeit, werde mich also kurz halten müssen. Zunächst einmal: Es gibt im Forum eine Quellcode Funktion. So kann man deinen Code nicht lesen.

Es ist doch eigentlich egal, wo du genau die Abfragen in dem Programm hinsetzt, solange die funktionieren. Ich (als Programmierer) bin mir allerdings überhaupt nicht sicher, ob du das überhaupt brauchst. Ich würde einfach das Programm mit der 100er Teilung laufen lassen. Wenn da keine Hunderter drin sind, dann hast du eben als Ergebnis 0 hunderter


----------

