Eine Billard Kugel läuft im Punkt P(x/y) am Rand eines Billardtisches mit der Länge L und der Breite B mit der Steigung m los. Dabei sollen jeweils immer die Kollisionspunkte mit der Bande ausgegeben werden und wenn die Kugel in das Loch (genau in der Tischmitte also L (L:2/B:2)) fällt soll abgebrochen werden.
Mein Ansatz: (leider nicht funktionierend)
Quellcode
- program billard;
- var x,y,m,n,l,b,mx,c,my,bandey,bandex : real;
- procedure eingabe(var ex,ey,em,el,eb : real);
- begin
- write('Bitte geben sie die x Koordinate des Startpunkts ein: '); readln(ex);
- write('Bitte geben sie die y Koordinate des Startpunkts ein: '); readln(ey);
- write('Bitte geben sie den Anstieg m ein: '); readln(em);
- write('Bitte geben sie den L„nge des Billardstisch ein: '); readln(el);
- write('Bitte geben sie den Breite des Billardstisch ein: '); readln(eb);
- end;
- function coly(bx,bm,cbx:real):real;
- var bn : real;
- begin
- bn:=-(cbx*bm);
- coly:=bm*bx+bn;
- end;
- function colx(cy,cm,cx:real):real;
- var cn : real;
- begin
- cn:=-(cx*cm);
- colx:=(cy-cn)/cm;
- end;
- begin
- Eingabe(x,y,m,l,b);
- mx:=b/2;
- my:=l/2;
- c:=x;
- IF ((m<>0) and (x<>my)) then begin
- repeat
- bandey:=coly(x,m,c);
- x:=x+0.1;
- IF ((bandey=b) or (x=l)) then
- begin
- bandex:=colx(bandey,m,c);
- m:=-1/m;
- writeln('Bandenkollision im Punkt (',bandex:8:2,'/',bandey:8:2,')');
- end;
- until ((bandey=b) or (bandex=l));
- end;
- readln;
- end.
Bitte um Hilfe...
Mfg kc
[size=1]It's not a bug, it's a feature.[/size]
[size=3]Bin vom 05.06.2006 - 10.06.2006 im Urlaub[/Size]
[size=3]Bin vom 05.06.2006 - 10.06.2006 im Urlaub[/Size]