web-dev-qa-db-ja.com

これらの文字を使用しない機能的なC ++プログラム: ';'。 「{」、「}」、「\」

これは、昨年の地域大会で出された問題です。基本的に、EOFに達するまで、format(digit、operator、digit)のいくつかの文字列の結果を出力できる単純なプログラムをC++で作成する必要があります。演算子は通常+ 、-、*、\。

例えば

3+5
2+2
4*3
9/3

結果

8 4 12 3

問題は、文字を使用できないことです。 {} \

私はこのようなものを試しました(2つの整数を追加するだけですが、それは焦点ではありません)

#include<bits/stdc++.h>
#define dummy ;
#define slashDummy '\\'
#define curlDummy {
#define curlDummy2 }
using namespace std dummy


int main() curlDummy
    ios_base::sync_with_stdio(false) dummy
    cin.tie(0) dummy
    int x = 4 dummy
    int y = 5 dummy
    int c = x + y dummy
    cout << c dummy
    return 0 dummy
curlDummy2

しかし、#defineの文字を使用すると、タスクが失敗します。ただし、{をchar(123)で置き換えようとすると、コンパイラーはそれを実行しません(結局はそれを理解しました)。これは、このアプローチが完全に間違っていることを意味します。

私はすべてを#defineすることも試みましたが、私はプログラマーとしてはそれほど上手ではなく、自分が何をしているのかわかりません。

#include <iostream>
#define bAcc char(123)
#define rAcc char(125)
#define div char(92)
#define smcolon char(59)
#define unite2(a, b) a##b
#define unite3(a, b, c) a##b##c
#define Acc unite2(bAcc, rAcc)
#define program "while(cin.get()) if(int a = 'a') if(char b = 'b') if(int c = 'c') while(std::cin >> a && a != EOF && std::cin >> b && std::cin >> c) if(b == '+' && std::cout << a + c << std::endl) Acc else if(b == '-' && std::cout << a - c << std::endl) Acc else if(b == '*' && std::cout << a * c << std::endl) Acc else if(b == char(47) && std::cout << a char(47) c << std::endl) Acc"
#define run unite3(bAcc, program, rAcc)

int main() run

メイン関数ではこのタスクを続行できません。回避しようとしましたが、常に{}が必要です。

この問題を解決するにはどうすればよいですか?お時間をいただきありがとうございます。

4
Teo Oprescu

{および}の代わりに、ダイグラフ<%および%>を使用するだけです。

1
FlatAssembler