Skip to content

Instantly share code, notes, and snippets.

@KOBA789
Created June 30, 2011 11:34
Show Gist options
  • Save KOBA789/1056050 to your computer and use it in GitHub Desktop.
Save KOBA789/1056050 to your computer and use it in GitHub Desktop.
情報の授業でやったbuggyな練習問題を仕様通りに動作させてみた
// 情報の授業でやったbuggyな練習問題を仕様通りに動作させてみた
/*
* ==仕様==
*
* 1.整数の値tを入力する
* 2.それが0-11の範囲なら「おはよう」、12なら「正午」、13-17なら「こんにちは」、18-23なら「こんばんは」、それ以外なら「範囲外」と出力
*/
// 問題のコード(あまりにも汚いインデントだったので整形済み)
//
// #include <iostream>
//
// int main() {
// int t;
// std::cin >> t;
//
// if (t /*(1)*/ 11) {
// std::cout << "おはよう";
// } else if (t == 12) {
// std::cout << "正午";
// } else if (t <= 17) {
// std::cout << "こんにちは";
// } else if (t <= 23) {
// std::cout << "こんばんは";
// } else {
// std::cout << "範囲外";
// }
//
// return 0;
// }
// この「/*(1)*/」の部分を埋めろ、という感じの問題
// しかし、単純に「<=」と書くと、tが0未満の時にも「おはよう」と出力され、仕様通りにならない
// (授業ではそれでいいとされた)
// というわけで、これを仕様通り動作させてみた
#include <iostream>
int main() {
int t;
std::cin >> t;
if (t < 0 && !(t = 24) || t <= 11) {
std::cout << "おはよう";
} else if (t == 12) {
std::cout << "正午";
} else if (t <= 17) {
std::cout << "こんにちは";
} else if (t <= 23) {
std::cout << "こんばんは";
} else {
std::cout << "範囲外";
}
return 0;
}
@KOBA789
Copy link
Author

KOBA789 commented Jun 30, 2011

しかし、それだと負の値の場合に「こんにちは」が出力されてしまうのです

@KOBA789
Copy link
Author

KOBA789 commented Jun 30, 2011

わざと黒魔術使ってますw

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment