• 締切済み

プログラム

「一行に書かれた式(文字列)の値を求めるプログラム」 少なくとも2つの2桁までの正の整数値の加減乗除ができること。 このプログラムのやりかたがわかりません、教えてください。。

みんなの回答

回答No.3

こんにちは。  さらにヒント。C言語と仮定。 ・数字かそうでないかはisdigit関数 ・演算子の場合分けはif文でもいいし、switch case文でも ・前から順番に判別し、前の「文字」を10倍していけば望む数字が得られる ・「正負の符号は入力できません」と、仕様(問題)を拡張すること >実際のプログラムを教えてもらいたいんですが・・・  自分でやらないと力にならないんですけどね。 あなたの課題となっている言語への変換は、ご自分でお願いします。 整数型 i 整数型 j 整数型 n[2] 文字列型 str 文字型 c 表示 "「数字、演算子、数字」の式を入力してください" 入力 str 代入 n[0] に 0 代入 m[1] に 0 代入 j に 0 回る i が 0 から 長さ(str) - 1 もし 数字か(str[i]) が 真 ならば 代入 n[j] に n[j] * 10 + 変換(str[i], 数字) 他の場合 代入 c に str[i] 代入 j に j + 1 もしおわり 回るおわり 分岐 c もし '+' ならば 表示 n[0] + n[1] プログラムおわり もし '-' ならば 表示 n[0] - n[1] プログラムおわり もし '/' ならば 表示 n[0] / n[1] プログラムおわり もし '*' ならば 表示 n[0] * n[1] プログラムおわり もし その他 表示 "式が異常" プログラムおわり 分岐おわり

回答No.2

1. 入力された文字列から 数字 演算子 数字 の3つに切り分ける 2. 切り分けられた'数字'を'数値'に変換する 3. 切り分けられた演算子に応じて2つの数値に処理を施し、結果を出力する。 > 実際のプログラムを教えてもらいたいんですが・・・ それはあなたのやることです。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

ヒントです。 1+1、1-1、1*1、・・・・99/99の計算ができるプログラムと いうことですね。 文字列解析をやって、数値Iと加減乗除の記号と数値Jに分離し、計算を実行します。 数値は1桁と2桁があるのが注意点です。

msdkuj
質問者

補足

実際のプログラムを教えてもらいたいんですが・・・

