Brauche dringend Hilfe !!!!
-
was machste, wenn sich aus den 8 punkten auf einmal 6 rechtecke bilden lassen?
-
Dank dir erst für deine Antwort!!
Verstehe irgendwie nicht wieso die Geraden L1 und L2 nicht parallel zueinander sein können?
Und was ist wenn, wie volkard schon sagte von paar Koordinaten sich mehr als ein Rechteck bilden lassen kann???
-
Bonafide schrieb:
Verstehe irgendwie nicht wieso die Geraden L1 und L2 nicht parallel zueinander sein können?
L1 und L2 gehen beide durch den Punkt (x1/y1) - wenn die tatsächlich parallel sind, hast du bestimmt kein Rechteck (höchstens ein entartetes mit einer Höhe von 0).
Und was ist wenn, wie volkard schon sagte von paar Koordinaten sich mehr als ein Rechteck bilden lassen kann???
Aus vier Punkten kannst du maximal 1 Rechteck zusammenbauen. Und wenn du mehr Punkte hast, mußt du nacheinander alle Teilmengen davon untersuchen.
Alternativ: du probierst nacheinander alle Geraden durch und suchst jeweils eine Folge von Geraden, die (a) senkrecht aufeinander stehen und (b) bei denen der Anfangspunkt einer Geraden gleich dem Endpunkt der jeweils nächsten ist. (Anmerkung: die Bedingung, daß die Geraden parallel sind, ergibt sich daraus von alleine)
-
Verstehe, das hat mich schon weitergebracht, thanks!
Hätte noch ne Frage:
Was muss ich schreiben, damit der pc sich merken kann, dass z.B. zwei Geraden senkrecht zueinander sind, also wenn ich schreibe:
if(L1*L1==-1)//Bedinung wenn die gerade L1 senkrecht zu der gerade L2 ist
{ //Was kann ich hier schreiben, das ich später bei einer anderer if-Bedinung
//benutzen kann
}
else {//nichts machen
}
-
Du kannst die Auswertungen der drei Fälle direkt in die jeweiligen if()-Blöcke unterbringen:
if(L1*L2 == -1) { // Fall 2 return L2*L6==-1 && L6*L5==-1 && L5*L1==-1; } else if(L1*L3 == -1) { // Fall 1 return L3*L6==-1 && L6*L4==-1 && L4*L1==-1; } else return false;P1 -L1- P2 | L2 | L3 \/ L4 | L5 | P4 -L6- P3
-
Verstehe nicht wieso du
return L2*L6==-1 && L6*L5==-1 && L5L1==-1;
schreibst, meine wenn L1L2=-1, also Gerdae L1 mit Gerade L2 senkrecht sind, dann muss es nicht gleich heissen dass die Gerade L2 mit der Gerade L6 auch senkrecht ist. Die Gerade L1 kann sich ja auch bei z.B. 30° mit der Gerade L6 schneiden. Ich sollte das eigentlich checken ob das stimmt, oder nicht????
-
Bonafide schrieb:
Verstehe nicht wieso du
return L2*L6==-1 && L6*L5==-1 && L5L1==-1;
schreibst, meine wenn L1L2=-1, also Gerdae L1 mit Gerade L2 senkrecht sind, dann muss es nicht gleich heissen dass die Gerade L2 mit der Gerade L6 auch senkrecht ist. Die Gerade L1 kann sich ja auch bei z.B. 30° mit der Gerade L6 schneiden. Ich sollte das eigentlich checken ob das stimmt, oder nicht????Ist es denn noch ein Rechteck, wenn die benachbarten Geraden einen Winkel von 30° einschließen? In diesem if-Block weiß ich, daß L1 und L2 senkrecht stehen, also besteht ein potentielles Rechteck aus L1,L2,L6,L5 (in dieser Reihenfolge nebeneinander) und ich muß nur doch überprüfen, ob an den übrigen drei Ecken auch ein rechter Winkel ist (wenn nicht, war's wohl doch kein Rechteck).
-
CStoll schrieb:
...und ich muß nur doch überprüfen, ob an den übrigen drei Ecken auch ein rechter Winkel ist (wenn nicht, war's wohl doch kein Rechteck).
Ahh du meinst ich soll erst
if(L1*L2 == -1) { // Fall 2 return L2*L6==-1 && L6*L5==-1 && L5*L1==-1; } else if(L1*L3 == -1) { // Fall 1 return L3*L6==-1 && L6*L4==-1 && L4*L1==-1; } else return false;schreiben und dann mit einer weiteren if-Anweisung weitermachen, wie:
if(L2*L6==-1 && L6*L5==-1 && L5*L1==-1){ printf("Die Geraden L1,L2,L5 und L6 bilden ein Rechteck"); } else if(return L3*L6==-1 && L6*L4==-1 && L4*L1==-1){ printf("Die Geraden L1,L3,L4 und L6 bilden ein Rechteck"); } else{ printf("Von den Geraden L1,L2,L3,L4,L5 und L6 können kein Rechteck bilden"); }Ist es so richtig, oder geht es garnicht???

-
Nein, der Ausdruck
L2*L6==-1 && L6*L5==-1 && L5*L1==-1überprüft die übrigen drei Ecken des Vierecks. Das heißt, die gesamte if-else-Kaskade liefert genau dann true zurück, wenn deine vier Punkte ein Rechteck bilden - das kannst du nun (zusammen mit der Bestimmung der Li's) in eine Funktion packen und nutzen. (wenn du Fall 1 und 2 noch unterschiedlich behandeln willst, sollte diese Sonderbehandlung in den jeweiligen if-Blöcken passieren)
-
Die Bedingungen die Du dort nochmal in ifs gepackt hast steht doch schon lange dort. In "Fall 2" z.B. wird true zurückgegeben wenn ein Rechteck gebildet wird, sonst false.
-
DANKE EUCH!!!!!
-
Sorry, dass ich euch weiterhin störe aber...
Also hab das alles gemacht, was du meintest, aber irgendwie schliesst sich immer das fenster nach return, was kann ich machen, damit es sich nicht schliesst???
-
Hallo
Du könntest mal in die Konsolen FAQ schauen und dort beim Thema schließen verhinder vorbeischauen.
chrische
-
Und wo finde ich die???
-
Wir haben hier mehrere Foren, unter anderem "DOS und Win32-Konsole". Direkt neben dem Namen des Forums steht "FAQ/Archiv". Klick mal drauf.
-
Also habe da nachgeschaut und irgendwie nix gefunden, was mir weiterhalf!
Habe auch das http://c-plusplus.net/forum/viewtopic-var-t-is-111042.html gelesen und das hat mich auch nicht weitergebracht.Also helft mit bitte bei disem Code:
if(l1*l2==-1){ return l2*l6==-1 && l6*l5==-1 && l5*l1==-1; printf("Die Geraden l1,l2,l5 und l6 bilden ein Rechteck"); } else if(l2*l3==-1){ return l3*l6==-1 && l6*l4==-1 && l4*l1==-1 ; getchar(); printf("Die Geraden l2,l3,l4 und l6 bilden ein Rechteck"); } else { return false; printf("Die von den Koordinaten ergebenen Geraden bilden kein Rechteck"); }Was kann ich machen damit sich das Fenster nicht schließt und ich z.B. eine von den drei printf() sehen kann????
Helft mir PLEASE

-
Hallo
War meine Erklärung so schlecht? das nächste Mal suche ich gleich den Link raus. (ich bin mir nicht sicher, ob das Ironie ist oder nicht)
chrische
-
Nein man deine Erklärung war nicht so schlecht, hab das ja auch am Ende gefunden.
Bin neue deshalb kenne ich mich nicht so gut aus!
-
Bonafide schrieb:
Was kann ich machen damit sich das Fenster nicht schließt und ich z.B. eine von den drei printf() sehen kann????
Helft mir PLEASE

... int stop; cin >> stop;Ansonsten, Besorg Dir VS 2005 Express als IDE - da schliesst sich das Fenster nicht (im Debug-Modus) .
:p
-
hehe schrieb:
... int stop; cin >> stop;Funktioniert leider nicht! Der Compiler meldet:
`cin' undeclared (first use this function)