#include void main () { int input, ans, ans1, ans2, flag, sign, i; ans = 0; ans1 = 0; ans2 = 0; flag = 1; sign = 2; /* 最初のループ時:2 整数:0 負数:1 */ i = 0; /* 繰り返しカウンタ ※ 1 文字読み込んだら増やす*/ printf("*** 実行結果 ***\n"); printf(" 1つ目の整数を入力:"); while ((input = getchar()) != '\n') { i++; /* 繰り返しカウンタを増やす */ if (sign == 2) { /* 符号判定 ※最初の 1 回のみ実行される */ if (input == '-') { /* 負数の時 */ sign = 1; input = getchar(); /* '-' を読み飛ばす */ i++; /* 繰り返しカウンタを増やす */ } else { sign = 0; } } if (i > 8) { /* 繰り返しの判定 */ break; /* 所定回数に達したら抜ける */ } if (input >= '0' && input <= '9') { ans = (ans * 10) + (input - '0'); /* 文字数字を 10 進数に変換 */ flag = 0; } else { flag = 1; break; } } if (flag) { /* エラー時 (flag == 1) の処理 */ printf(" *** ERROR: 不正な値が入力されました ***\n"); exit(); } else { /* 正常動作 (flag == 0) の処理 */ if (sign) { /* 負数 */ ans1 = ans * -1; } else { /* 整数 */ ans1 = ans; } } while (input != '\n') { input = getchar(); } /* 必要な変数を初期化する */ ans = 0; flag = 1; sign = 2; /* 最初のループ時:2 整数:0 負数:1 */ i = 0; /* 繰り返しカウンタ ※ 1 文字読み込んだら増やす*/ printf(" 2つ目の整数を入力:"); while ((input = getchar()) != '\n') { i++; /* 繰り返しカウンタを増やす */ if (sign == 2) { /* 符号判定 ※最初の 1 回のみ実行される */ if (input == '-') { /* 負数の時 */ sign = 1; input = getchar(); /* '-' を読み飛ばす */ i++; /* 繰り返しカウンタを増やす */ } else { sign = 0; } } if (i > 8) { /* 繰り返しの判定 */ break; /* 所定回数に達したら抜ける */ } if (input >= '0' && input <= '9') { ans = (ans * 10) + (input - '0'); /* 文字数字を 10 進数に変換 */ flag = 0; } else { flag = 1; break; } } if (flag) { /* エラー時 (flag == 1) の処理 */ printf(" *** ERROR: 不正な値が入力されました ***\n"); } else { /* 正常動作 (flag == 0) の処理 */ if (sign) { /* 負数 */ ans2 = ans * -1; } else { /* 整数 */ ans2 = ans; } printf(" 2つの整数 %d と %d は", ans1, ans2); if (ans1 == ans2) { printf("等しい\n"); } else { printf("異なっている\n"); } } }