dポイントプレゼントキャンペーン実施中!

2つの数字を四則演算するプログラムを作ろうと
思っているんですが、

(1)関数atoiを使う、
(2)int main(int argc, char +argv[])と
 宣言する、
(3)足し算の場合のみ、2つ以上の数字を計算できる

ということが条件なんですけど、どなたか
プログラムがどのようなものか教えていただけ
ませんか??

A 回答 (3件)

> ということが条件なんですけど、どなたか


> プログラムがどのようなものか教えていただけ
> ませんか??

提示されている条件をすべて満たすことは不可能です。特に(2)
    • good
    • 0

条件を満たしていませんけど、こんな感じかな


----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
int a, b, result;
char op;
int i=0;

if(argc < 4){
fprintf(stderr, "引数がたりません。\nex)calc 123 * 456\n");
return -1;
}
a=atoi(argv[++i]);
redo:
op = *argv[++i];
b=atoi(argv[++i]);

switch(op){
case '+':
result=a+b;
break;
case '-':
result=a-b;
break;
case '*':
result=a*b;
break;
case '/':
result=a/b;
break;
default:
fprintf(stderr, "使用できる演算子は +,-,*,/ の4つです。");
return -2;
}

if(i<argc - 1){
a=result;
goto redo;
}

printf("ans=%d\n", result);

return 0;
}
    • good
    • 0

学校の宿題ですか?



プログラム名を仮に"calc"とした場合、コマンドラインで"calc 1 + 2 + 3"などと入力して実行すると答えを出力する、というような処理にすればいいのではないでしょうか。

まず(2)。
第2パラメータ"+argv[]"は"*argv[]"のタイプミスですね。
main関数で入力された引数を判断します。
演算不可能な引数であればエラーを返して終了します。

それから(1)。
引数はchar型でmain関数に渡されるのでatoi()を使って数値にしなさいということでしょう。

(3)は"3つ以上の数字を"でないと意味を成しませんね。
足し算以外で3つ以上の数字が指定された場合はエラーを返す、といった仕様にすればこの条件も満たされます。

これでイメージが掴めたら後はがんばって作りこんでください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!