-4

直角座標を極座標に変換するプログラムを作成していますが、プログラムを実行すると、宣言したはずなのに「角度」が宣言されていないと表示されます。プログラムが何も返さないことはわかっていますが、今のところ実行できるようにしたいだけです。

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>

using namespace std;

double random_float(double min, double max);
void rect_to_polar(double x, double y, double &distance, double &angle);

int main() {
    double x, y;
    x = random_float(-1, 1);
    y = random_float(-1, 1);

    rect_to_polar(x, y, distance, angle);
}

double random_float(double min, double max) {
    unsigned int n = 2;
    srand(n);
    return ((double(rand()) / double(RAND_MAX)) * (max - min)) + min;
}


void rect_to_polar(double x, double y, double &distance, double &angle) {
    const double toDegrees = 180.0/3.141593;

    distance = sqrt(x*x + y*y);
    angle = atan(y/x) * toDegrees;

}
4

2 に答える 2

3

angleで呼び出されるものを宣言しませんでしmain()たが、それでもangleそこで名前を使用しました。したがって、エラー。

scopesについて読みたいと思うかもしれません。

于 2015-02-22T21:56:14.110 に答える
0

distanceメインでandを宣言する必要がありangleます。

int main() {
    double x, y, angle, distance;
    x = random_float(-1, 1);
    y = random_float(-1, 1);

    rect_to_polar(x, y, distance, angle);
}
于 2015-02-22T21:56:17.893 に答える