2011-01-29 58 views
1

因此,通常在喝了一晚之后,我回到家中,通过编程来检查醉酒的程度,我决定制作一个计算器程序,但我得到了一个错误,现在我可以“T去睡觉。可有人请从这个苦难删除我有什么不对这个代码?C++调试;我看不到一个错误:(

#include <cstdlib> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    double num1; 
    double num2; 
    char redo; 
    char operation; 
    do 
     { 
     cout<< "Please enter your calculation "<< endl; 
     cin >> num1 >> operation >>num2; 
     switch operation { 
      case '+': 
      cout<< "" <<num1+num2 << endl; 
      break; 

      case '/': 
      cout<< "" <<num1/num2 << endl; 
      break; 

      case '*': 
      cout<< "" <<num1*num2 << endl; 
      break; 

      case '/': 
      cout<< "" <<num1/num2 << endl; 
      break; 

     } 
     while (redo=='y'||redo=='Y'); 
    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

我的第一个调试错误是在COUT ..我一直无法入睡:(


YAY我没醉!我得到它的工作!Thajink yoou giusy所以mcuh! 哦,继承人的代码BTW:

#include <cstdlib> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    double num1; 
    double num2; 
    char redo; 
    char operation; 
    do 
     { 
     cout<< "Please enter your calculation "<< endl; 
     cin >> num1 >> operation >>num2; 
     switch (operation) { 
      case '+': 
      cout<< num1+num2 << endl; 
      break; 

      case '-': 
      cout<< num1-num2 << endl; 
      break; 

      case '*': 
      cout<< num1*num2 << endl; 
      break; 

      case '/': 
      cout<< num1/num2 << endl; 
      break; 

     } 
    cout<<" Do you want to continue? "; 
    cin>>redo; } 

    while (redo=='y'||redo=='Y'); 
} 
+1

有什么错误?它是运行时错误吗?或编译时? – Nawaz 2011-01-29 05:20:25

+1

你收到了什么错误,你输入了什么数据? – Elalfer 2011-01-29 05:22:00

+5

我不认为这与错误有关,但为什么你有2`/`操作?我认为你需要去睡觉的人;) – Elalfer 2011-01-29 05:24:00

回答

0

其中cout?你在你的程序中使用它5次。

您正在阅读redo,但未向其分配任何值。这不太可能正确。

2

您的程序缺少switch声明的结束大括号;我不确定这是否是将代码复制到帖子中的错误,或者如果这是对您的困境实际负责的问题。

在一个有点不相关的笔记,我注意到,在你的代码的几个景点你写

cout<< "" <<num1+num2 << endl; 

您不需要打印出来的总和,提前打印空字符串;你可以只写

cout<< num1 + num2 << endl; 

你可能有另一个问题是,你的代码回路与此条件:

while (redo=='y'||redo=='Y'); 

然而,你的代码永远不会分配一个值redo,所以这不确定的行为 - 它可以永远循环,或循环一次。

希望这有助于解决问题!

0

你第二种情况应该是' - '而不是'/'。没有足够的结束括号。

这个工作对我来说:

#include <cstdlib> 
#include <iostream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    double num1; 
    double num2; 
    char redo; 
    char operation; 
    do 
    { 
    cout<< "Please enter your calculation "<< endl; 
    cin >> num1 >> operation >>num2; 
    switch (operation) 
     { 
     case '+': 
     cout<< "" <<num1+num2 << endl; 
     break; 

     case '-': 
     cout<< "" <<num1-num2 << endl; 
     break; 

     case '*': 
     cout<< "" <<num1*num2 << endl; 
     break; 

     case '/': 
     cout<< "" <<num1/num2 << endl; 
     break; 
     } 
    } 
    while (redo=='y'||redo=='Y'); 
    system("PAUSE"); 
    return EXIT_SUCCESS; 

} 
0

一些错误,我可以看到:

  1. 没有为switch块缺少一个右括号}

  2. 在开关条件应该是在括号:

    switch (operation) { 
        ^  ^
    
  3. 有重复case '/'。案例-丢失。

  4. 变量redo正在使用未初始化。你需要问用户他是否想继续。阅读变量redo中的响应。

See it