関連するQ&A

  • 電卓プログラムを作りたい。

    わたしは、プログラムの初心者なのですが、力不足でプログラムが作れないのでご協力おねがいします。 データをすべて整数で演算子は、1個だけ用い、標準入力を受け取り、リターンキーが押されると、その解答を標準出力に表示するような、加減乗除の四則演算と整数剰余の演算を繰り返し行うことが可能な電卓プログラムを作りたいのですが、、、。

  • 筆算で割り算

    4桁までの整数の加減乗除を筆算の形式で表示するプログラムなんですが、割り算の表示がどう直しても私の頭ではうまくいきません。どうかご助言いただければとおもいます。プログラム自体が長すぎて質問の部分に貼り付けれなかったので、補足かなにかをつかわせていただいてまた、貼り付けようと思います

  • プログラムについてです。

    main関数内でキーボードから入力された2つの整数について、その整数値の和差乗除をユーザ定義関数shisoku()内で計算し、main関数内で結果を出力するプログラムを作成せよ。 ただし、すべて局所変数で構成し、大域変数を使ってはならない。 僕は和差、乗除はできるんですが和差乗除ができません。

  • 3つほどプログラムをおしえてください。

    (1)100までの整数をいくつか入力し、10刻みでの個数を表示し、負の数が入力されると整数の入力を終わるプログラムです。各範囲の個数は配列に格納する。 実行結果 65 30 21 95 5 -1 0--- 9 : 1 10--- 19 : 0 20--- 29 : 1 30--- 39 : 1 40--- 49 : 0 50--- 59 : 0 60--- 69 : 1 70--- 79 : 0 80--- 89 : 0 90---100 : 1 (2)数字の文字列を入力し、その文字列に含まれる各数字(文字)'0','1',~'9'の個数を表示するプログラムの作成。 実行結果 1231234567 0: 0 1: 2 2: 2 3: 2 4: 1 5: 1 6: 1 7: 1 8: 0 9: 0 (3) 変数xは、0~1までの0.01刻みの値(101個)を取るとする。このとき、2次関数 f(x)=3x^2+2x+1の値が2.0<f(x)<3.0となるxの値をの個数を求めるプログラムの作成。ただし、xを引数としf(x)の値を返す関数を作成して、それを使用する。 実行結果 number=21 やってるうちにわけがわからなくなってしまいます。どなたかよろしくおねがいします。

  • プログラム(演算)

    プログラミング初心者です。 「1+3*(2+4)」などのように1桁の正整数と加算、乗算、カッコからなる式がキーボードから入力されるとき、その計算結果を画面に表示するプログラムを作成せよ。ただし、再帰を使用しないこと。 というのが問題なのですが、手の付け方がまったく思いつきません。分かる方がいればヒントをくだされば幸いです。

  • 反転のプログラムについて

    プログラムの質問で「入力された正の整数において、桁の順序を反転したプログラムを作れ。321→123、32100→123など。0の時は0と表示させろ」という問題がどうしてもわかりません。講師の人が10で割ればいいと言ってるんですがいまいちわかっていません。使ってるのはVisual Stadio 2005のC++です。教えてもらえませんか?ついでに 「M以上N以下の正の整数で、素数であるものを小さい方から表示するプログラムを作れ」も教えてもらえれば幸いです。アドバイスでも結構ですのでよろしくお願いします

  • java プログラムに関連する問題です。

    ブラウザ上で2個の整数を入力してサーブレットにそれらの加減乗除を依頼して計算結果をもらう。アクセスや表示の手順などは任意形式。

  • プログラミングについて

    課題1: キーボードから整数a, b の値を入力し, を計算して表示するプログラムを作成せよ.ただし,べき乗を計算するユーザ関数 int power(int a,int b) を定義し,関数の再帰的呼び出しを使用すること.なお,b >= 0 とみなし,bが負の値のときは「ここでは扱いません」と表示するようにすること.関数 power() の中で途中の計算も表示するようにすること.  作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,aの値として「学生番号下1桁 + 3 」 の値を入力し,bの値として「(学生番号下2桁を5で割った余り) + 1」の値を入力したときの結果を[実行結果]の次に貼り付けなさい. 実行結果例 :   (学生番号 0234789 の場合) ( aは a= 9+3= 12 , b は b 整数aを入力して下さい:12 整数bを入力して下さい:5 power(12,0)= 1 power(12,1)= 12 power(12,2)= 144 power(12,3)= 1728 power(12,4)= 20736 power(12,5)= 248832 12の5乗は 248832 です 課題2: キーボードから英字の氏名を「名前_苗字」の順でアンダーバー( 「_ 」の文字) で区切って入力し,その文字列を文字コード順に並び替え,さらにそれについてバイナリサーチを実行して「i」の文字を探すプログラムを作成しなさい.並び替えた文字列およびその中の何番目に「i」が見つかったのかを表示するようにせよ.見つからなかった場合は「見つかりませんでした」と表示するようにせよ.実行結果例を参考にすること. プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.確認が済み次第,作成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の名前と苗字を入力したときの実行結果を[実行結果]の次に貼り付けなさい 実行結果例 :   (氏名: 工大 太郎 の場合) 名前と苗字をアンダーバーで区切って入力してください(各先頭文字は大文字) Kodai_Taro 並び替え後 KT_aadioor i を探します lo=0 x[4]=a hi=9 lo=5 x[7]=o hi=9 lo=5 x[5]=d hi=6 lo=6 x[6]=i hi=6 i は 6番目にありました 課題3: 5桁の正の整数をキーボードより入力し、その各桁の値を降順(大→小の順)に並び換えてそれらを順番に表示するプログラムを作成しなさい.以下の手順に従うこと. (1) int 型のサイズ5の配列 A を用意する. (2) 5桁の正の整数をキーボードより入力し,その各桁の値が一桁目から順番に A の各要素に入るようにする (例:値が12345 のとき, A[0]=5, A[1]=4, A[2]=3, A[3]=2, A[4]=1 となるようにする) (3) Aのデータを選択ソートにより降順に並び替える (2)では繰り返し処理を行なうこととし,for 文を用いること. (ヒント: たとえば 12345 の3桁目を取り出したいとき,まずその数を100 で割る.int 型同士の割り算の場合,小数点以下が切り捨てられるので 123 となる.それを10で割った余りを求めれば 3 が得られる.同様に,4桁目を取り出したいときは,1000 で割った整数値の10で割った余りを求めればよい) (3)は演習(3) で作成したプログラムを参考にすること プログラムを作成したら,入力値を色々変えて何回か実行し,プログラムが正しく動作することを確認しなさい.それが済み次第,完成したプログラムを以下の[プログラム]の次に貼り付けなさい.また,各自の学生番号下5桁の値を入力したときの実行結果を[実行結果]の次に貼り付けなさい. 実行結果例 学生番号0114583の場合  5桁の正の整数値を入力してください 14583 ソート前 3 8 5 4 1 i=0 8 3 5 4 1 i=1 8 5 3 4 1 i=2 8 5 4 3 1 i=3 8 5 4 3 1 ソート後 8 5 4 3 1 課題4: 以下の内容を実行するプログラムを作成しなさい.ただしMには「(各自の学生番号下3桁を5で割った余り)+5」を用いよ.また,Nには「(各自の学生番号下2桁を3で割った余り)+2」 を用いよ.作成したプログラムを以下の [プログラム] の次の行に貼り付けること.また実行結果を[実行結果]の次の行に貼り付けなさい.入力値は,学生番号の一桁目から順に入力し,さらに必要ならば「9,8,7」の順に入力せよ.以下の実行の概念図も参考にすること 実行内容 int 型のサイズ M の一次元配列 x があり,キーボードから値を入力してその配列の各要素に代入する.それらの値を N 個ずつ右にずらしてローテーションする 実行結果例 (学生番号 0123457 の場合) M= (457 を 5で割った余り)+ 5 = 2+5 = 7 N= ( 57 を 3で割った余り)+ 2 = 0+2 = 2      よって,サイズ7の配列のデータを      右に2個ずつローテーション (0) 整数を入力してください 7 (1) 整数を入力してください 5 (2) 整数を入力してください 4 (3) 整数を入力してください 3 (4) 整数を入力してください 2 (5) 整数を入力してください 1 (6) 整数を入力してください 0 ローテーション前 7 5 4 3 2 1 0 ローテーション後 1 0 7 5 4 3 2 課題5: キーボードから文字列を入力し,その文字列の2番目の空白の次の文字以降を表示するプログラムを作成しなさい.ただし,文字列の入力には関数 gets を用いること. また,文字列のアクセスにはポインタを用い,関数 putchar を用いて一文字づつ表示させるようにすること. 実行結果は,学生番号,名前(英語),苗字(英語) をそれぞれスペースで区切って入力したときの結果を表示すること 実行結果例 : 学生番号0112345 氏名 田中健 の場合 文字列を入力してください。 0112345 Ken Tanaka 2番目の空白以降を出力します Tanaka windows vista visual studioでのプログマミングの作成を多いと思いますがとても困っていますのでなにとぞお願いします。

  • オブジェクト指向なJavaプログラムとは?

     Javaで,キーボードから入力した8桁の文字列を出力するというプログラムを作成したい,8桁の文字列に対して,checkを行い文字列が未入力だとエラーが投げられる。  また,02345334,のように1文字目が0だとエラーが投げられ, 文字列が9桁や7桁になってもエラーが投げられるというプログラムを 継承、オーバーロード、オーバーライドを使って作成したい。 (文字列に入力する文字は全角英数字でも半角英数字でも出力されるようにする。 例: 1a2B3C4d )  まず,NyuryokuMainというメインクラスを作り,キーボードから入力した文字を出力するというプログラミング。  次に,NyuryokuCheckクラスでboolean型で文字列が未入力かどうかをif文で判別し,次に与えられた文字列が8桁以内かをboolean型で判別する。までを、NyuryokuCheckクラスで行い、  SubNyuryokuCheckクラスでNyuryokuCheckを継承し,8桁の文字列の1桁目が0かをbooleanで判別する。  というような,プログラムを作りたいのですが,どのようにしたらよいかわかりません。よいサンプルなどがあったら教えてください!

  • 下記に記すプログラムを解いてください。

    Σ1/(i + k) の計算 [問題]正の整数 n を入力し,次の式の値を計算し,出力するプログラムを書け. 1/1 + 1/2 + 1/3 + ・・・ + 1/n 上記の問題が解けませんので解答お願いします。 上記の問題をdouble形式でお願いします。 上記の問題をintmain()形式でお願いします。