LoginSignup
0
1

More than 3 years have passed since last update.

原点からの距離を求める

Last updated at Posted at 2021-01-08

コード

入力された点の、原点からの距離を求める。

genten.cpp
#include<iostream>
#include<string>
#include<cmath>

//点の座標を格納するための構造体
struct Point{
        std::string name;
        double x,y;
};

//構造体に、点の名前、点の座標を入力する関数
void input(Point *p){
        if(p!=nullptr){
            std::cin>> p->name >> p->x >> p->y;
        }
}

//原点からその点までの距離を返す関数
double dist(Point &p){

        double x1=std::pow((p.x),2.0);
        double y1=std::pow((p.y),2.0);

        double distance=sqrt(x1+y1);

        return distance;
}

int main(){
        Point a;

        std::cout<<"座標を入力してください。";
        input(&a);
        double d=dist(a);

        std::cout<< "Distance : "<< d << "\n";

        return 0;
} 

解説

まず、座標を格納するための構造体・Pointを定義します。

次にその構造体に座標を入力し格納する、input関数を定義します。
ここで、ポインタの理解を深めるために、ポインタを使った値渡しを使用してみました。

genten_input.cpp
void input(Point *p){
        if(p!=nullptr){
            std::cin>> p->name >> p->x >> p->y;
        }
}

input関数はvoid型です。
main関数内で、input(&a)とすることで、Point型変数・aへのポインタを渡します。

このときポインタ pは、変数aを指します。
よって、ここで名前や値を入力していくと、各要素は変数aに代入されていきます。

次は、原点からの距離を求める、dist関数です。

genten_dist.cpp
double dist(Point &p){

        double x1=std::pow((p.x),2.0);
        double y1=std::pow((p.y),2.0);

        double distance=sqrt(x1+y1);

        return distance;
}

原点からある点までの距離は、ある点を (a,b) とすると、

\sqrt{a^2+b^2}

で求めることができます。
これを利用して計算していきます。

以上です。

今回、始めて投稿をさせていただきました。
何か間違いがありましたら教えていただけると助かります。

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1