C++ 用do-while循环编写该算法
我正在尝试解决,“你的车在这里”问题可以通过以下算法解决:C++ 用do-while循环编写该算法,c++,algorithm,for-loop,do-while,C++,Algorithm,For Loop,Do While,我正在尝试解决,“你的车在这里”问题可以通过以下算法解决: #include <iostream> #include <conio.h> using namespace std; int Calculated(char * calc_me); int main() { char * comet_name = (char*)calloc(sizeof(char), 7); if (comet_name == NULL) {return 0;} c
#include <iostream>
#include <conio.h>
using namespace std;
int Calculated(char * calc_me);
int main() {
char * comet_name = (char*)calloc(sizeof(char), 7);
if (comet_name == NULL) {return 0;}
char * group_name = (char*)calloc(sizeof(char), 7);
if (group_name == NULL) {free(comet_name); return 0;}
cout << "Enter the name of the comet: ";
cin >> comet_name;
cout << "Enter the name of the group: ";
cin >> group_name;
if ((Calculated(comet_name) % 47) == (Calculated(group_name) % 47)) {
cout << "GO";
}
else {
cout << "STAY";
}
free (group_name);
free (comet_name);
return 0;
}
int Calculated (char * calc_me) {
int i;
int total = 1;
for (i = 0; i < 7; i++) {
if (calc_me[i] == '0') {break;}
total *= calc_me[i] - 64;
}
getch();
return total;
}
抽象的
USACO
在下面的代码段中,您需要先用一个值初始化
i
,然后才能执行i+=1
。在for循环中的for语句中执行此操作,类似地,也需要在do while循环中执行此操作
int i = 0; // initialize to 0
int total = 0;
do
{
total *= calc_me[i] - 64;
i += 1;
}while(i < 7);
int i=0;//初始化为0
int-total=0;
做
{
总计*=计算单位[i]-64;
i+=1;
}而(i<7);
啊!!找到了
您已将总计初始化为0
。因此,每次乘法都变成0,因此函数总是返回0
将总变量初始化为1
,它应该可以工作
if (calc_me[i] == '0') {break;}
应该读
if (calc_me[i] == '\0') {break;}
您的do-while版本中缺少该条件,以及i
的初始化
但主要问题是您将total
的初始值从1更改为0:
int total = 0;
所以这条线
total *= calc_me[i] - 64;
不断将零乘以下一个值。要求人们发现代码中的错误并不是特别有效。您应该使用调试器(或添加打印语句)来隔离问题,然后构造一个。您能提供示例输入和预期输出吗@罗宾问题更新了你知道做更多的工作和思考是被推荐的。就这样?它不起作用了?没有其他信息吗?我该怎么帮你说“这不管用”。这是运行时错误还是编译错误?编译器在说什么?您忘记了“if(calc_me[i]='0')中断”;在这种情况下,这是您的逻辑错误。或者尝试JCash建议的方法,或者在调试器中逐步检查代码并检查变量。假设我们不需要if语句,我以前尝试过您的解决方案,xbonezI在我的代码中做到了这一点谢谢问题解决问题解决问题解决谢谢
if (calc_me[i] == '\0') {break;}
int total = 0;
total *= calc_me[i] - 64;