※ ChatGPTを利用し、要約された質問です(原文:VSC 2015 電卓プログラムに関して)
VSC 2015 電卓プログラムに関して
このQ&Aのポイント
VSC 2015で電卓プログラムを作成しようとしていますが、2回目以降の計算がうまく行きません。
作成したプログラムは無限ループしてしまい、エラーメッセージも表示されます。
どのように改善すればいいでしょうか?教えてください。
Visual studio community 2015の C++をやっているのですが、電卓プログラムを作ろうと思い、
http://saeki-ce.xsrv.jp/C_src/dentaku01.html
よりプログラムを引っ張ってきて、それを繰り返せるようにしたいのですが、上手くいきません。
一応プログラムを張っておくと(これは試行錯誤中のものです)(所々敬行がおかしくなっているかもしれませんが、コピペをした時に起ってしまったものです)
#include <stdio.h>
#include <stdlib.h>
void main()
{
int b;
while( b== 1) {
int x = 0, y = 0, z = 0, i = 0, j;
char c[128], c1[128], op;
printf("\n電卓(Ver.1.0)\n");
printf("\n計算式: "); gets_s(c); // 計算式入力
//--1つめの数--
for (j = 0; c[i] >= '0' && c[i] <= '9'; i++)
{
c1[j] = c[i]; j++;
} // 1文字取り出す
c1[j] = '\0'; x = atoi(c1); // 整数値に変換
//--演算子--
op = c[i]; i++; // 演算子を取り出す
//--2つめの数--
for (j = 0; c[i] >= '0' && c[i] <= '9'; i++)
{
c1[j] = c[i]; j++;
} // 1文字取り出す
c1[j] = '\0'; y = atoi(c1); // 整数値に変換
//--計算実行--
switch (op)
{
case '+': z = x + y; break;
case '-': z = x - y; break;
case '*': z = x*y; break;
case '/': z = x / y; break;
case '%': z = x%y; break;
default: printf("\a"); // ブザー
}
printf("\n答: %d\n", z);
printf("もう一度やるには1を、やめるには2を押してください。\n");
scanf_s("%d", &b);
}
}
こんな風にしてみたのですが、2回目以降が、計算式を入力していないのに1回分が終わってしまいます。(画像のような無限ループをしてしまいます。)
上の状態だと、エラーで、「初期化されていないローカル変数’b’が使用されます」と出てしまいます。
どう改善すればいいでしょうか?
教えてください
お礼
ありがとうございます。 解決しました。(この件に関してはですが)