Funktion Zeiger übergeben
-
Hallo zusammen!
Ich bin ein Neuling in C++ und sitze nun schon Stunden an einer Aufgabe ohne wirklich weiter zu kommen. Vielleicht kann mir jemand auf die Sprünge helfen...
Zunächst soll der Flächeninhalt von Kreisen berechnet werden. Das hab ich noch hinbekommen.
Dann soll mittels einer Funktion überprüft werden, ob die Kreise sich überschnieden. Die Funtkion bekommt Zeiger übergeben. Die vorgegeben Funktionsdeklaration steht unten.
Wie mach ich das nun? Wie sollte die Funktionsanweisung und der Funktionsaufruf aussehen?
Es ist bestimmt ganz simpel... doch ich krieg das nicht hin und verzweifel langsam...Ich bin für jeden Tipp dankbar!
#include <iostream> #include <math.h> using namespace std; struct Punkt { double x; double y; }; struct Kreis { Punkt mittelpunkt; double radius; }; double area(Kreis &k) { double Inhalt=k.radius*k.radius*M_PI; cout <<"Fläche: "<<Inhalt<<endl; return Inhalt; } bool intersect(Kreis *a, Kreis *b) { } int main() { Punkt P1; P1.x=2; P1.y=8; Kreis K1; K1.mittelpunkt=P1; K1.radius=3.5; Punkt P2; P2.x=3; P2.y=-2; Kreis K2; K2.mittelpunkt=P2; K2.radius=7; area(K1); area(K2); intersect(&K1,&K2); }
-
//bool intersect(Kreis *a, Kreis *b) bool intersect(Kreis* a, Kreis* b) // ist (IMAO) in C++ sinnvoller, kommt aber auf's Gleiche raus { // entweder "pointer-to-member" a->mittelpunkt; // oder pointer dereferenzieren, dann zugreifen (*a).mittelpunkt; }
-
Erstens mußt du auch auswerten, was die Funktion zurückgegeben hat (
bool erg=intersect(&K1,&K2);if(erg)...).Zweitens brauchst du in C++ nur noch selten Zeiger zu übergeben - in deinem Fall dürfte eine Übergabe als Wert oder (const) Referenz günstiger sein.
Drittens: Wie bestimmst du, ob sich zwei Kreise schneiden? (Tip: Es hat etwas mit dem Abstand ihrer Mittelpunkte und ihren Radien zu tun; Bonustip: Pythagoras)
-
Gilt denn "ein Kreis enthält den anderen" auch als Überschneidung? (weil, wenn nicht, dann wird es schwieriger zu bestimmen...)