微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Do While 循环创建数组输入验证

如何解决使用 Do While 循环创建数组输入验证

我正在编写一个 C++ 代码,您将在其中使用 do-while 循环创建一个数组。 完整代码如下:

const int size = 10;

    
    double *pt1; 
    //executable
    pt1=new double[size];


    int i = 0;
    do{
        cout <<"mile" << "[" << i << "]" << setw(3);
        if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
        {
            cin >> *(pt1+i);
            i++;
        }   
        else if( *(pt1+i) > 100 && *(pt1+i) < 250)
        {
           cout << "100-250 only";
            continue;
        }
    }while(i < 10);

一个输入验证,其中将接受的数字仅为 100-250 之间的数字,但它一直在循环……我找不到问题出在哪里。任何帮助将不胜感激!

解决方法

第一个错误是您正在在实际获得输入之前测试输入的值。这没有意义,你需要改变顺序。所以这个

    if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
    {
        cin >> *(pt1+i);
        ...
    }   
    else if( *(pt1+i) > 100 && *(pt1+i) < 250)
    {
        ...
    }

应该是这个

    cin >> *(pt1+i);
    if(*(pt1+i) >= 100 && *(pt1+i) <= 250)
    {
        ...
    }   
    else if( *(pt1+i) > 100 && *(pt1+i) < 250)
    {
        ...
    }

其次我认为你的意思

else if( *(pt1+i) < 100 || *(pt1+i) > 250)

或者你可以说更好

else

那么就没有机会弄错逻辑了。当您只有两个选择时,您只需测试第一个选择并使用 else 作为第二个选择。无需测试与第一个选项相反的选项,使用普通的 else 会自动执行此操作。

也不需要循环末尾的 continue,循环会自动继续。

最后,pt1[i]*(pt1+i) 更容易阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。