3 Datumsangaben sortieren mittels Switch

Rapper47

Mitglied
Hallo Community

Mein Problem wäre, ich muss in der Schule ein Programm schreiben welches 3 Datumsangaben mittels Switch sortiert.

Die Werte der Daten sollen in eigenen Variablen gespeichert werden:
Der Tag in day1, day2, day3.. für das jeweilige Datum, Der Monat in month1, month2, month3 und das Jahr in year1, year2, year3.

Jetzt weiß ich jedoch nicht wie ich hier die Switch einsetze. Mein Plan wäre gewesen zuerst die year-Variablen zu vergleichen, falls diese gleich wären die month und falls diese auch gleich sein würden die day.

Bitte nicht darüber wundern weil das vielleich für euch kein Problem ist, das ist erst mein erstes Schuljahr mit Java und ich bin noch nicht so der Profi.

Falls ihr eine Lösung hättet, welche mit Anfängermitteln zu lösen wäre, würde ich mich über eure Antwort freuen.

Achja, am Schluss sollen die Daten aufsteigend sortiert werden, was ich aber mit 3 Sortiervariablen lösen würde.

Bis dahin..

Rapper47
 
Bist du sicher, dass es mit switch passieren sollte? Es ist nicht unbedingt das erste, woran man beim sortieren denkt. Gehen würde das bestimmt, aber ob das sinnvoll ist...
 
Leider kann man dies nicht genau aus der Fragestellung herauslesen.

Wenn man sich das Programm ansieht, ist es aus 3 Teilen zusammengesetzt, oder?

Dem Vergleichen, dem Sortieren (was eig. mit dem Vergleichen zusammenhängt) und der Ausgabe.

Kann man hier irgendwo ein Switch gebrauchen?
Wie gesagt, wir haben noch nicht so viel gelernt, also allzu kompliziert kann es nicht werden.

Oder hängt es mit den Variablen zusammen, da diese ja auch mit 1 bis 3 beschrieben werden.

Würde mich über eine Antwort freuen

Bis dahin..

Rapper47
 
@ XHelp

Thema: Übung der Switch Anweisung


Erstellen sie ein Programm und eine Programmspezifikation für folgendes Problem.
Sie sollen 3 Datumsangaben in einzelne Variablen aufteilen. day für die Tage, month für den Monat und year für die Jahreszahl (int Variablen). Überprüfen sie welches der Daten das jüngste bzw. das älteste ist und geben sie diese aufsteigend aus.

Die Ausgabe soll so aussehen:

15.4.1996
23.12.1999
2.11.2003

Uns wurde extra gesagt wir sollen dazu Switch benutzen, nur mir ist der Zusammenhang nicht klar.

@Dax_ka

Ja, alle Werte haben einzelne Int-Variablen:

day1 = 15;
day2 = 23;
day3 = 2;
usw.

Danke für die Hilfe 🙂
 
Also ich habe in der FANUC Roboter Sprache Karlel etwas mit switch sortiert. Aber eher aus der Not heraus...
Also die Aufgabe war es den Wert von 9 Zylinder, welche sich unsortiert auf dem Feld A befanden, zu erfassen und in feld b einzusortieren. Ich hoffe man versteht den code... Sonst schreib ich es nochma in java


ROUTINE erfassen
BEGIN
FOR i=1 TO 9 DO
SELECT i OF
CASE(1): pos_temp=field_A[1]
CASE(2): pos_temp=field_A[2]
CASE(3): pos_temp=field_A[3]
CASE(4): pos_temp=field_A[4]
CASE(5): pos_temp=field_A[5]
CASE(6): pos_temp=field_A[6]
CASE(7): pos_temp=field_A[7]
CASE(8): pos_temp=field_A[8]
CASE(9): pos_temp=field_A[9]
ENDSELECT
WITH $SPEED=2000, $MOTYPE=LINEAR, $TERMTYPE=NODECEL MOVE NEAR pos_temp BY 70
pick(pos_temp)
--WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw1 NOWAIT
WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw1 NOWAIT
WITH $SPEED=200, $TERMTYPE=FINE MOVE TO pos_messp
--Messen
messwArray=GIN[1]
WRITE TPDISPLAY('Messwert: ',GIN[1],CR,CR)
DELAY 50
WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw1 NOWAIT
--WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw1
WITH $SPEED=2000, $TERMTYPE=COARSE MOVE NEAR pos_temp BY 110
drop(pos_temp)
ENDFOR
END erfassen


ROUTINE einsortieren
BEGIN
j=1
FOR x=0 TO 16 DO
FOR i=1 TO 9 DO
IF(messwarray = x) THEN
SELECT i OF
CASE(1): pos_temp=field_A[1]
CASE(2): pos_temp=field_A[2]
CASE(3): pos_temp=field_A[3]
CASE(4): pos_temp=field_A[4]
CASE(5): pos_temp=field_A[5]
CASE(6): pos_temp=field_A[6]
CASE(7): pos_temp=field_A[7]
CASE(8): pos_temp=field_A[8]
CASE(9): pos_temp=field_A[9]
ENDSELECT

WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE NEAR pos_temp BY 70
pick(pos_temp)
WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw2
pos_temp=field_B[j]
WITH $SPEED=2000, $TERMTYPE=COARSE MOVE NEAR pos_temp BY 150
drop(pos_temp)
WITH $SPEED=2000, $TERMTYPE=NODECEL MOVE TO pos_zw2
j=j+1
ENDIF
ENDFOR
ENDFOR
-- einsortieren ende
END einsortieren
 
Danke das du dir soviel Mühe machst um mir zu helfen, aber leider verstehe ich diesen Code nicht 🙁

Ich möchte auch nicht das du dir die Mühe machst jetzt alle in Java zu schreiben, ich werde nochmal bei meinem Profesosr nachfragen wie er das gemeint hatte, dennoch danke 🙂
 
Also switch lässt sich schon einbauen, nur das wäre "einfach mal um switch einzubauen". Deswegen frag lieber nach...
Könnte es vllt sein, dass der Prof eher was von "swap" und nicht "switch" gesagt hat?
 
Hab ihr schon mit mehr dimmensionalen arrays gearbeitet?
Java:
int [][] array = new int[2][3];
	  //wert             day               month             year  
	    array[0][0] = 0; array[0][1] = 23; array[0][2] = 12; array[0][3] = 1999;
	    array[1][0] = 0; array[1][1] = 15; array[1][2] = 4; array[1][3] = 1996;
	    array[2][0] = 0; array[2][1] = 2; array[2][2] = 11; array[2][3] = 2003;
	    
	    int wert=0;
	    for(int i=0;i<3000;i++){
		   for(int j=0;j<3;j++){
			if(array[i][3] == i){
			    switch (j) {
		            case 0:  array[0][0]=wert;wert++; break;
		            case 1:  array[1][0]=wert;wert++; break;
		            case 2:  array[2][0]=wert;wert++; break;
		            default: System.out.println("Invalid");break;
			    }
		         }
	            }
               }
 

Zurück
Oben