fetus Diary
2007/10/13(土) - 多分こんな感じだろう
[fetus@CHIHAYA ~]$ cat sample.cpp
#include <cstdio>
namespace resource {
const char * const OUTPUT_FORMAT = "Celsius = %4d Fahrenheit = %4d %s\n";
const char * const OUTPUT_EXT_NOTHING = "";
const char * const OUTPUT_EXT_WATER_BOILING = "水の沸点";
const char * const OUTPUT_EXT_WATER_MELTING = "水の凝固点";
}
int celsius2fahrenheit(int celsius);
const char * get_ext_information(int celsius);
int main() {
for(int celsius = -20; celsius <= 120; celsius += 10) {
printf(resource::OUTPUT_FORMAT,
celsius,
celsius2fahrenheit(celsius),
get_ext_information(celsius));
}
return 0;
}
int celsius2fahrenheit(int celsius) {
return 32 + celsius * 9 / 5;
}
const char * get_ext_information(int celsius) {
switch(celsius) {
case 0: return resource::OUTPUT_EXT_WATER_MELTING;
case 100: return resource::OUTPUT_EXT_WATER_BOILING;
}
return resource::OUTPUT_EXT_NOTHING;
}
[fetus@CHIHAYA ~]$ g++ sample.cpp
[fetus@CHIHAYA ~]$ ./a.out
Celsius = -20 Fahrenheit = -4
Celsius = -10 Fahrenheit = 14
Celsius = 0 Fahrenheit = 32 水の凝固点
Celsius = 10 Fahrenheit = 50
Celsius = 20 Fahrenheit = 68
Celsius = 30 Fahrenheit = 86
Celsius = 40 Fahrenheit = 104
Celsius = 50 Fahrenheit = 122
Celsius = 60 Fahrenheit = 140
Celsius = 70 Fahrenheit = 158
Celsius = 80 Fahrenheit = 176
Celsius = 90 Fahrenheit = 194
Celsius = 100 Fahrenheit = 212 水の沸点
Celsius = 110 Fahrenheit = 230
Celsius = 120 Fahrenheit = 248
C で書かなかったのは特に意味は無い。ほぼそのまま C に持っていけるし、これ。
get_ext_information 関数の戻り値を std::string にするか悩んだんだけども、まいっか的に const char *。動的に生成するならこんな方法は使えないので std::string あたりで。
# 「これローカルポインタ返してないか? 大丈夫か? 開放しなきゃいけないのか?」と一瞬考えさせる時点でよろしくない設計。
- 07/10/13 17:15
コメント
コメントはありません。