Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++ 我的UVa代码有什么问题_C++ - Fatal编程技术网

C++ 我的UVa代码有什么问题

C++ 我的UVa代码有什么问题,c++,C++,我试图用UVa解决这个问题,但我得到了一个错误的答案,我似乎找不到错误 #包括 #包括 使用名称空间std; int main() { int t,j,k,i=1; 字符a[1000]; while(scanf(“%d”、&t)!=EOF&t) { 整数和=0; getchar(); 获得(a); k=strlen(a); 对于(j=0;j 将您的代码划分为执行特定操作的函数:从文件中读取数据,计算每个输入的按键次数,输出结果 好处: 您可以独立地测试每个函数。对代码进行推理也更容易 输入的最

我试图用UVa解决这个问题,但我得到了一个错误的答案,我似乎找不到错误

#包括
#包括
使用名称空间std;
int main()
{
int t,j,k,i=1;
字符a[1000];
while(scanf(“%d”、&t)!=EOF&t)
{
整数和=0;
getchar();
获得(a);
k=strlen(a);
对于(j=0;j
  • 将您的代码划分为执行特定操作的函数:从文件中读取数据,计算每个输入的按键次数,输出结果
  • 好处: 您可以独立地测试每个函数。对代码进行推理也更容易

  • 输入的最大大小为100,这意味着每个输入只需要101个字符的数组(包括最后的
    \0
    ),而不是1000个字符

  • 由于这个问题也被标记为
    C++
    请尝试在代码中使用
    std::vector
    std::string

  • 粗略地看一下
  • 的内部
    。拥有一个计算按键次数的专门功能的好处是,您可以轻松地验证它是否正确。请确保彻底检查它


    在问题描述中,有一个数字表示以后将输入的文本数。您的原始代码试图在每行输入之前读取该数字

    尝试读取每行中的数字将失败,因为输入字符集不包含任何数字,因此您可能倾向于认为应该没有差异。但是,当您尝试读取数字时,它将首先使用前导空格。如果输入为:

    a


    输出应为3(两个“0”键和一个“2”键),但尝试从行外读取数字将使用两个前导空白字符,后面的
    get
    将读取字符串
    “a”
    ,而不是
    “a”
    。您的计数将被前导空格的数量所抵消。

    while
    循环似乎不正确,是吗?是否要在每次迭代中读取
    t
    ?是的,t表示案例数显示多次案例数是否显示在您的输入中?是否要在每次迭代中读取
    t
    -dribeas案例数在输入开始时出现一次。将工作负载划分为:读取T和T行(工作负载)每一行的处理,输出每一行的结果,应该让他考虑所有这些问题,并希望导致更好的代码……是的@ DavidRodr Guez DeBeasasAdter我使用了101个字符,但我仍然得到同样的错误答案。@ SaveDoc,你得到错误答案的事实与101个字符几乎没有。删除所有的代码和ST。再次开始,根据我的答案编写专用函数。独立测试每个函数。如果有任何新问题,请返回。@swapedoc对于初学者,“第一行输入将是正整数T,其中T表示测试用例的数量。然后,T行将跟随”从问题描述中,我建议使用一个文件作为输入。我也没有看到删除所有代码并重新开始的提示,根据我的回答请求编写专用函数。这次我计算了每种情况下的总和值,发现编译器没有读取字符串的第一个字符,这是为什么@Andrei@swapedoc你的变化不相关…问题指出“输入的第一行将是一个正整数T,其中T表示测试用例的数量。然后,T行将紧跟在每一行之后,仅包含空格和小写字母。每一行将包含至少1个字符,最多100个字符。”由于代码使用<代码>命名空间STD< /C> >这是明显的C++。请编写一个函数,生成/填充一个<代码> STD::vector < /COD>包含您需要处理的测试用例。
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int main()
    {
    int t,j,k,i=1;
    char a[1000];
    
    while(scanf("%d",&t)!=EOF && t)
    {
    int sum=0; 
    getchar();
    
    gets(a);
    
    k=strlen(a);
    
    for(j=0;j<k;j++)
               {     if(a[j]=='a'||a[j]=='d'||a[j]=='g'||a[j]=='j'||a[j]=='m'||a[j]=='p'||a[j]=='t'||a[j]=='w'||a[j]==32)
                    sum=sum+1;
                    else if(a[j]=='b'||a[j]=='e'||a[j]=='h'||a[j]=='k'||a[j]=='n'||a[j]=='q'||a[j]=='u'||a[j]=='x')
                    sum=sum+2;
                    else if(a[j]=='c'||a[j]=='f'||a[j]=='i'||a[j]=='l'||a[j]=='o'||a[j]=='r'||a[j]=='v'||a[j]=='y')
                    sum=sum+3;
                    else if(a[j]=='s'||a[j]=='z')
                    sum=sum+4;
                }
    
    printf("Case #%d: %d\n",i,sum);
    i++;
    }
    return 0;
    }