Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 与其他几个具有相同输入的编译器相比,在Xcode中编译的代码给出了不正确的(?)输入_C++_Xcode_Xcode10.1 - Fatal编程技术网

C++ 与其他几个具有相同输入的编译器相比,在Xcode中编译的代码给出了不正确的(?)输入

C++ 与其他几个具有相同输入的编译器相比,在Xcode中编译的代码给出了不正确的(?)输入,c++,xcode,xcode10.1,C++,Xcode,Xcode10.1,来自Xcode(不正确)和其他(基于web的编译器)的测试输入和输出如下: 输入1:3300.9040 Xcode输出1: 可接受成功率:0.90 平均尝试销售额:30.00 平均完成销售额:19.33 观察到的成功率:0.64 观察到的成功率不在可接受范围内。 程序以退出代码结束:0 其他编译器的输出1(正确): 可接受成功率:0.90 平均尝试销售额:30.00 平均完成销售额:19.67 观察到的成功率:0.66 观察到的成功率不在可接受范围内 输入2:10100 0.5 1 Xcode输

来自Xcode(不正确)和其他(基于web的编译器)的测试输入和输出如下:

输入1:3300.9040

Xcode输出1: 可接受成功率:0.90
平均尝试销售额:30.00
平均完成销售额:19.33
观察到的成功率:0.64

观察到的成功率不在可接受范围内。
程序以退出代码结束:0

其他编译器的输出1(正确): 可接受成功率:0.90
平均尝试销售额:30.00
平均完成销售额:19.67
观察到的成功率:0.66

观察到的成功率不在可接受范围内

输入2:10100 0.5 1

Xcode输出2: 可接受成功率:0.50
平均尝试销售额:100.00
平均完成销售额:29.40
观察到的成功率:0.29

观察到的成功率不在可接受范围内。
程序以退出代码结束:0

其他编译器的输出1(正确): 可接受成功率:0.50
平均尝试销售额:100.00
平均完成销售额:28.80
观察到的成功率:0.29

观察到的成功率不在可接受范围内

#include <iostream>
#include  <iomanip>
#include <stdlib.h>
using namespace std;

int main()
{
    int iterations, seed;
    double successRate;

    float completedSales = 0, numAttempted;
    int  i, t;
    int seatChoice;

    //Add other variables necessary for your program

    //cout << "Please enter number of iterations to be evaluated" <<endl;
    cin >> iterations; //number of iterations to be evaluated

    //cout << "Please enter number of attempted sales" <<endl;
    cin >> numAttempted; //number of attempted sales

    //cout << "Please enter expected success rate" <<endl;
    cin >> successRate;

    //cout << "Please enter seed for random number generation" <<endl;
    cin >> seed; //seed for random number generation


    //Validate input
    if(iterations <= 0 || numAttempted < 0 || seed < 0 ) {
        cout << "Error. Invalid parameters.";

    }
    else if(successRate < 0 || successRate > 1) {
        cout << "Error. Invalid parameters.";
    }
    else {
        //Set seed and start iterations
        srand(seed);

        //Every iteration of the simulation starts by setting all seats to empty

        for(i = 0; i < iterations; ++i) {

            int availableSeats[30] = {0};

            for(t = 0; t < numAttempted; ++t) {
                seatChoice = (rand() % 30);

                if(availableSeats[seatChoice] == 0) {
                    availableSeats[seatChoice] = 1.0;
                    completedSales++;
                }
            }
        }
        float averageSales = (float) completedSales/iterations;
        float observedSuccessRate = (float) averageSales/numAttempted;

        //Complete final output:
        cout << setprecision(2) <<fixed;
        cout << "Acceptable success rate: "  <<successRate <<endl;
        cout << "Average attempted sales: " <<(double)numAttempted <<endl;
        cout << "Average completed sales: " <<averageSales <<endl;
        cout << "Observed success rate: " <<(float)observedSuccessRate <<endl;

        //Complete if statement to test success rate
        if(observedSuccessRate < successRate) {
            cout << "Observed success rate not in acceptable range." << endl;
        }
        else {
            cout << "Observed success rate is acceptable." << endl;
        }
    }
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int迭代,种子;
双成功;
float completedSales=0,numtempted;
int i,t;
国际海运选择;
//添加程序所需的其他变量

//couth重新读取代码时,“不正确”行为是否只是给定同一种子的不同结果?这可能是由于C++代码编译器(和标准库)之间的<代码> SRand < /C> >和<代码> RAND < /代码>的不同实现。 Xcode使用Clang,默认为libc++,而您的其他编译器可能使用GCC,它使用libstdc++。Microsoft Visual Studio编译器也有自己的实现。 通常,您不能依赖于这些实现是平等的


您可以选择创建自己的伪随机数生成器(PRNG)或者使用内置的
std::mt19937
。这应该会在不同平台上产生相同的结果。

欢迎使用StackOverflow!你能澄清一下为什么你认为Xcode的行为不同吗?我说代码的行为不同,因为我应该得到正确或预期的输出,但我得到的输出有点不正确。没有模式识别。如果用户抱怨浮点舍入错误(本例中较大),他们至少应该使用一组固定的输入,而不是将其留给
rand()
生成。是的,“不正确”输出是Xcode用相同的种子输出的。我尝试了几种不同的基于web和IDE的编译器,它们都输出了预期的或“正确的”同样,感谢您的推荐@Botje我认为对于这个特定的应用程序,应用一个修复程序可能会有点过分,因为它最终将在不同的环境中运行,但现在我至少知道如果在调试数小时后我的输出关闭,我会使用多个编译器