C艹函数与结构体

 传递指针

代码:

#include <iostream>
#include <cmath>

struct polar{
    double distance;
    double angle;
};

struct rect{
  double x;
  double y;
};

void rect_to_polar(const rect * pxy, polar * pda);
void show_polar(const polar * pda);

int main(int argc, char const *argv[]) {
  using namespace std;
  rect rplace;
  polar pplace;
  std::cout << "Enter the x and y values:";
  while (cin >> rplace.x >> rplace.y)
  {
    rect_to_polar(&rplace, &pplace);
    show_polar(&pplace);
    std::cout << "Next two numbers (q to quit)" << '\n';
  }
  std::cout << "Done." << '\n';
  return 0;
}

void show_polar(const polar * pda)
{
  using namespace std;
  const double Rad_to_deg = 57.29577951;

  std::cout << "distance = " << pda->distance;
  std::cout << ", angle = " << pda->angle * Rad_to_deg;
  std::cout << " degrees" << '\n';
}

void rect_to_polar(const rect * pxy, polar * pda)
{
  using namespace std;
  pda->distance = sqrt(pxy->x * pxy->x + pxy->y * pxy->y);
  pda->angle = atan2(pxy->y, pxy->x);
}
View Code

传递结构体

#include <iostream>
#include <cmath>

struct polar{
  double distance;
  double angle;
};

struct rect{
  double x;
  double y;
};

polar rect_to_polar(rect xypos);
void show_polar(polar dapos);

int main(int argc, char const *argv[]) {
  using namespace std;

  rect rplace;
  polar pplace;

  std::cout << "Enter the x and y values: " << '\n';

  while (cin >> rplace.x >> rplace.y){
    pplace = rect_to_polar(rplace);
    show_polar(pplace);
    std::cout << "Next two numbers (q to quit) :" << '\n';
  }

  return 0;
}



polar rect_to_polar(rect xypos)
{
  using namespace std;
  polar answer;
  answer.distance = sqrt(xypos.x * xypos.x + xypos.y * xypos.y);
  answer.angle = atan2(xypos.y, xypos.x);
  return answer;
}

void show_polar(polar dapos)
{
  using namespace std;
  const double Rad_to_deg = 57.29577951;

  std::cout << "distance = " << dapos.distance << '\n';
  std::cout << ", angle = " << dapos.angle * Rad_to_deg << '\n';
}
View Code

猜你喜欢

转载自www.cnblogs.com/renfanzi/p/7531565.html