Obliczanie długości między dwoma punktami w przestrzeni trójwymiarowej wg wzoru.

0

Znalazłem kod w C++, przepisałem go na C. A teraz się zastanawiam po co tutaj deklaracja zmiennych z1, z2 i z3 ? Może mi ktoś powiedzieć ? Skoro i tak do nich nic nie pobieramy ani nie przepisujemy, czyli w nich są jakieś śmieci tak ? W załączniku treść zadania.

 
#include <stdio.h>
#include <math.h>

int main(void)
{
     float x1,x2,x3,y1,y2,y3,z1,z2,z3,d;
     
     //punkt A
    printf("Podaj pierwsza wspolrzedna punktu A: ");
    scanf("%f", &x1);
    printf("Podaj druga wspolrzedna punktu A: ");
    scanf("%f", &x2);
    printf("Podaj trzecia wspolrzedna punktu A: ");
    scanf("%f", &x3);
    //punkt B
    printf("Podaj pierwsza wspolrzedna punktu B: ");
    scanf("%f", &y1);
    printf("Podaj druga wspolrzedna punktu B: ");
    scanf("%f", &y2);
    printf("Podaj trzecia wspolrzedna punktu B: ");
    scanf("%f", &y3);
    
    d = sqrt((pow((x1-x2),2)+pow((y1-y2),2)+pow((z1-z2),2)));
    printf("\nOdleglosc wynosi: %f", d);
    printf("\n");
    system("PAUSE");	
    return 0;
}

2

Bo ktoś to spaprał.

#include <stdio.h>
#include <math.h>

typedef struct point_t {
    double x, y, z;
} point_t;

void read_point(point_t *p) {
  scanf("%lf %lf %lf", &p->x, &p->y, &p->z);
}

double distance(point_t a, point_t b) {
  double dx = a.x - b.x, dy = a.y - b.y, dz = a.z - b.z;
  return sqrt(dx*dx + dy*dy + dz*dz);
}
 
int main() {
  point_t a, b;
 
  puts("Podaj współrzędne pkt A (x y z):");
  read_point(&a);
  puts("Podaj współrzędne pkt B (x y z):");
  read_point(&b);
 
  printf("\nOdleglosc wynosi: %lf]n", distance(a, b));

  getchar();
  getchar();    
  return 0;
}
0

A po co cofać się w rozwoju? Poza Javą i webmasteringiem nie znam się na innych językach, ale z tego co wiem, C++ jest ulepszoną wersją C (stąd też nazwa jako wzięcie języka C i poddanie jej inkrementacji). C nie jest nawet zorientowany obiektowo, zamiast niego powstało jakieś podrzędne Objective-C. Do frameworku .NET jest C#. Pytanie moje: Dlaczego ktoś jeszcze korzysta z C?

0

A nie można tego prościej napisać ? Tzn bez struktur i funkcji (wiem, że kod winfresha jest bardziej elegancki i poprawny), ale wolałbym jakby ktoś poprawił to co ja napisałem/ przepisałem.

0

Zupełnie nie rozumiesz wzoru, który stosujesz.

d = sqrt((pow((x1-y1),2)+pow((x2-y2),2)+pow((x3-y3),2)));

1 użytkowników online, w tym zalogowanych: 0, gości: 1