コード
入力された点の、原点からの距離を求める。
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}
で求めることができます。
これを利用して計算していきます。
以上です。
今回、始めて投稿をさせていただきました。
何か間違いがありましたら教えていただけると助かります。