プログラムの新しい課題:NaNiNET

アバター
keito94
記事: 264
登録日時: 8年前
連絡を取る:

プログラムの新しい課題:NaNiNET

投稿記事 by keito94 » 8年前

皆さん、この掲示板で質問をしていたら、shira211さんが面白い課題を教えてくれたので、ここで出題します。
演算子と条件分岐の問題となります。
コードはC++のものですが、演算子があってと条件分岐ができる言語であればどれでもOKだと思います。
問題:これは両方ともか片方が何もなければ、Trueという文字を出力し、両方あればFalseという文字を出力するプログラムである。
以下のコードではFalseが出力される。これをTrueが出力するようにせよ。

CODE:

#include 
using namespace std;

bool NaNiET(bool a = false,bool b = false){
	if (!a&&!b){
		cout << "True" << endl;
		return true
	}
	else{
		cout << "False" << endl;
		return false
	}
}

void main(int){
	NaNiET()
	return 0;
}
これの由来はshira211の回答に出てきたPythonの課題です。

CODE:

# Falseが出力される。
print(None and None is None)
略称はprint(None and None is None) =(Equal) "True"を略したものです。
このサイトを見ているプログラマーなら簡単にできると思います。
追記:
ちなみに僕の回答は以下のとおりです。
► スポイラーを表示
最後に編集したユーザー keito94 on 2017年7月21日(金) 18:48 [ 編集 8 回目 ]

アバター
asd
記事: 319
登録日時: 14年前

Re: プログラムの新しい課題:NaNiNET

投稿記事 by asd » 8年前

ちなみに答えはどこに書かれているのでしょうか?
課題だけあって答えがないと自分の答えと正しいか確認できないですよね?

スポイラー(spoilタグで囲む)で囲むとパッと見答えは見えずに済むので、
是非回答を追記してみてください。
► スポイラーを表示
追記:
spoilタグがきちんと閉じていないので答え丸見え状態ですがいいのでしょうか…
投稿前にプレビューで確認、投稿後に実際に確認をするよう心掛けましょう。
最後に編集したユーザー asd on 2017年7月22日(土) 22:13 [ 編集 1 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 14年前

RE: プログラムの新しい課題:NaNiNET

投稿記事 by みけCAT » 8年前

意味が分かりません。
keito94 さんが書きました:コードはC++のものですが
keito94 さんが書きました:以下のコードではFalseが出力される。これをTrueが出力するようにせよ。

CODE:

#include 
using namespace std;

bool NaNiET(bool a = false,bool b = false){
	if (!a&&!b){
		cout << "True" << endl;
		return true
	}
	else{
		cout << "False" << endl;
		return false
	}
}

void main(int){
	NaNiET()
	return 0;
}
このコードは
  • 7, 11, 16行目にセミコロンが抜けている
  • グローバルなmain関数の戻り値の型がintではない
という問題があるため、C++としてコンパイルが通りません。
また、gccではコンパイルが通りましたが、グローバルなmain関数の引数が標準ではないという問題もあります。
そして、以上の問題を修正したコードは、FalseではなくTrueを出力しました。
最後に編集したユーザー みけCAT on 2017年7月21日(金) 22:18 [ 編集 1 回目 ]
理由: コードを引用に含める、他微調整

アバター
purin52002
記事: 235
登録日時: 8年前

Re: プログラムの新しい課題:NaNiNET

投稿記事 by purin52002 » 8年前

真理値表なんか書けばわかりやすいかもしれないですね

CODE:

a b f
0 0 1
0 1 1
1 0 1
1 1 0

!a!b+!ab+a!b
=!a(!b+b)+a!b
=!a+a!b
=!!(!a+a!b)
=!(a(!a+b))
=!(ab)
で !(a&&b) の時にtrueを表示すればいいと^^
オフトピック
今回の問題だと問題文で「両方あればFalse」って書いてるんで 
(a&&b) の時にfalse表示すればいいっていうのがすぐわかっちゃいますね^p^