Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

1 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 16:03

Flugweite berechnen

Hi!

Wir haben in Programmieren folgende Hausaufgabe bekommen:

Der Benutzer gibt den Abschusswinkel und die Geschwindigkeit einer Kanonenkugel ein und muss so ein bestimmtes Ziel treffen.
Die Entfernung des Ziels ist eine Zufallszahl, und es liegt am Boden.

Die Ausgabe ist dann wie weit man vom Ziel entfernt ist.

Aber irgendwie kapier ich das leider nicht X( Kann mir wer ein bisschen mit ein paar Formeln helfen?

lg Sebian
 

pchero

unregistriert

2 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 16:57

also ich glaube du musst das irgendwie mit einer parabel ausrechnen

MFG
 

SevenofNine

Foren Gott

Dabei seit: 30.10.2002

Beiträge: 5 219

 

3 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 17:40

Geht es dir um eine Mathematische Formel? Oder musst du ein Programmierschnipsel haben?
Wenn ja, welche Sprache.

Gruß

Seven
Bevor du hier Fragen stellst, lese alle Dokumentationen und klicke die folgenden Links um mehr zu erfahren
WMW Forensuche,
WMW F.A.Q. und/oder
Allgemeine suche
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

4 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 18:44

Das Programm muss ich in C# (Konsole) schreiben. Aber mir genügt auch jeder Pseudoprogrammiercode. Kann auch in C oder Java oder PHP sein.

Das Problem ist nicht die Umsetzung sondern wie das geht. Ich brauche ja maximal ein paar Mathematik Funktionen, ein paar Schleifen und Abfragen.
 

Dabei seit: 10.03.2003

Beiträge: 900

 

5 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 18:59

Wurfweite = (V0^2 * sin(2*alpha)) / g

V0 = Abwurfgeschwindigkeit
 

pestahacker

Routinier

Dabei seit: 19.03.2003

Beiträge: 370

 

6 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 20:14

wurfparabel: y= -g/2 * x² / (v² * cos² a ) + x * tan a

v = anfangsgeschwindigkeit
a= alpha = abwurfwinkel

natürlich ohne einwirkung von reibung bzw. wind oder ähnliches
Cu Pestahacker o.O?

VISIT http://dcll.de.vu - Deutsche Casio Link List
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

7 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 20:34

Sorry, aber ich kenn mich nicht wirklich aus, was jetzt oder x sein soll.

In der Hauptschule haben wir in Physik fast ncihts gelernt und in der neuen Schule hab ich in Physik noch nix kapiert^^

und wie oft muss ich diese Formel aufrufen? Ich hätte mir gedacht man muss das in eine Schleife packen, die solange läuft bis das Geschoß am Boden ankommt.
 

Dabei seit: 10.03.2003

Beiträge: 900

 

8 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 21:19

Was ich geschrieben habe ist schon die fertige Wurfgweite, da brauchst Du keine Schleife für!
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

9 Zum Seitenanfang

Donnerstag, 8. Dezember 2005, 21:48

Unser Lehrer hat uns gesagt irgendwie mit einer Schleife und folgende Formeln sollten wir nehmen. Warum habt Ihr so einfache kurze Formeln?
»Sebian« hat folgendes Bild angehängt:
  • wima.jpg
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

10 Zum Seitenanfang

Freitag, 9. Dezember 2005, 09:19

Hey Sebian,

dein Lehrer ist ja echt nett. Der hat dir die Lösung ja schon fast gegeben.
Würd dir jetzt gerne die Lösung hier posten, muss aber jetzt zur Uni.
Daher hier mal ein Ansatz für dich. Hoffe der hilft dir schon mal weiter.

Also:

Die Formeln für die x und y-Werte hat er dir ja schon aufgeschrieben.
Die ist immer gleich, wobei im ersten Fall das x, das du aufsummiert ja NULL ist.
Und die Schrittweite ist mit t=1s gegeben.
Daher auch die Schleife.

Also nimmst du jetzt die x und y-Formeln und lässt die in der Schleife durchlaufen, bis y = 0 (Achtung!: Anfangswert ist auch 0 -> Vor der Schleife die Variablen auf 0 setzen.)
Als Startwerte nimmst du den Cosinus des Winkels, der vom User eingegeben wird und die Geschwindigkeit.

In der Schleife errechnest du diese Werte dann immer wieder neu.
Hierzu schaust du dir die Zeichnung mal genauer an.
Da siehst du dann, das das neue v immer aus der Hypothenuse aus den Werten x und y besteht.
Der Cosinus des Winkels errechnet sich ja aus der Ankathete durch die Hypothenuse, also dann (x-x(alt)/v.

Wenn dann y = 0 ist, nimmste den Zufallswert, auf den die Kugel fliegen sollte und ziehst davon den x-Wert aus der Schleife ab. Dann hast du ja die Differenz zwischen dem tatsächlichen Wert und dem Zufallswert.

Hoffe du hast das jetzt verstanden, muss jetzt mal los.


Denke die anderen werden dir da dann auch weiterhelfen können.


Gruß,

tommy
 

Dabei seit: 10.03.2003

Beiträge: 900

 

11 Zum Seitenanfang

Freitag, 9. Dezember 2005, 09:51

Ich bin immer noch der Meinung, dass meine Lösung genauer ist ;)

Das ist übrigens auch die gleiche Art u Weise, wie das in der Formelsammlung u.A. für Physik, welche fürs Zentral-Abi zugelassen ist, behandelt ;)
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

12 Zum Seitenanfang

Freitag, 9. Dezember 2005, 19:21

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System;

