首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >简易洗碗机C++代码

简易洗碗机C++代码
EN

Code Review用户
提问于 2015-01-31 21:48:12
回答 2查看 2.4K关注 0票数 7

我在嵌入式系统中有一个项目,我必须用C编写代码,并使它变得简单。

这是我第一次,这只是一个模拟它应该如何工作。

代码语言:javascript
运行
复制
#include<iostream.h>
#include<stdio.h>

void manualMode();
 void defaultMode();

int temp, timeToWash, operation;

int main() {
     int mode =0, part=3, waterLevel;
     int doorSensor=0, timer = 3,waterLevelSensor = 0, tempSensor = 25;
     char startPause;
     cout<<"Washing Machine CE224"<<endl;
 do{
      cout<<"Choose Mode: (1)Default, (2)Manual \n";
      cin>>mode;
      if (mode == 1)
                 defaultMode();
      if (mode == 2)
                 manualMode();
 }while(mode == 0);

 cout<<"Choose Parts to wash: (1)Upper Only, (2)Lower Only, (3)Upper and Lower \n";
 cin>>part;
 switch(part){
            case 1:
            case 2:
                 waterLevel= 0.5;
                 break;
            case 3:
                 waterLevel = 1;
                 break;
 }
 if (doorSensor == 0){
      do{
                 cout<<"Press (S) to Start,and close the Door."<<endl;
                 cin>>startPause;
                 cout<<"LED is On\n";
                 while(waterLevelSensor != waterLevel){
                             waterLevelSensor++;
                 }
                 while(tempSensor != temp){
                             tempSensor++;
                 }
                 cout<<"Washing Operation Started!               Time Left:"<<timeToWash<<endl;
                 cout<<"Washing with Soap Operation Started!\n";
                 timeToWash = timeToWash / 2 ;
                 cout<<"Rinsing Operation Started!               Time Left:"<<timeToWash<<endl;
                 timeToWash = timeToWash / 2 ;
                 cout<<"Drying Operation Started!               Time Left:"<<timeToWash<<endl;
                 timeToWash = 0 ;
                 startPause = 'P';
      }while((startPause == 's') || (startPause =='S'));
 }
 cout<<"End!\nLED is Off";
 return 0;
}


void manualMode(){
     cout<<"Enter Temperature: \n";
     cin>>temp;
     cout<<"Enter Time to wash: \n";
     cin>>timeToWash;
     cout<<"Choose Operation: (1)Water Only, (2)Water and Soap, (3)Rinse, (4)Dry, (5)All\n";
     cin>>operation;
}
void defaultMode(){
     int whatToWash;
     cout<<"Choose what to Wash: (1)Cups, (2)Plates, (3)Pots";
     cin>>whatToWash;
     switch(whatToWash){
          case 1:
                temp = 30;
                timeToWash = 3;
                break;
          case 2:
                temp = 40;
                timeToWash = 3;
                break;
          case 3:
                temp = 60;
                timeToWash = 3;
                break;
     }
 }
EN

回答 2

Code Review用户

回答已采纳

发布于 2015-01-31 22:11:55

我会对C++的总体改进提出一些建议(我对嵌入式系统不熟悉)。

压痕

确保在代码中使用统一的缩进,以使其更具可读性。(例如,do-while循环,主方法中的开关块应该与开始时的声明处于同一级别。)

代码组织

很好,手动模式和默认模式是两个独立的功能。分解代码可以使人更容易阅读。我还会将其他一些部分导出为单独的功能,特别是主周期。(注:这是一般原则。在嵌入式系统中,可能还有一些其他的考虑因素,我不知道,例如,代码应该尽可能快,而这个建议并不适用。请考虑这个问题。)

变量初始化

我会显式地将每个变量初始化为某些默认值(例如0),即使以后肯定会初始化它。通过这种方式,您肯定可以防止未定义的行为(例如,如果代码稍后被修改,并且在变量不再初始化的情况下引入路径)。

控制流

在用于洗涤循环的do-while循环中,读取startPause,但在循环结束时,将其设置为常量值(与已读取的内容无关)。所以这个循环只运行一次。我认为,要么应该删除整个逻辑,要么以循环依赖于输入值的方式进行改进。

输入验证

在更多的地方,用户需要输入,但从来不检查输入是否在允许值的范围内。在生产系统中,这将是必须的,但在您的情况下,我会澄清是否需要这样做。

票数 4
EN

Code Review用户

发布于 2017-06-20 07:43:41

我发现

代码语言:javascript
运行
复制
int mode=0, part=3, waterLevel;

代码语言:javascript
运行
复制
switch(part){
  case 1:
  case 2:
    waterLevel=0.5;
    break;

这意味着当用户选择"1/2负载“时,机器将尝试在没有任何水(如int(0.5)==0)的情况下进行清洗。虽然环保,因为低的水(和暖气)消耗,我不满意的清洁效果。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/79203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档