main file main
authorAlma Dejus <almde515@student.liu.se>
Tue, 31 Oct 2023 09:52:06 +0000 (10:52 +0100)
committerAlma Dejus <almde515@student.liu.se>
Tue, 31 Oct 2023 09:52:06 +0000 (10:52 +0100)
src/uppgift13.cc

index 64b494b2e3d38df1acadeb8769db25f83d9c414c..3c65e51012302c069fc3123a1864be98dd2705a8 100644 (file)
@@ -1,6 +1,6 @@
 #include <iostream>
 #include "expression.h"
-
+#include <stdexcept>
 
 int main()
 {
@@ -12,29 +12,39 @@ int main()
 
   while (std::getline(std::cin, line))
   {
-    if (line == ":prefix")
-    {
-      std::cout << e.to_prefix_string() << std::endl;
-    }
-    else if (line == ":infix")
-    {
-      std::cout << e.to_infix_string() << std::endl;
-    }
-    else if (line == ":postfix")
-    {
-      std::cout << e.to_postfix_string() << std::endl;  
-    }
-    else if (line == ":calc")
-    {
-      std::cout << "Value: " << e.evaluate() << std::endl;
-    }
-    else if (line == ":quit")
-    {
-      break;
+    if (line[0] == ':') {
+      if (line == ":prefix")
+      {
+        std::cout << e.to_prefix_string() << std::endl;
+      }
+      else if (line == ":infix")
+      {
+        std::cout << e.to_infix_string() << std::endl;
+      }
+      else if (line == ":postfix")
+      {
+        std::cout << e.to_postfix_string() << std::endl;  
+      }
+      else if (line == ":calc")
+      {
+        std::cout << "Value: " << e.evaluate() << std::endl;
+      }
+      else if (line == ":quit")
+      {
+        break;
+      }
+      else {
+        std::cout << "Uknown command, try again!\n";
+      }
     }
     else 
     {
-      e = line;
+      try{
+        e = line;
+      }
+      catch(std::logic_error&) {
+        std::cout << "Input can only be command (start with ':') or expression (numbers and operators). Try again!\n";
+      }
     }
   }
   return 0;