我是一个全新的c++,我正在为学校的小控制台项目工作。我创建了像恒温器这样的东西。当你运行那个应用程序时,它会要求用户输入。
i - informations
t - temperature settings
q - quit
+ - add to temperature by 1
- - remove from temperature by 1
一切都很好,我可以按“i”,我可以按+/-,一切都很好。但当我按“t”,输入一些温度并确认,我会收到正确的React。但现在,无论我按什么,它都会进入开关的“默认”部分。为什么会发生在我身上?然后我只按“enter”,然后再按“t”,它又开始工作了。
如您所见,在我输入“18”后,我按了回车键。系统会显示温度将设置为18,继电器打开。如果我想关闭应用程序,我应该按“q”,或者我可以继续设置新的温度。无论我按什么,它都会显示:“Zly vstup. Stlacte tlacidlo 'i' pre viac informacii”,这是从开关的“默认”部分。我可以按任何东西,所有的时间这将显示,直到我按下“回车”,然后我可以输入“t”再次和它的工作。
为什么会这样?
代码如下:
#include <iostream>
#include <string>
using namespace std;
int input;
int temp = 20;
int oldTemp = 20;
string relay = "vypnute";
int main() {
printf("Regulator teploty Turbo 3000 \nAktualna teplota: %d stupnov celzia, rele je %s. \nStlacte tladiclo 'i' pre informacie: ", temp, relay.c_str());
while(input != 'q'){
input = getchar();
getchar();
switch(input){
case 'i': case 'i ':
if(temp != 20){
relay = "zapnute";
}
printf("Aktualne je nastavena teplota na %d stupnov celzia, rele je %s. \n", temp, relay.c_str());
printf(" i Info \n\ t Zadanie teploty od 10 do 35 stupnov \n\ + Zvysenie teploty o 1 stupen \n\ - Znizenie teploty o 1 stupen \n\ q Koniec programu \n");
break;
case 't': case 't ':
printf("Zadajte pozadovanu teplotu: ");
cin >> input;
if(input > 35 || input < 10){
printf("Zadajte teplotu v rozmedzi od 10 do 35 stupnov. \nStlacte 't' pre zadanie novej teploty. ");
break;
}
if(input == temp){
relay = "vypnute";
}
else{
relay = "zapnute";
}
printf("Teplota bude nastavena z povodnych %d na pozadovanych %d stupnov, rele je %s.",temp, input, relay.c_str());
temp = input;
printf("\nAk chcete ukoncit regulator, stlacte 'q', inak pokracujte v nastavovani teploty. ");
break;
case '+': case '+ ':
if(temp+1 > 35){
printf("Teplota nemoze byt vyssia ako 35 stupnov. ");
break;
}
relay = "zapnute";
printf("Teplota bola zvysena z povodnych %d na pozadovanych %d stupnov, rele je %s. ",temp, temp+1, relay.c_str());
temp++;
printf("\nAk chcete ukoncit regulator, stlacte 'q', inak pokracujte v nastavovani teploty. ");
break;
case '-': case '- ':
if(temp-1 < 10){
printf("Teplota nemoze byt mensia ako 10 stupnov. ");
break;
}
relay = "zapnute";
printf("Teplota bola znizena z povodnych %d na pozadovanych %d stupnov, rele je %s. ",temp, temp-1, relay.c_str());
temp--;
printf("\nAk chcete ukoncit regulator, stlacte 'q', inak pokracujte v nastavovani teploty. ");
break;
case 'q': case 'q ':
break;
default:
printf("Zly vstup. Stlacte tlacidlo 'i' pre viac informacii. ");
break;
}
}
if(temp == oldTemp){
relay = "vypnute";
}
else{
relay = "zapnute";
}
printf("Dakujeme za pouzivanie Regulatora Turbo 3000. \nTeplota je po novom nastavena na %d stupnov celzia a rele je %s. ", temp, relay.c_str());
printf("Stlacte 'enter' pre ukoncenie aplikacie.");
getchar();
return 0;
}
1条答案
按热度按时间qnyhuwrf1#
感谢@π ντα,我能够解决我的问题.
下面是新的工作代码: