我做了这个柜台,但它没有工作,我真的不知道如何解决它.. 计数器应该做下一步:
a=1/1.5=0.66
a=0.66/1.49=0.44
a=0.44/1.48=0.29
所以决赛" a"应该是0.29,但小数点计数器没有正常工作,这里是我的代码
#include <string>
#include <iostream>
using namespace std;
int main(){
string test="aaa";
double i,j;
double a=1.0;
for (size_t j = 0; j < test.size(); j++)
{
for ( i = 1.5;i > 0.0;i = i - 0.01)
{
while (test[j] == 'a')
{
a=a/i;
break;
}
}
}
cout <<"a="<<a<<endl;
system("pause");
return 0;
}
如何修复小数点计数器,使字符串中的每个字符减少0.01?
答案 0 :(得分:0)
代码中有太多循环。您可以在循环中使用单个for
循环:
a
这导致了以下内容:
#include <string>
#include <iostream>
int main(){
std::string test = "aaa";
double a=1.0;
for (std::size_t j = 0; j < test.size(); ++j) {
if (test[j] == 'a') {
a /= (1.5 - 0.01 * j);
std::cout << "a=" << a << '\n';
}
}
}
进一步解释这一行:
a /= (1.5 - 0.01 * j);
您应该将计算结果视为:
a = 1 / (1.5 - 0.01 * 0) = 0.66
a = 0.66 / (1.5 - 0.01 * 1) = 0.44
a = 0.44 / (1.5 - 0.01 * 2) = 0.30
是:
a = 1 / (1.5 - 0) = 0.66
a = 0.66 / (1.5 - 0.01) = 0.44
a = 0.44 / (1.5 - 0.02) = 0.30
上面的代码将产生:
α= 0.666667
α= 0.447427
α= 0.302316
答案 1 :(得分:0)
我的时间太慢了,但这里的解决方案与杰弗里给出的解决方案类似:
#include <string>
#include <iostream>
using namespace std;
int main(int, char**)
{
string test="aaa";
double i = 1.5;
double a = 1.0;
for (unsigned int j = 0; j < test.length(); ++j)
{
a = a / i;
i -= 0.01;
}
cout << "a=" << a << endl;
return 0;
}
结果是0.302316