if-Bedingungen in C und Java

Status
Nicht offen für weitere Antworten.
J

JavaAPP

Gast
Habe mich mal an ein Spiel (Zahlen-Springen) herangewagt, bei dem ich ein Problem habe.

Zum Spiel: Auf einem sechseckigen Spielbrett (Werte,siehe Quellcode) soll ein Spielstein so viele Felder in gerader Linie weiterspringen, wie die Zahl auf dem Feld, auf dem er steht, angibt. Begonnen wird auf dem Feld in der Mitte (3). Der Anfangszug darf in eine beliebige der sechs möglichen Richtungen erfolgen. Bei jedem weiteren Zug darf jeweils nur in derselben Richtung weitergehüpft werden - oder in eine rechts oder links benachbarte Richtung. Die Hüpferei ist erfolgreich zu Ende, wenn das Ausgangsfeld wieder erreicht wird.

Richtungen: NW,NO,W,O,SW;SO

Aufgabe: Schreibe ein ´Programm, welches einen erfolgreichen Hüpfweg sucht und ein Protokoll des Weges ausgibt.
Zum Finden eines Weges wird das Speilbrett systematisch durchsucht, und zwar rekursiv. Dabei wird jedoch eine Einschränkung beachtet: Ein Feld darf in einem Hüpfweg nicht zweimal von der gleichen Richtung kommend betreten werden. Damit werden möglicherweise endlose Rundläufe vermieden.


Code:
public class Matr  {
	

	static int  Brett [][] = {{2,4,1,5,4,0,0,0,0},  //Werte des Spielbretts
							  {1,4,5,2,3,2,0,0,0},
							  {2,1,3,3,2,5,2,0,0},
							  {2,1,3,2,1,2,2,4,0},
							  {4,3,4,3,3,4,2,3,2},
							  {0,2,2,1,3,2,2,1,2},
							  {0,0,2,2,2,3,4,3,2},
							  {0,0,0,1,3,1,2,1,4},
							  {0,0,0,0,2,1,6,3,2}
							  
							  };
	
	
	
	public static abstract class  Directions
	{
		public static final int O =  0;
		public static final int SO = 1;
		public static final int SW = 2;
		public static final int W =  3;
		public static final int NW = 4;
		public static final int NO = 5;
	}
	
	
		
		public static final String O = "O"; 
		public static final String SO = "SO"; 
		public static final String SW = "SW"; 
		public static final String W = "W"; 
		public static final String NW = "NW";
		public static final String NO = "NO";  
		
	
	
	public static final String bezeichner[] = {O, SO,SW,W,NW,NO};
	
	
	
	
	

	int []B = new int [100];
	
	static int bewegung [][] = {{1,0},{1,1},{0,1},{-1,0},{-1,-1},{0,-1}};  // dx und dy der sechs Bewegungsrichtungen
	
	static int weg [][]  = new int [100][2];    // speichert den gegangenen Weg
	static int besucht [][]  = new int [9][9];	// benötigt zur Markierung besuchter Felder
	
	
	public static  void suche (int x, int y , int ausrichtung, int tiefe)
	{
		
		int z =0;
		int newx=0;
		int newy=0;
		
		if (x==4 && y==4 && tiefe!=0)
		{
			
			
			for (z=0; z < tiefe; z++)
			
			{
				
				System.out.println (weg[z][1]);
			    System.out.println ( bezeichner [weg[z][0]] );
				System.out.println (z < tiefe -1 ?" ," :"\n"); 
				
				
			}
			
			
			
		}
		// Fortsetzung der Suche in alle drei möglichen Richtungen
		for (z= (ausrichtung + 5)%6;
			z!=(ausrichtung +2)%6;
		z= (z + 1)%6) ;
		
		
		{
			weg [tiefe][0]=z;	// Speichern von Ausrichtung und 
			weg [tiefe][1]= Brett [y][x];  // Sprungweite für spätere Ausgabe
			
			newx = x + Brett [y][x]*bewegung[z][0];	         //neue x-Koordinate	
			newy = y + Brett [y][x]*bewegung[z][1];			 //neue y-Koordinate
			
			
			//Prüfung, ob die neue Position innerhalb des Bretts leigt
			// unf noch nicht in gleiche Richtung gegangen worden ist:
			
			if ( newx >=0 && newy >=0 && newx<=8 && newy <=8  )
			{
				if (Brett [newy] [newx] != (besucht [newy] [newx]) )
				{
					if (Brett [newy] [newx] != 1<<z)
					{
						besucht [newy][newx] ^=1<<z;	//Markierung setzen
						suche (newx, newy,z,tiefe+1);		//rekursiver Aufruf
						besucht [newy][newx] ^=1<<z;	//Markierung entfernen
						
						
					}
					
					
				}
				
				
				
			}
			
			
		}
		
		
		
		
		
		
	}
	
	
	public static void main(String[] args) {
		
		suche (4,4,Directions.O,0);		//Aufruf für die Startrichtung NO,O,SO
		suche (4,4,Directions.W,0);		//und zweiter Aufruf für NW,W,SW
		
		
		
		
		
			}
}
 
