• 締切済み

四則演算プログラム

2つの数字を四則演算するプログラムを作ろうと 思っているんですが、 (1)関数atoiを使う、 (2)int main(int argc, char +argv[])と  宣言する、 (3)足し算の場合のみ、2つ以上の数字を計算できる ということが条件なんですけど、どなたか プログラムがどのようなものか教えていただけ ませんか??

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

条件を満たしていませんけど、こんな感じかな ---------------------------------------------------------------- #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; }

  • ko_kinta
  • ベストアンサー率39% (43/109)
回答No.2

学校の宿題ですか? プログラム名を仮に"calc"とした場合、コマンドラインで"calc 1 + 2 + 3"などと入力して実行すると答えを出力する、というような処理にすればいいのではないでしょうか。 まず(2)。 第2パラメータ"+argv[]"は"*argv[]"のタイプミスですね。 main関数で入力された引数を判断します。 演算不可能な引数であればエラーを返して終了します。 それから(1)。 引数はchar型でmain関数に渡されるのでatoi()を使って数値にしなさいということでしょう。 (3)は"3つ以上の数字を"でないと意味を成しませんね。 足し算以外で3つ以上の数字が指定された場合はエラーを返す、といった仕様にすればこの条件も満たされます。 これでイメージが掴めたら後はがんばって作りこんでください。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> ということが条件なんですけど、どなたか > プログラムがどのようなものか教えていただけ > ませんか?? 提示されている条件をすべて満たすことは不可能です。特に(2)

