100になるプログラム(pascal)

このQ&Aのポイント
  • 『「123456789」 左の数列の数字の間に「-」か「+」、もしくは何も入れないで得た式を計算し、合計が100になった場合その時の式を出力せよ』という課題が出ました。
  • 配列において「+」=1,何も入れない=0、「-」=-1と数字に置き換え最初は左から(-1、-1、-1、-1、-1、-1、-1、-1、-1)を入れ(=-1-2-3-4-5-6-7-8-9)、一番右を1ずつカウントアップして配列を変えていきます。
  • 配列は作れたのですが、それを挿入して計算するところでつまずいてしまいました。アシスタントの方に尋ねてスタックを使い、-か+が出るまで、取り出してる数を10倍していくという方法を理解できたのですが、それをプログラムにするのができません。
回答を見る
  • ベストアンサー

結果が100になるプログラム(pascal)

『「123456789」 左の数列の数字の間(1の左にも入れる)に「-」か「+」、もしくは何も入れないで得た式を計算し、合計が100になった場合その時の式を出力せよ』という課題が出ました。 間に入れる文字の配列を作りそれを数列に挿入し計算、合計が100ならその式を出力し配列を変えまた計算・・・という流れです。 配列において「+」=1,何も入れない=0、「-」=-1 と数字に置き換え最初は左から(-1、-1、-1、-1、-1、-1、-1、-1、-1)を入れ(=-1-2-3-4-5-6-7-8-9)、一番右を1ずつカウントアップして配列を変えていきます。 配列は作れたのですが、それを挿入して計算するところでつまずいてしまいました。アシスタントの方に尋ねて ・スタックを使う ・-か+が出るまで、取り出してる数を10倍していく という方法は理解できたのですが、それをプログラムにするのができません。 どなたかご教授お願いします。

  • rurur
  • お礼率50% (24/48)

質問者が選んだベストアンサー

  • ベストアンサー
  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.2

#1です ちゃかっと、作ってみて計算させてみたよ 大体、アルゴリズムから作成実行まで、5分から10分くらいかな? デバッグは、完全に確認はしてないけどねorz たとえば、計算して100になる組み合わせ +1+2+3-4+5+6+78+9 +1+2+34-5+67-8+9 +1+23-4+5+6+78-9 +1+23-4+56+7+8+9 +12+3+4+5-6-7+89 +12+3-4+5+67+8+9 +12-3-4+5-6+7+89 +123+4-5+67-89 +123+45-67+8-9 +123-4-5-6-7+8-9 +123-45-67+89 -1+2-3+4+5+6+78+9 で、全部みたい 文字列を作って、計算していくのは、それほど難しくない 難しいのは、組み合わせを、どう作るか?だと思うよ

rurur
質問者

お礼

遅くなりましたがご助言ありがとうございました。

その他の回答 (1)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

多分・・・再帰の問題じゃない? スタックを使うというのが、よく判らんけど・・・ > アシスタントの方に尋ねて 何かの課題であれば、その人に聞いてみるのが回答だと思うけど、課題なら、回答は、もらえんでしょうね 考えるのが、勉強だからね

