我的代码有问题。我正在使用OPENGL c ++完成我的最终项目。
我想在opengl中创建一个关于模拟2D的代码。在我的模拟中,我要求用户输入可以在应用程序中显示的对象数量。我的问题是输入无法检测字符,但如果超出范围则可以检测数字。我已经创建了一个代码,用于处理超出范围,范围内的字符不起作用。
例如: 我输入了' a'的字符,想要显示错误处理。喜欢" maaf,jumlah inputan anda tidak berada dalam range。",所以只输入数字。
void inputan(){
printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
scanf("%f",&input);
if(input > 50 || input < 1){
ulang();
}
char a = 'a';
int aa=a;
else if(input == aa){
ulang();
}
}
void ulang(){
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");scanf("%f",&input);
if(input > 50 || input < 1){
ulang();
}
char a = 'a';
int aa=a;
else if(input == aa){
ulang();
}
}
答案 0 :(得分:1)
好吧,看看你的代码,我认为有很多问题。在尝试编程2D模拟之前,您可能应该阅读C / C ++手册。
所以你在C中重构的代码看起来可能是:
unsigned int getAntNumber()
{
unsigned int result=0;
printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
while (1!=scanf("%u",&input) || input <1 || input >50)
{
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
return result;
}
编辑以允许多个输入测试:
unsigned int getAntNumber()
{
unsigned int result=0;
int mustEnd=1; /*C, unlike C++ does not allow bool*/
printf("APLIKASI SIMULASI ANIMASI SEMUT\n\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
while ( mustEnd != 0)
{
if (1!=scanf("%u",&input)) /* Caution, this test must be the first one!*/
{
/*Input is not an unsigned integer*/
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
else if (input <1 || input >50)
{
/*Input is out of range*/
printf("---------------------------------------------------\n");
printf("Maaf, jumlah inputan anda tidak berada dalam range.\n");
printf("Silahkan inputkan jumlah semut antara 1 - 50 : ");
}
/*You may add easily more tests here*/
else
{
mustEnd=true;
}
}
return result;
}
答案 1 :(得分:0)
第一个问题。
就c ++而言
这是错误的
if(input > 50 || input < 1){
ulang();
}
char a = 'a'; //cant declare between if and else if
int aa=a;
else if(input == aa){
ulang();
}
但这可以做到
if(input > 50 || input < 1){
ulang();
}
char a = 'a';
int aa=a;
if(input == aa){ //no else if but only if. But i don't know if this serves the purpose
ulang();
}
第二个问题
scanf("%f",&input);
这条线对我们来说非常模糊。如果input
是float类型的全局(文件范围)变量,那么它可以,但是因为你想输入chars
,你需要
scanf("%c",&blah);
因为您无法通过%f
说明符输入字符。如果您提供字符但%f
scanf
会失败。
第3个问题:实际上我希望你已经加入了<cstdio>
。此外,请勿使用scanf
和printf
。他们属于另一个野兽C.