関連するQ&A

  • C言語:四則演算プログラムで、数字以外の文字が入力された場合のエラー処理について

    お世話になります。 int main( int argc, char *argv[] ) { 上記で、例えばコマンドラインで「実行ファイル名 10 + 20」と入力すると 10+20を計算する、というような四則演算プログラムを作っております。 int num1, num2; num1 = atoi( argv[1] ); num2 = atoi( argv[3] ); 上記の例でしたら、num1、num2 に「10」、「20」の整数値が入りますが、 「数字以外の文字が入力された場合」のエラー処理に悩んでいます。 例えば上記の例で、 「実行ファイル名 a + 20」 「実行ファイル名 a10 + 20」 などと入力された場合、 num1 = atoi( argv[1] ); で、atoi関数が「0」を返すので、 num1に整数の0が入りますよね。 そこで最初、num1 = atoi( argv[1] ); に「整数の0」が入った場合 エラーを出して終了、と云う形にしようと考えました。 ただ、これでは「0+20」などと入力した場合もエラーになってしまうので、 if文を用いて、 「argv[1][0]の値が、'0'という文字列ではない場合に」 「num1 = atoi( argv[1] )」で「num1に整数の0が入ったら」「エラー」 という形で考えました。 しかしこの場合、 「実行ファイル名 100abc + 20」 などと入力されると、atoi関数が「100」を返してくるので 「100+20」が実行結果として出てきてしまいます。 「100abc」の「abc」部分を、どのように判断すれば宜しいのでしょうか。 四則演算プログラムとしての全体は何とか出来上りましたが、 このエラー処理で行き詰まりました。 頑張って検索してみたのですが、Cを始めてまだ2週間程度でして、 上手い方法がどうしても思い浮かびません。 どのような方法でエラー処理を行えば宜しいのでしょうか・・・ 補足要求、質問の意味が判らない、等ございましたらご指摘お願いします。 宜しくお願い致します。

  • ソースプログラムのエラー

    自分で四則演算のプログラムを組んだのですが エラーが出てお手上げ状態です。 どこが間違っているのかどなたか教えていただけませんか?? ちなみに足し算の場合はいくつ足しても計算できるという プログラムです☆ #include<stdio.h> int main(int argc, char *argv[]){ int i,a=0,b=0,x=0; int m=0; if(argv[1]!="+"||argv[1]!="-"||argv[1]!="*"||argv[1]!="/"||){ printf("指定された文字ではありませんよ\n"); return -1; } a = atoi(argv[2]); b = atoi(argv[3]); if(argv[1]=="-"){ m=a-b; } if(argv[1]=="*"){ m=a*b; } if(argv[1]=="/"){ m=a/b; } if(argv[1]=="+"){ for(i=2;i<argc;i++){ x=atoi(argv[i]); m+=x; } printf("%d\n",m); return 0; }

  • メイン関数

    メイン関数には int main(void) と int main(int argc, char** argv) がありますが、後者のint argc, char** argv はどういう意味なのでしょうか?

  • C言語でコマンドラインの引数について。

    コマンドラインで引数をわたす基本的なプログラムは main(int argc,char *argv[]){....] ですよね。 今回実行時に、 >実行ファイル名 123 + 233 といれたら、123+233を計算してくれるプログラムを作ろうとしています。 その場合、main(int argc,int *argv[]){} としたら、argv[1]に123が入って、argv[2]に+が入って、argv[3]に233が、入るというわけではないんでしょうか? とりあえず、確認で #include<stdio.h> main(int argc,int *argv[]) { printf("%d\n%d\n",argv[1],argv[3]); } としてみたんですが、実行結果は、とても長い数字がでてきてきました。 なにがいけないのか教えてください。 お願いします。 あとWindows MEでVC++6を使ってます。

  • main(int argc,char **argv[])の意味を教えて下さい

     今晩は、Cの初心者です宜しくお願いします。  main関数の引数で、int main(int argc,char **argv[])とint main(int argc,char *argv[])と書かれている場合がありますが、 「**argv」と「*argv」の意味の違いはどのようなもので、どのように使い分けるのでしょうか。 また、必ずポインタ型でとるという決まりでしょうか。 宜しくお願いします。

  • main の引数には const 付けた方が

    C言語での質問です。 引数を取るような main 関数は int main( int argc, char *argv[]){~} とされていますが、argvの指す文字列を変更する、というのはいくら何でもまずいので、 int main( int argc, const char *argv[]){~} あるいは int main( int argc, const char const * const * argv){~} の方がいいのではないでしょうか? 何故、constを付けない形が出回っているのでしょうか?

  • 四則演算のプログラム

    自力で解きたかったのですが、二時間考えても、とけないので 投稿させていただきます。どこを直せばよいのでしょうか 実行するときは%プログラム名 + 5 12 と入力して実行したいです。加えて参照にしている部分の %の扱いについても教えていただけると幸いです。 #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]){ char kigou; double num1,num2; kigou=atof(argv[1]); num1=atof(argv[2]); num2=atof(argv[3]); if(kigou=='+'){ printf("%f+%f=%f\n",num1,num2,num1+num2); } else if(kigou=='-'){ printf("%f-%f=%f\n",num1,num2,num1-num2); } else if(kigou=='x'){ printf("%f*%f=%f\n",num1,num2,num1*num2); } else if(kigou=='/'){ printf("%f/%f=%f\n",num1,num2,num1/num2); } /* else if(kigou=='%'){ printf("%f%%f=%f\n",num1,num2,num1%num2); }*/ else{ printf("Please input +,-,x,%%.\n");} }

  • 初歩的な質問ですが教えてください。

    Cのあるプログラム中で、“他の実行ファイル”を用いた処理を行なう方法を 教えていただけないでしょうか。ただし、“他の実行ファイル”のソースファイルはありません。 例えば、aとbの二つの整数を渡して足し算する実行形式のファイルPlus.exeがあったとき、あるプログラム“test.c”の中で“Plus.exe”を用いて aとbの和Cを計算する方法を教えてください。 #include <stdio.h> int main(int argc, char *argv[]) { int a, b, c; a=atoi(argv[1]); b=atoi(argv[2]);   /* ここで c = a+b の計算をPlus.exeで行ないたいのですが・・・ */ printf("sum = %d\n", c); }

  • main( )

    次の様なプログラムを作りました。 Dosプロンプトを開き、コンパイルで出来た、exeファイルのアドレスを渡しました。 例えば、2と3を引数として渡す時、 2 スペースを押す、 3 enter  の順に行うと、エラーになります。 どの様に、引数を渡すのか操作方法を教えてください。 お願いします。 #include<stdlib.h> #include<stdio.h> int main(int argc, char *argv[]) {    if(argc!=3){     printf("2つの数を指定してください。");     exit(1);    }     printf("%f",atoi(argv[1])+atoi(argv[2]));    return 0; }

  • プログラミング(argcとargv)

    入力された数の合計とその計算式を表示するプログラムをつくっています。惜しい(?)ところまでいったのですがその先がなかなか進みません。以下のプログラムのどこを修正したらよいでしょうか?教えてください。 #include <stdio.h> #include <stdlib.h> #define nMAX 10 int main(int argc, char **argv){ int sum = 0; if(argc < 2){ printf("Too few option!\n"); return 1; } int i, n; for(i = 1; i < argc; i++){ n = atoi(argv[i]); sum = sum + n; } printf("%d\n", sum); }

専門家に質問してみよう