4月ごろからプログラミングの勉強を始めました。
簡単なモノは書けるようになりました。
とりあえず単位変換のプログラムを書いてみました。
書いたと言ってもmain関数だけですけど。
入力関数は教えてくれている人が作ったやつをそのまま使っています。
まだ書けないので…
どうやら使える関数はそのまま使うことで時間短縮していくのが普通みたいですが、どう処理しているかだけは絶対に理解したいとは思っています。
今回書いたのはこれです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
#include<stdlib.h> | |
#include<limits.h>//in gcc | |
#include<errno.h>//in gcc | |
#ifndef __cplusplus | |
#define nullptr NULL | |
#endif | |
double get_integer_num(const double max, const double min){ | |
//機能:標準入力を数字に変換する。 | |
//引数:戻り値の最大値,戻り値の最小値 | |
//戻り値:入力した数字、エラー時は-1,EOFのときはEOF | |
char s[100]; | |
char *endptr; | |
if (nullptr == fgets(s, 100, stdin)){ | |
if (feof(stdin)){//エラーの原因がEOFか切り分け | |
return EOF; | |
} | |
return INT_MIN; | |
} | |
if ('\n' == s[0]) return INT_MIN; | |
errno = 0; | |
const long t = strtol(s, &endptr, 10); | |
if (0 != errno || '\n' != *endptr || t < min || max < t) | |
return INT_MIN; | |
return (double)t; | |
} | |
double getnum_customized(const double max, const double min){ | |
if (max < min) return -1; | |
int flag0; | |
bool temp_judge; | |
do{ | |
flag0 = get_integer_num(max, min); | |
temp_judge = (INT_MIN == flag0); | |
if (temp_judge){ | |
system("cls"); | |
puts("再入力してください。"); | |
} | |
} while (temp_judge); | |
return flag0; | |
} | |
int main(){ | |
printf("K(ケルビン)から摂氏に変換したい場合は”1”を摂氏からKに変換したい場合は”2”を入力してください。\n "); | |
int number = getnum_customized(2,1); | |
if(number == 1){ | |
printf("摂氏に変換したいKの値を入力してください。\n"); | |
double kni = getnum_customized(INT_MAX,0); | |
double cni = kni - 273.15; | |
printf("%5.2fKは%5.2f度です。",kni,cni); | |
return 0; | |
} | |
if(number == 2){ | |
printf("Kに変換したい摂氏の値を入力してください。\n"); | |
double citi = getnum_customized(INT_MAX,-273.15); | |
double kiti = citi + 273.15; | |
printf("%5.2f度は%5.2fKです。",citi,kiti); | |
return 0; | |
} | |
return 0; | |
} |
”1”を押すと”Kから℃へ”
”2”を押すと”℃からKへ”
への変換フォームに移動します。
そこで好きな値を入れると対象のものに変換してくれます。
それだけです。
打てない数字は打てないようになっています。
例えばKは0未満は打てません。
はい。
スポンサーリンク
0 件のコメント :
コメントを投稿