Проверка истинности выражения

193
26 декабря 2019, 00:00

С клавиатуры через пробел вводится: строка str1, знак операции < > == >= <= != , строка str2.

Проверьте истинность неравенства/равенства.

Написал код, но не знаю как довести до ума. Если кто-нибудь знает, помогите)) Спасибо!

    #include <iostream>
    #include <cstring>
    #include <string>
    using namespace std;
    class String{
        size_t len;
        char *str;
    public:
        String (): len(0), str(nullptr){}
        String(const String&src);
        String(const char *str);
        ~String() { delete[] str; }
        size_t length() const { return len; }
        bool operator <(const String&s);
        bool operator >(const String&s);
        bool operator ==(const String&s);
        bool operator <=(const String&s);
        bool operator >=(const String&s);
        bool operator !=(const String&s);
        friend istream &operator >>(istream &in, String &s);
        friend ostream &operator <<(ostream &out, const String s);
    };
    String::String(const String &src){
        len = src.len;
        this->str = new char[len+1];
        strncpy(str, src.str, len);
    }
    String::String(const char*s){
        len = strlen(s);
        str = new char[len+1];
        strncpy(str, s, len);
    }
    bool String::operator ==(const String &s){
        return strncmp(str, s.str, len)== 0;
    }
    bool String::operator <=(const String &s){
        return *this == s.str || *this < s.str;
    }
    bool String::operator >=(const String &s){
        return *this == s.str || *this > s.str;
    }
    bool String::operator !=(const String &s){
        return !strncmp(str, s.str, len);
    }
    bool String::operator <(const String &s){
        return strncmp(str, s.str, len) < 0;
    }
    bool String::operator >(const String &s){
        return strncmp(str, s.str, len) > 0;
    }    
    istream &operator >>(istream &in, String &s){
        char *buf = new char[100001];
        in.getline(buf, 100000);
        delete [] s.str;
        s.len = strlen(buf);
        s.str = new char[s.len+1];
        for(unsigned int i = 0; i < s.len; ++i)
            s.str[i] = buf[i];
        delete [] buf;
        return in;
    }
    ostream &operator <<(ostream &out, String s){
        for (unsigned int i = 0; i < s.len; ++i)
            out << s.str[i];
        return out;
    }

    int main(){
    String a, b;
    char s;
    cin >> a >> s >> b;
    if(s == ">")
    cout << (a > b? "YES": "NO");
else if(s == ">=")
    cout << (a >= b? "YES": "NO");
else if(s == "<")
    cout << (a < b? "YES": "NO");
else if(s == "<=")
    cout << (a <= b? "YES": "NO");
else if(s == "==")
    cout <<(a == b? "YES": "NO");
else if(s == "!=")
    cout <<(a != b? "YES": "NO");
    return 0;
    }
Answer 1

Если я правильно понял, вы хотите следующие. Человек вводит первое число, вводит оператор (больше, меньше и тд) и второе число. Вы хотите отловить эти числа и оператор и вывести на экран информацию а-ля, 10 больше 9.. 10 равен 10 и тд... Такое реализуемо как пример таким методом. Написал на скорую руку, думаю код сам за себя говорит.

// Example program
#include <iostream>
#include <string>
int main()
{
  std::string str1;
  std::string str2;
  std::string str3;
  getline (std::cin, str1);
  getline (std::cin, str2);
  getline (std::cin, str3);
  if(str2.compare("==") == 0)
  {
      if(str1.compare(str3) == 0)
      {
          std::cout << "True";
      }else{
          std::cout << "False";
      }
  }else{
      std::cout << "Wrong Compare";
  }
}
READ ALSO
Как изменить размер консоли в C++?

Как изменить размер консоли в C++?

Нужно с помощью кода C++ изменить размер консоли, но как именно это сделать не имею представления, в интернете нашёл что-то system ("mode con cols=x lines=y");Но...

134
Вывод символов в консоли C++

Вывод символов в консоли C++

Имеются различные символы, и нужно выводить их в консолиНапример хочу вывести ─╔══╗╔══╦═══╦═══╦но вместо этих символов в консоли...

131
Почему не выводится карта в диалоге?

Почему не выводится карта в диалоге?

У меня программа зависает когда я пытаюсь вывести окно qmlArcGis я установил

151
Примитивное окно загрузки приложения

Примитивное окно загрузки приложения

Посоветуйте библиотеку для создания примитивного окна загрузки приложения

137