gpt4 book ai didi

c++ - 在此代码中验证半径时遇到问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:14 25 4
gpt4 key购买 nike

我有以下代码,我试图在其中验证半径。如果半径为零或负数,我应该给用户无限的机会再次写入半径直到它有效。当我测试代码时,我写了一个负值,它工作得很好,它给了我无穷无尽的机会,直到我给出一个有效值,但如果我从一开始就写了一个正确的值,它让我再次写这个值,就像它一样不正确。

#include <iostream>
#include <stdlib.h>
#include "listaEnlazada.h"

using namespace std;
using namespace listaenlazada;

void menu()
{
cout << "\n\t\tLISTA ENLAZADA SIMPLE\n\n";
cout << "1. Insert at begginig " << endl;
cout << "2. Insert at the end " << endl;
cout << "3. Insert in a specific position " << endl;
cout << "4. Write list " << endl;
cout << "5. Search element " << endl;
cout << "6. Exit " << endl;
}

int main() {
CircPtr cabezaLista = NULL, position;
int op;
string name;
double radius;
double x;
double y;
int pos;

do {
menu();
cin >> op;

switch(op)
{
case 1:
cout << "Write the name of the circle: ";
cin >> name;
cout << "\n Write radius: ";
cin >> radius;
do{
cout << "Invalid input. ";
cin >> radius;
}while(radius <= 0);
cout << "\n Write center: ";
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
insertarCabeza(cabezaLista, name, radius, x, y);
break;

case 2:
cout << "Write the name of the circle: ";
cin >> name;
cout << "\n Write radius: ";
cin >> radius;
do{
cout << "Invalid input. ";
cin >> radius;
}while(radius <= 0);
cout << "\n Write center: ";
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
insertarFinal(cabezaLista, name, radius, x, y);
break;

case 3:
cout << "Write the name of the circle: ";
cin >> name;
cout << "\n Write radius: ";
cin >> radius;
do{
cout << "Invalid input. ";
cin >> radius;
}while (radius <= 0);
cout << "\n Write center: ";
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
cout << "Position : ";
cin >> pos;
posicion = buscarPosicion(cabezaLista, pos-1);
if (posicion != NULL)
insertarPosicion(posicion, name, radius, x, y);
break;
case 4:
cout << "\n\n Showing list : ";
escribirLista(cabezaLista);
break;
case 5:
cout << "\n Center of circle to search: ";
cout << "X: ";
cin >> x;
cout << "Y: ";
cin >> y;
buscarElemento(cabezaLista, x, y);
break;
case 6:
cout << "\n End of the program. ";
break;
}
cout << endl;
}while(op != 6);
return 0;
}

最佳答案

只需使用 while 循环而不是 do while 循环。在您的代码中,由于 cin,您正在获取一个输入值,对于用户输入的任何值,接下来执行 while 循环而不检查条件,以便您在正确的半径输入上提示无效输入。

代替这个

    cout << "\n  Write radius: ";
cin >> radius;
do{
cout << "Invalid input. ";
cin >> radius;
}while(radius <= 0);

这样做

cout << "\n  Write radius: ";
cin >> radius;
while(radius <= 0){
cout << "Invalid input. ";
cin >> radius;
}

了解循环的基础知识。

关于c++ - 在此代码中验证半径时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com