Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vekorrechnung Problem Hilfe !!!!!!!!!!!!!!!!!!!

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.05.2004, 23:13 Uhr
Pac



Ich habe folgendes Problem, bin Einsteiger und soll für die Uni ein Programm schreiben mit dem ich eine Dreiecksfläche durch Koordinateneingabe (3 Punkte) berechnen kann es funktioniert bis zur eigentlichen Berechnung dort komme ich nicht weiter ( Pointer und Vektorenberechnung)

Wenn mir jemand helfen kann und möchte veröffentliche ich mein bisher geschriebenes sofort !

Es fehlen bestimmt nur 5 Zeilen oder so , aber ich komm nicht weiter !


offentlich hilft mir jemand Bitte !!!!!

Danke

Dieser Post wurde am 04.05.2004 um 23:16 Uhr von Pac editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.05.2004, 00:39 Uhr
Pablo
Supertux
(Operator)


Helfen können wir doch, aber wo ist dein Ansatzt? Poste deinen Code.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.05.2004, 10:48 Uhr
Pac



Bitte hilft mir !!!!!!!!!!!!!!

Es sind drei Dateien :



C++:
# include <stdio.h>
# include <stdlib.h>
# include <math.h>
# include "header.h"


int main (void)

{
char selection = 'a' , returntaste;

struct VEKTOR V[10];
struct VEKTOR *pV;
pV=&V[0];

printf ("\n");
printf ("Willkomen bei der Dreiecksflaechenberechnung\n");
while(selection !='e')

    {
    printf("\n");
    printf("\t Gib A fuer Eingabe der Vektoren\n");
    printf("\t Gib B fuer Berechnung ein \n");
    printf("\t Gib E fuer Ende des Programms ein \n");
    
    fflush(stdin); /*Returntaster*/
    
/*    scanf ("%c %c",&selection,&returntaste);*/
    scanf ("%c",&selection);
    switch (selection)
        {
                case 'A':
                case 'a':
                                vektor (pV);
                                break;
                
                
                case 'B':  
                case 'b':
                                Berechnung (pV);
                                break;
                
                case 'E':
                case 'e':
                                printf("Programm wurde beendet\n\n");
                                exit(1);
                                break;
                
                default: printf ("Falsche Eingabe\n\n");
                        break;
                                
                }
        }
    
return 0;    
}



2. Datei :::


C++:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "header.h"

void vektor (struct VEKTOR *pV)

{  
    printf ("Bitte geben Sie die erste x-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &(pV->x));

    printf ("Bitte geben Sie die erste y-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &(pV->y));
    
    printf ("Bitte geben Sie die zweite x-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &((pV+1)->x));
    
    printf ("Bitte geben Sie die zweite y-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &((pV+1)->y));
    
    printf ("Bitte geben Sie die dritte x-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &((pV+2)->x));
    
    printf ("Bitte geben Sie die dritte y-Koordinate ein: ");
    fflush(stdin);
    scanf("%lf" , &((pV+2)->y));
    
}

    double Berechnung (struct VEKTOR *pV)
    {
        double flaeche;
        double a,b,c,d,u,v;
        
        (pV+3)->x = (((pV+1)->x) - ((pV)->x)); /* Vektor zwischen Punkt 1 und Punkt 2 */
        (pV+3)->y = (((pV+1)->y) - ((pV)->y)); /* Vektor zwischen Punkt 1 und Punkt 2 */
    
        (pV+4)->x = (((pV+2)->x) - ((pV)->x)); /* Vektor zwischen Punkt 1 und Punkt 3 */
        (pV+4)->y = (((pV+2)->y) - ((pV)->y)); /* Vektor zwischen Punkt 1 und Punkt 3 */
        
    
        (pV+5)->x= pow((pV+3)->x,2); /* hochgenommen Vektor zwischen Punkt 1 und 2 */
        (pV+5)->y= pow((pV+3)->y,2); /* hochgenommen Vektor zwischen Punkt 1 und 2 */        
            
        (pV+6)->x= pow((pV+4)->x,2); /* hochgenommen Vektor zwischen Punkt 1 und 3 */
        (pV+6)->y= pow((pV+4)->y,2); /* hochgenommen Vektor zwischen Punkt 1 und 3 */

        
        (pV+7)->x = (pV+5)->x * (pV+6)->x;  /* hochgenommenen Vektoren multipliziert */
        (pV+7)->y = (pV+5)->y * (pV+6)->y;  /* hochgenommenen Vektoren multipliziert */
    
        (pV+8)->x = pow((pV+3)->x * (pV+4)->x,2);  /* Vektoren multipliziert und potenziert */
        (pV+8)->y = pow((pV+3)->y * (pV+4)->y,2);  /* Vektoren multipliziert und potenziert */
        
        (pV+9)->x = (pV+7)->x - (pV+8)->x
        (pV+9)->y = (pV+7)->y - (pV+8)->y
    
        flaeche=0.5 * sqrt(
        
        
        printf("\n Der Flaecheninhalt betraegt %lf\n", flaeche);
            
        return 0;
    }


/*
    double Berechnung (struct VEKTOR *pV)
    
    {    
        double flaeche;
        double a,b,c,d;
        
        a=((pV+1)->x - (pV)->x) * ((pV+1)->x - (pV) ->x) + ((pV+1)->y -(pV)->y)*((pV+1)->y -(pV)->y);
        b=((pV+2)->x - (pV)->x) * ((pV+2)->x - (pV) ->x) + (pV+2)->y -(pV)->y)*((pV+2)->y -(pV)->y);
        
        c=sqrt(a);
        d=sqrt(b);
        
        flaeche=(c*d)/2;
        printf("\n Der flächeninhalt beträgt %lf\n", flaeche);
    
        return 0;
    }
*/



Header datei :


long fakult (long) ;
double potenz (double*, double*);
struct VEKTOR
{
    double x;
    double y;
} ;

struct VEKTOR vektoraddition (struct VEKTOR*,struct VEKTOR*);
struct VEKTOR vektorsubtraktion (struct VEKTOR*);

void vektorprint (struct VEKTOR);
void vektorinput (struct VEKTOR*,struct VEKTOR*);
void vektor (struct VEKTOR*);
double Berechnung (struct VEKTOR*);




Bearbeitung von typecast:
cpp-Tags gesetzt

Dieser Post wurde am 05.05.2004 um 12:28 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.05.2004, 12:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


grundseite mal höhe halbe ist die eine variante allerdings muss man sich dann noch überlegen wie man die höhe ausrechnen will.

ein blick in meine formelsammlung sagt mir folgendes

A=wurzel(s*(s-a)*(s-b)*(s-c))

wobei s =(a+b+c)/2 ist...

du musst als nur die drei seitenlängen ausrechnen und bist fertig
eine seitenlänge bekommst du jeweil mit dem pythagros

also die seite zwischen puntk 1 und 3 ist dann

wurzel((p1.x-p3.x)^2 + (p1.y-p3.y)^2)

das zu implementieren wenn man die formel jetzt hat ist ja nur noch ein witz...
wenn du es gar nicht hinbekommst helf ich dir nochmal
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.05.2004, 15:43 Uhr
~CmmS
Gast


ah, viel zu umständlich:
A = 0.5 * |vec(a-b) x vec(a-c)|
so isses doch einfacher einfach die hälfte des betrags vom kreuzprodukt zweier dreiecksseiten
noch fragen? *g*
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.05.2004, 23:13 Uhr
Pac



Danke für den Einsatz , Ich habs geschafft !!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: