cadman
Mitglieder-
Gesamte Inhalte
28 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von cadman
-
das ist der datentyp von rueckgabe: structure fc_point { double x; double y; } ist KEIN vector
-
habe jetzt eine funktion auf die vector geschichte umgestellt. rueckgabe ist eine punkt struktur wie stelle ich es denn an, dass die aufrufende funktion merkt, dass kein punkt gefunden wurde ? fc_point fc_calc_sp_g1_g2 (fc_point ep1, fc_point zp1, fc_point ep2, fc_point zp2, int f1, int f2) { fc_point rueckgabe; int fehler=1; fc_point schnittp; // Felder für transformierte Endpunkte double tep1[2],tzp1[2],tep2[2],tzp2[2]; // Daten der 1. Geraden im Originalzustand double l1=pow(pow((ep1.x-zp1.x),2) + pow((ep1.y-zp1.y),2),0.5); double alpha1=acos((zp1.x-ep1.x)/l1); // Die Koordinatensystem wird so gedreht, dass der Anfangspunkt der 1. Geraden // horizontal durch den Ursprung verläuft fc_calc_coortrans_point(ep1.x,ep1.y,ep1.x,ep1.y,alpha1,tep1); fc_calc_coortrans_point(zp1.x,zp1.y,ep1.x,ep1.y,alpha1,tzp1); fc_calc_coortrans_point(ep2.x,ep2.y,ep1.x,ep1.y,alpha1,tep2); fc_calc_coortrans_point(zp2.x,zp2.y,ep1.x,ep1.y,alpha1,tzp2); // Ist auch die 2. Gerade horizontal ? Dann Fehler = -1 setzen if (tep2[1]==tzp2[1]) { //cout << "\nDie Linien sind parallel !"; fehler = -1; if (tep1[1]==tep2[1]) { //cout << "\nDie Linien liegen übereinander !"; } } if (fehler==1) { // Zweite Gerade senkrecht ? if (tep2[0]==tzp2[0]) { schnittp.x=tep2[0]; schnittp.y=0.0; } else { schnittp.x=tep2[0]+(tzp2[0]-tep2[0])*(-tep2[1])/(tzp2[1]-tep2[1]); schnittp.y=0.0; } // Bei entsprechender Einstellung (f1,f2) muss der Schnittpunkt auf denn Geraden liegen // Bedingung f1 prüfen if (f1!=1) { if (schnittp.x<0.0 || schnittp.x>tzp1[0]) { fehler=-1; }} // Bedingung f2 prüfen, wenn kein Fehler if (fehler==1) { if (f2!=1) { if ((schnittp.y-tep2[1])/(tzp2[1]-tep2[1])<0.0 || (schnittp.y-tep2[1])/(tzp2[1]-tep2[1])>1.0) {fehler=-1;} } } // Rücktransformation double tmp[2],bcs[2]; fc_calc_coortrans_point(0.0,0.0,ep1.x,ep1.y,alpha1,bcs); fc_calc_coortrans_point(schnittp.x,schnittp.y,bcs[0],bcs[1],-alpha1,tmp); rueckgabe.x=tmp[0]; rueckgabe.y=tmp[1]; } return rueckgabe; }
-
die funktionen fc_calc_sp_g1_poly und fc_calc_sp_g1_g2 kann ich ändern wie ich will, da ich nur privat ein bißchen programmieren lernen möchte bin so ein selbsternannter informatiker im 2. bildungsweg :bimei
-
hallo, aus matrix[spz] = (double *) realloc (matrix, 2*sizeof(double)); matrix[spz] = (double *) malloc (2*sizeof(double)); dann geht es ! Danke ! Ob ich EInfluss auf die Signatur der Funktion habe ? Was meinst Du damit ?
-
habe folgende funktion, aber das mit dem realloc funktioniert nicht: // Schnittpunkt einer Geraden mit einer Polylinie berechnen // epx1, epy1,zpx1, zpy1 -> Koordinaten der 1. Geraden // f -> =1 Gerade unendlich lang // double poly [][2] -> Koordinatenfeld der Polylinie (1. Punkt = letzter Punkt) // int orianzep -> Anzahl der Eckpunkte // f1 -> wenn f1=1 wird die 1. Gerade unendlich verlängert // f2 -> wenn f2=1 wird die 2. Gerade unendlich verlängert // rueckgabe -> punktfeld mit schnittpunkten: double (*rueckgabe) [2] = new double [anzeckp][2]; // fehler -> =-1 keine Schnittp4n2te gefunden void fc_calc_sp_g1_poly (double epx1, double epy1,double zpx1, double zpy1, int f, double poly [][2], int orianzep, double rueckgabe[][2], int fehler) { //fehlerpuffer fehler=-1; //Zähler zum Durchlauf der Polylinie int z; //Zwischenpuffer für Schnittpunkt double r1[3]; //Zähler für Schnittpunkte int spz=0; //Rückgabepuffer "rueckgabe" wird erst beim 1 Fund initialisiert double **matrix; // int i; //Alle Punkte der Polylinie durchlaufen for (z=0;z<(orianzep-1);z+=1) { //funktion sucht schnittpunkt fc_calc_sp_g1_g2 (epx1,epy1,zpx1,zpy1, poly [z][0],poly [z][1],poly [z+1][0],poly [z+1][1], f,0,r1); //wenn schnittpunkt gefunden if (r1[2]==1) { fehler=1; //wenn noch kein schnittpunkt gefunden if (spz==0) { cout << "\nmalloc !"; //Zeile matrix = (double **) malloc (1*sizeof(double *)); //Spalte matrix[0] = (double *) malloc (2*sizeof(double)); } //für weitere schnittpunkte if (spz>0) { cout << "\nrealloc !"; //Zeile matrix = (double **) realloc (matrix, (spz+1)*sizeof(double *)); //Spalte matrix[spz] = (double *) realloc (matrix, 2*sizeof(double)); } cout << "\nSchnittpunkt gefunden !"; cout << "\nspz: " << spz; cout << "\n" << z << "\t" << r1[0] << "\t" << r1[1]; matrix[spz][0]=r1[0]; matrix[spz][1]=r1[1]; spz++; } } cout << "\nspeicher freigeben !"; if (spz>0) { for (i=0;i<spz;i++) {free (matrix[i]);} free (matrix); } }
-
danke, probier' ich mal aus
-
... struktur ? du meinst so eine art klasse mit einer methode für x, eine für y und eine für den fehlercode, wenn kein schnittpunkt vorhanden ? aber x und y müssten dann ja dynamisch funktionieren und da liegt das problem
-
Hallo, habe folgendes Problem: Ich habe eine Gerade und eine Polylinie (mehrgliedrige Linie) an eine Funktion zu übergeben. Die Funktion soll mir die Schnittpunkte in einem 2-dimensionalem array zurückgeben. Da ich zu Anfang nicht weiß, ob und wieviele Schnittpunkte es gibt muss das Rückgabearray irgendwie dynamisch arbeiten. Ich habe mir schon malloc angesehen. Aber die Beispiele bestanden nur aus 1-dimensionalen arrays. wat nu ?
-
und wie sieht eine solche deklaration aus ?
-
hallo, ich habe in einem kleinen projekt z.b. die ressourcendatei a.cpp und b.cpp. kann ich in a.cpp irgendwie auf eine funktion in b.cpp zugreifen ? oder gibt es eine andere möglichkeit (ich meine keine headerfiles) die funktionen von b.cpp in a.cpp zu integrieren ? mfg
-
ich ma wieder ! auf codeblocks habe ich es jetzt hinbekommen, dann habe ich es mal mit ms visual express probiert und folgendes ergebnis bekommen: 1>------ Erstellen gestartet: Projekt: t41, Konfiguration: Debug Win32 ------ 1> fc_math.cpp 1>..\..\..\Bibliotheken\fc_math\fc_math.cpp(43): fatal error C1010: Unerwartetes Dateiende während der Suche nach dem vorkompilierten Header. Haben Sie möglicherweise vergessen, im Quellcode "#include "StdAfx.h"" einzufügen? ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== häääääääääää ?
-
aber ich habe doch "fc_math.h" mit include eingebunden wie füge ich denn "fc_math.cpp" meinem projekt hinzu "projekt/makefile" was heißt das ?
-
Hallo, ich habe mich genau an den Code von Klotzkopp gehalten und erhalte nun eine Fehler meldung wie im Anhang dargestellt.
-
Erst einmal danke für die Hilfe Ich stecke halt noch ganz am Anfang und teste dieses und jenes. Aber mathematische Funktionen muss man doch nicht in eine Klasse legen, wo liegt der Vorteil ?
-
also wenn ich ehrlich bin, hat es mein compiler automatisch angelegt
-
#include <cstdlib> #include <iostream> #include <math.h> #include <stdio.h> #include <K:\Programmieren\c++\Bibliotheken\fc_math\fc_math .h> using namespace std; // Umwandlung Grad in Bogenmass double fc_bogenm(double grad) { return (grad / 180.0 * 3.1415927); } int main() { cout << "\n" << fc_bogenm(45.0); }
-
steht irgendwo schritt für schritt erkälrt, wie ich einen headerfile anzulegen habe ?
-
ich glaube, ich muss mir da erst noch ein bißchen anlesen.. ich dachte man könnte die funktionen einfach auslagern, dann im progi dazuladen, um sie dann mit ihrem "normalen" namen zu nutzen
-
und wie mache ich z.b. fc_bogenm static ?
-
#include <cstdlib> #include <iostream> #include <math.h> #include <stdio.h> #include <K:\Programmieren\c++\Bibliotheken\fc_math\fc_math.h> using namespace std; int main() { cout << "\n" << fc_math::fc_bogenm(45.0); }
-
ich dachte ich könnte die selbstdefinierten befehle einfach so nutzen als stünden sie im eigentlichen progi
-
aufruf: fc_math::fc_bogenm(45.0) führt zu folgenden fehlermeldungen: c++ forbids declaration of "fc_bogenm" with no type c++ forbids declaration of "fc_grad" with no type no matching function for cal to "fc_math::fcbogenm(double)"
-
hi, ich möchte mir einen eigenen kleine header-file anlegen und per include anweisung einbinden. wie unten dargestellt habe ich eine "fc_math.h" und eine "fc_math.cpp" datei, aber irgendwie klappt es nicht. weiß jemand rat ? fc_math.h -------------------------------------- #ifndef FC_MATH_H #define FC_MATH_H class fc_math { public: fc_bogenm(); fc_grad(); virtual ~fc_math(); protected: private: }; #endif // FC_MATH_H fc_math.cpp ------------------------------------------- #include "fc_math.h" // Umwandlung Grad in Bogenmass double fc_bogenm(double grad) { return (grad / 180.0 * 3.1415927); } // Umwandlung Bogenmass in Grad double fc_grad(double bogenmass) { return (bogenmass / 3.1415927*180.0); }