namespace Kanone {
	class Kanone {
		public static void Main(string[] args) {

			double	winkel,
					geschw,
					weite,
					hoehe,
					zufall,
					j;

			const double g = 9.8; // m/s²

			int		i;

			i=0;
			j=0;
			weite=0;
			hoehe=0;

			zufall=ZufZa(200);
			 Console.WriteLine("Zufallszahl: " + zufall);
			
			while (j<10) { // maximal 10 Versuche
				
				Console.Write("Abschusswinkel (in Grad): ");
				winkel=Convert.ToDouble(Console.ReadLine());
				do {
					if (winkel>=90) {
						Console.WriteLine("Ungültiger Abschusswinkel!");
						Console.Write("Abschusswinkel (in Grad): ");
						winkel=Convert.ToDouble(Console.ReadLine());
					}
				} while(winkel>=90);

				winkel = winkel*180/Math.PI; // Umrechnung auf Radianden

				Console.Write("Geschwindigkeit (in m/s): ");
				geschw=Convert.ToDouble(Console.ReadLine());

				do { // bis Ziel erreicht

					weite=weite + geschw * Math.Cos(winkel); // rofl
					hoehe=hoehe + geschw * Math.Sin(hoehe) - g/2; // lol

					i++;
					Console.WriteLine("Entfernung vom Ziel: " + (zufall-weite) + "m");
				}
				while(hoehe > 0);
				Console.WriteLine();
			}
			j++;

			Console.WriteLine("Geschafft!");
			Console.WriteLine("Versuche: " + j);
		}

		static Random random = new Random();
		public static int ZufZa(int Limit){
			return random.Next(Limit);
		}
	}
}


Kann das stimmen? Also es kommt ein Ergebnis raus, aber ob das stimmt kann ich leider nicht kontrollieren.
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

13 Zum Seitenanfang

Sonntag, 11. Dezember 2005, 14:52

@Basti: Deine Lösung ist ja richtig, aber es sollte ja laut Aufgabe durch eine Schleife realisiert werden. Und dann muss das nun mal so gemacht werden.

@Sebian: Sorry, leider kann ich dir bei C nicht so sehr weiterhelfen. Rechne das Ergebnis doch einfach mal mit der Formel von Basti nach. Dann kannste selbst kontrollieren ob es stimmt. (Geringe Abweichungen sin dabei möglich, da das halt mit der Schleife ne feste Schrittweite hat.)

Gruß,

tommy
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

14 Zum Seitenanfang

Sonntag, 11. Dezember 2005, 19:00

kann mir irgendwer das in einer anderen sprache machen? ich check des gar ned und ich weiß jetzt (Kontrolle mit Code von Basti) das meins falsch ist X(
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

15 Zum Seitenanfang

Sonntag, 11. Dezember 2005, 20:16

Hey Sebian,

hab grad auch mal meinen Codeansatz in PHP umgesetzt.
Wenn ich den jetzt durchlaufen lasse, komme ich auch nicht auf den gewünschten Wert.

Beispiel:

Winkel=25°
Anfangsgeschwindigkeit = 40 Einheiten

Dann bekomme ich eine Weite von 145 Einheiten heraus.
Bei dieser liegt allerdings der y-Wert schon bei -10,86 Einheiten.
Die Schleife ist also zu ungenau.
Du könntest dir ja nun den genauen Wert ausrechnen.
Frag deinen Lehrer nochmal, ob ihr das wirklich mit der Schleife oder auch mit Bastis Formel machen könnt, die definitiv richtig ist.
Setz mal die Werte bei dir ein.
Wenn dasselbe herauskommt, dann hast du auf jeden Fall den Code richtig :)

Gruß,

tommy
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

16 Zum Seitenanfang

Sonntag, 11. Dezember 2005, 20:38

kannst mir den php Code schicken? (kann PHP eh viel besser und C# ist sehr ähnlich wie php)

und mit den -10,86 Einheiten meinst da das die sprünge so groß sind das man zuerst noch in der luft ist und beim nächsten schon tief im boden is?
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

17 Zum Seitenanfang

Montag, 12. Dezember 2005, 14:47

Hi,

genau so hab ich das gemeint.
Der vorletzte Schritt ist bei 108,75 und 6,57 Einheiten und der letzte dann bei den 145 und -10,86 Einheiten.

Also liegt der eigentliche y-Wert dazwischen.
Kannst du natürlich auch noch berechnen, aber wenn ihr das nur mit der Schleife machen sollt, wird das ziemlich ungenau.

Ach ja, hier kannst du dir die Ausgabe und den Code mal ansehen.

Vielleicht hab ich ja auch noch nen Fehler drin.
Hab ich gestern Abend ja fix zusammengebastelt. :)


Gruß,

tommy
 

Sebian

Haudegen

Dabei seit: 14.05.2003

Beiträge: 645

 

18 Zum Seitenanfang

Montag, 12. Dezember 2005, 21:57

Hey Danke!! Ist voll nett vond ir gewesen!! Ich werd das jetzt in C# umschreiben und habs dann.

lg Sebian

PS.: </br> is falsch, richtig wäre netweder <br> oder nach XHTML <br /> :D
 

tommyfin

Routinier

Dabei seit: 20.07.2004

Beiträge: 307

 

19 Zum Seitenanfang

Montag, 12. Dezember 2005, 22:12

Hi,

kein Problem.
Hoffe das ich da keinen Fehler eingebaut habe.

Zu dem <br>:
Ist mir klar, dass das nicht richtig ist, aber der hat die <br>s bei der Ausgabe des Codes trotzdem umgewandelt und den Code zerissen.
Deshalb hab ich dann die Backslashes eingebaut, damit die <br>s nicht mehr geparst werden.


Viel Erfolg mit dem script!!!

Gruß,

tommy