printf gibt mir immer nur eine 0.0000 aus



  • Ich habe einen Übergabe Fehler drin.
    Ich möchte via zwei Punkte mit jeweils (x,y und z) den Abstand berechnen.
    Jedoch kommt als Ergebnis immer 0.0000 raus. Wo liegt denn mein Übergabewertfehler?

    Main.c

    #include <stdio.h>
    #include <stdlib.h>
    #include "struct.h"
    
        struct point pt1;
        struct point pt2;
    
    POINT readPoint()
    {
        POINT pt;
        printf("Entfernung berechnen\nBitte x-Koordinate fuer Punkt 1 eingeben:");
        scanf(" %f", &pt1.x);
        printf("Bitte y-Koordinate fuer Punkt 1 eingeben:");
        scanf(" %f", &pt1.y);
        printf("Bitte z-Koordinate fuer Punkt 1 eingeben:");
        scanf(" %f", &pt1.z);
    
        printf("\n\nBitte x-Koordinate fuer Punkt 2 eingeben:");
        scanf(" %f", &pt2.x);
        printf("Bitte y-Koordinate fuer Punkt 2 eingeben:");
        scanf(" %f", &pt2.y);
        printf("Bitte z-Koordinate fuer Punkt 2 eingeben:");
        scanf(" %f", &pt2.z);
        return pt;
    }
    
    int main(){
    
        POINT currentlyPoint;
        currentlyPoint = readPoint();
        distance(currentlyPoint);
    
        printf("Der Abstand der Punkte beträgt: %f"), distance(pt1, pt2);
    
        system("PAUSE");
        return 0;
    }
    

    Struct.c

    #include <math.h>
    #include "struct.h"
    
    float distance(struct point pt1, struct point pt2){
        float dx, dy, dz;
        dx = pt1.x - pt2.x;
        dy = pt1.y - pt2.y;
        dz = pt1.z - pt2.z;
        return sqrt( dx*dx + dy*dy + dz*dz );
    }
    

    struct.h

    struct point
        {
            float x;
            float y;
            float z;
        };
    typedef struct point POINT;
    float distance();
    


  • Das ganze ergibt wenig Sinn.

    Was soll denn readPoint() machen? Was hat der Rückgabewert für eine Funktion? Was sollen die beiden globalen Variablen pt1 und pt2 ?

    Was soll die Deklaration float distance(); in struct.h , wenn distance() doch eigentlich mit zwei Parametern aufgerufen wird? Welchen Sinn ergibt es distance() mit nur einem Parameter ( currentlyPoint ) aufzurufen?

    Aktivier die Warnungen Deines Compilers und bekomm mal Ordnung in Deine Gedanken.



  • wie löse ich das Problem das ich zwei Parameter aufrufen kann?



  • Ich habe jetzt auf distance(currentlyPoint);
    distance(pt1, pt2); drauß gemacht. Jedoch leider mit falschem Ergebnis. Kommt aber nichtmehr nur 0.0000 raus.



  • - nur Deppen benutzen globale Variablen
    - nur Deppen benutzen system("PAUSE")
    - du hast keinen Überblick über dein eigenes Programm; mal benutzt du 0, 1 oder 2 Parameter für deine Funktion distance
    - warum benutzt du nicht durchgängig POINT sondern struct point?
    - wozu hast du POINT definiert, wenn du es nicht nutzt?
    - du handelst konfus



  • Schreibe eine Funktion readPoint, die das macht, was der Name besagt: einen Punkt einlesen.
    Als Parameter gibst du die Nummer mit:

    POINT readPoint(int nr)
    {
        POINT pt;
        printf("Entfernung berechnen\nBitte x-Koordinate fuer Punkt %d eingeben:", nr);
        scanf(" %f", &pt.x);
        printf("Bitte y-Koordinate fuer Punkt %d  eingeben:", nr);
        scanf(" %f", &pt.y);
        printf("Bitte z-Koordinate fuer Punkt %d  eingeben:", nr);
        scanf(" %f", &pt.z);
    
        return pt;
    }
    

    Und achte auf die Klammerung der Funktionsaufrufe (speziell Zeile 34)!



  • Okay, Vielen dank, hat funktioniert. 🙂



  • Wutz schrieb:

    - nur Deppen benutzen globale Variablen
    - nur Deppen benutzen system("PAUSE")
    - du hast keinen Überblick über dein eigenes Programm; mal benutzt du 0, 1 oder 2 Parameter für deine Funktion distance
    - warum benutzt du nicht durchgängig POINT sondern struct point?
    - wozu hast du POINT definiert, wenn du es nicht nutzt?
    - du handelst konfus

    Mal abgesehen davon, daß das Programm wirr/konfus ist - das kann man auch freundlicher sagen.



  • Danke EOP 🙂


Anmelden zum Antworten