関連するQ&A

  • Javaプログラムソース(結果が100になる)

    Javaプログラムソース(結果が100になる) 「123456789」 左の数列の数字の間に「-」か「+」、もしくは何も入れないで得た式を計算し、合計が100になった場合その時の式を出力せよ』という課題が出ました。 ソースを教えてください!

    • ベストアンサー
    • Java
  • Pascalにて入力した式の演算

    タイトルのとおり、Pascalにて入力した式の演算を行うプログラムを作ろうと考えています。 例えば 1 + 3 * 3 = と入力すると10と出力されるようなものです。 そこで、アルゴリズムとしては 式を全てcharとしてread 括弧があるか探し、あるなら括弧閉じるを探す 括弧内で乗除算を探す その右と左の数をintegerなりに変換して演算 以下同様に計算 …という風に考えました。 そこで質問なのですが、 式のreadをするとき、変数は配列型でいいのでしょうか 配列型だとひとつの配列に二桁以上の数ひとつだけ、という風にしか収納出来ないと思うので、これでは不可能な気もします。 また配列型では不可ならどうすればいいでしょうか。 次に、式をreadした後、そのreadをどのようにして終わらせるか 以上二点がよく分からないので、よろしければお答え願います。 また私の考えが大きく違う時等も御指示お願いします。

  • エクセル表計算の件

    G3~G63 までのセルの中で、0はカウントせず、数字が入っていたらそれを1とカウントしてもらって(例えば、7でも5でも 1とカウントする)その合計をG67のセルへ自動計算する式を教えてください。 windows7で エクセルのバージョンはなんだったでしょうか・・ 確か2,3年前に購入したPCです。 よろしくお願いいたします。

  • エクセルで指定位置から何セル移動すると空白ではなくなるか?

    A1に計算式を挿入したいのです。 A1からG1セルの間で、A1から何個目が空白ではないセルが あるかというのがしりたいのです? つまり B1、C1、D1には空白を E1には10.5などの数字を F1、G1には空白としたとき A1には3(もしくは4)を表示させたいのです。 COUNTIFでは空白の個数をカウントしますが、ある値までの空白の個数をカウントなんてできますでしょうか? 動的な計算しきにしたくて、今回はB1にセルを挿入して(数字)、次回はまたB1にセルを挿入して今度は空白としていった場合に、最近の値が入ったセルを表示できればと 考えています。 申し訳ございません、説明がクリアーではなくって。 こんなことって可能でしょうか? アドバイスお願いします。

  • 重複数字と空白を除いた数字の数をカウントする方法。

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  A列~U列に数字が左から右に昇順で入っています。  (数字は重複がありますし、U列まで数字が入っていない場合があります。)  V列に重複した数字と空白を除いた数字の数のカウント合計を表示する方法が知りたいです。 ●実行前 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38  2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38                            :                           : ●実行結果(A~Uの重複した数字と空白を除いた数字の数のカウント合計をV列に表示する。) 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38        15<-15個の数字  2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42  20<-20個の数字 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38      19<-19個の数字                           :                           : ●注意事項  ・使用するエクセルは2010です。  ・A~U列に入る数字は、1~43です。   ・空白はA~U列の途中にはありません。 以上、よろしくお願いします。

  • 配列内の数字要素数をカウントしたい。

    dim tbl(20) as string として、2桁の数字を保存しています。 (同じ数字は存在しません) 一度フル(21個)に格納したあと、条件を与えて合致する数字を" "で置き換え、消し込んでいきます。 (コレは先ほど教えていただいたので出来ます。) 例えば、 1214152926323338,,,,,, で、「15」を与えた場合、 結果を、 1214 2926323338,,,,,, と。 ここからが質問です。 この配列にあと何個の数字(1個は2桁)が残っているかカウントしたいのです。 例えば、3個消し込みされていれば18となります。 (21-3という計算はやりたくなく、配列の数字部分をカウントしたいのです。) 宜しくお願いします。

  • 重複数字を除いて数字の数をカウントする方法。

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  A列~U列に数字が左から右に昇順で入っています。(数字は重複があります)  V列に重複した数字を除いた数字の数のカウント合計を表示する。 ●実行前 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38 38 39 42 2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38 38 39                           :                           : ●実行結果(A~Uの重複した数字を除いた数字の数のカウント合計をV列に表示する。) 1 1 4 6 10 10 16 19 21 24 25 27 29 30 33 33 35 38 38 39 42 17<-17個の数字  2 3 5 6  7 9 10 13 14 18 21 23 27 27 28 31 32 33 39 41 42  20<-20個の数字 3 4 5 6  9 11 12 17 18 19 20 24 25 26 28 34 36 37 38 38 39 20<-20個の数字                           :                           : ●注意事項  ・使用するエクセルは2010です。  ・A~U列に入る数字は、1~43です。 以上、よろしくお願いします。

  • Excelの関数に関する質問

    Excelに関する質問です。例えば、A1~A10セルに1~3の数字がランダムに入っており、B1~B10セルに適当な数字が入っています。B1~10セルのうち、左の隣のセルに"1"が入ってるものの合計、同じく"2"が入っているものの合計、"3"が入っているものの合計をそれぞれ計算したいと思うのですが、どのように式をつくれば宜しいでしょうか?

  • エクセルで記号ごとに加算した結果を表示

        Aさん  Bさん 1日   ○    ● 2日   ●    ◇ : 31日  △    ○ 合計   ?    ? 上のような表があり、○は8時間、●も8時間、△は6時間、◇は4時間と計算し、合計欄に数字がはいるような式を教えてください。記号はパターンが増えることもあり、そのたびに式をかえなくてもすむようにしたいです。よろしくお願いします。

  • C++のもんだいで解けずに困っています。

    ランダムに0と1がfor文を回るたびに出力されるプログラムで、 0 0 1 1 1 0 1 1 以下省略 と続くような出力になります。 この数列で連続する数字の 数 を in という配列に格納するようにしたいのです。 上の数列で考えますとまず、0が二個連続し、その後に1が出力されましたので、in[0]には2を入れ、次は、1が3つ連続して、その後に1が出力されたのでin[1]には3を入れる。といったものです。 本当に困っています。どなたか教えてください。お願いします(*TーT*)

専門家に質問してみよう