J

JavaAPP

Gast
Ich hatte den C - Quellcode vorliegen, und da wurden einige Sachen anders gemacht.




Code:
In C sieht das os aus:

if (newx >= 0 && newy >=0 && newx <= 8 && newy <=8 &&
            brett [newy] [newx] && ! (besucht [newy] [newx] & 1<<z))

{

      ...

}


Und so ahbe ich das in Java umgesetzt:

Code:
if ( newx >=0 && newy >=0 && newx<=8 && newy <=8  ) 
         { 
            if (Brett [newy] [newx] != (besucht [newy] [newx]) ) 
            { 
               if (Brett [newy] [newx] != 1<<z) 
               { 

                    ...


                }
Vielleicht leigt hier der Fehler.


Im C Quellcode steht in der Main-Methode noch

Code:
memset (besucht,0,sizeof (besucht));

Das habe ich in meiner Main-Methode weggelassen.
 

Griffin

Bekanntes Mitglied
Ich hab leider das eigentlich Probelm nicht verstanden? Läuft das Programm jetzt durch die veränderte IF-Abfrage nicht, oder wie soll dir geholfen werden?!?
 
J

JavaAPP

Gast
Das Programm gibt nur Unsinn aus:


Code:
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O
 ,
3
SW
 ,
3
NW
 ,
3
O


3
SW
 ,
3
NW
 ,
3
O
 ,
3


Bei dem Code in meinem zweitem Post bin ich mir nicht sicher ob das von C in Java so umgesetzt wird.

Und wie ich das in Java umsetze weiß ich auch nicht

Code:
memset (besucht,0,sizeof (besucht));
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
T Mehrere if bedingungen ohne & Java Basics - Anfänger-Themen 2
B If Bedingungen kombinieren? Java Basics - Anfänger-Themen 5
B Semaphoren in Abhängigkeit an Bedingungen richtig setzen Java Basics - Anfänger-Themen 3
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
A Bedingungen für Parameterwerte Java Basics - Anfänger-Themen 7
J Unit Testing mit vielen Bedingungen - Best Practice? Java Basics - Anfänger-Themen 9
S mehrere If Bedingungen Java Basics - Anfänger-Themen 5
U Schleife mit mehreren Bedingungen ? Java Basics - Anfänger-Themen 29
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
E Bedingungen abkürzen Java Basics - Anfänger-Themen 13
S Erste Schritte Begrüßung mit if-Bedingungen Java Basics - Anfänger-Themen 7
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
G While schleife mit 2 Bedingungen geht nicht! Java Basics - Anfänger-Themen 15
H Bedingungen miteinander verknüpfen Java Basics - Anfänger-Themen 2
J if Bedingungen verknüpfen Java Basics - Anfänger-Themen 8
K Bedingungen else Java Basics - Anfänger-Themen 7
M Variablen Switch Bedingungen Java Basics - Anfänger-Themen 12
W for Schleife mit zwei bedingungen ? Java Basics - Anfänger-Themen 6
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
W Was tun die Operatoren ? und : (Bedingungen) Java Basics - Anfänger-Themen 15
T Scanner für char-wert/ if mit 2 bedingungen? Java Basics - Anfänger-Themen 5
Q If-Abfrage mit mehreren Bedingungen Java Basics - Anfänger-Themen 6
reno Bedingungen in Konfigurationsdatei Java Basics - Anfänger-Themen 2
K Bedingungen mit "und" trennen ? Java Basics - Anfänger-Themen 2
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
M Kann man Bedingungen auch ohne Schleifen prüfen? Java Basics - Anfänger-Themen 5
C switch-case mit bedingungen? Java Basics - Anfänger-Themen 5
NightmareVirus 2 Abbruch Bedingungen in einer for-schleife Java Basics - Anfänger-Themen 2
G Schleifen mit mehreren Bedingungen Java Basics - Anfänger-Themen 4
G Mehrere If Bedingungen Java Basics - Anfänger-Themen 11
A Mehrere if Bedingungen untereinander? Java Basics - Anfänger-Themen 4
G if-Abfrage mit zwei Bedingungen Java Basics - Anfänger-Themen 6
C zwei Bedingungen in einer if Anweisung Java Basics - Anfänger-Themen 1
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben