Zum Inhalt springen

cadman

Mitglieder
  • Gesamte Inhalte

    28
  • Benutzer seit

  • Letzter Besuch

  1. cadman

    Dynamisches Feld

    das ist der datentyp von rueckgabe: structure fc_point { double x; double y; } ist KEIN vector
  2. cadman

    Dynamisches Feld

    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; }
  3. cadman

    Dynamisches Feld

    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
  4. cadman

    Dynamisches Feld

    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 ?
  5. cadman

    Dynamisches Feld

    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); } }
  6. cadman

    Dynamisches Feld

    danke, probier' ich mal aus
  7. cadman

    Dynamisches Feld

    ... 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
  8. 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 ?
  9. cadman

    vs2010express

    und wie sieht eine solche deklaration aus ?
  10. cadman

    vs2010express

    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
  11. cadman

    header-file

    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äääääääääää ?
  12. cadman

    header-file

    ich nutze "codeblocks"
  13. cadman

    header-file

    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 ?
  14. cadman

    header-file

    Hallo, ich habe mich genau an den Code von Klotzkopp gehalten und erhalte nun eine Fehler meldung wie im Anhang dargestellt.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...