• ベストアンサー

こんなことって可能なのですか?1234567890→偶数桁を2倍する→"143851271690"と出力 

忙しい中失礼します。 聞きたいことがあるのですが、  printf("Write the Number: ");  scanf("%d", &num); において、”1234567890”と入力した場合、その後、if else, swith case, while for,do while, void findMax等の関数を使用しプログラムを組み、偶数桁の番号を選び出して、それを”2倍する”ということは可能なのでしょうか? やりたいことは以下の記述です。 ステップ1:”1234567890”とscanf関数を用いて数値入力 プロセス:"2" "4" "6" "8" "0"と偶数桁の数値を選び出し、2倍する。2は2×2で”4”、4は4×2で”8”、・・・という風に計算される。 ステップ2: "143851271690"と出力 出力詳細内容 [14(2x2)38(4x2)512(6x2)716(8x2)90(0x2)] ですが、一度メモリ上?に:”1234567890”と入力した数値を上記の関数を用いてプログラムを組み ”いじる” ことなんて、そもそも可能なのでしょうか? 無理なような気がするのですが・・・。でも出来たらこなしたいと思っているのです。 アドバイス等ありましたらお願いします。 <使用環境:フリーソフト(Borland?)C ANSI C>

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

  • ベストアンサー
  • sgwjn
  • ベストアンサー率70% (47/67)
回答No.2

やってやれなくはないでしょう。 スマートな方法ではありませんが、例えば以下の方法でできるはずです。 (1)整数入力  a = 456789 (2)整数を文字列に変換  b = ["456789"] (3)文字列を1文字ごとに整数に変換  c = [4, 5, 6, 7, 8, 9] (4)偶数のみ2倍にする  d = [8, 5, 12, 7, 16, 9] (5)整数を文字配列に変換  e = ["8", "5", "12", "7", "16", "9"] (6)文字列に連結  f = ["85127169"] (7)文字列を数値に変換  a = 85127169 かなりの力技ですが…。

jpncndgoo2
質問者

お礼

!なるほど・・・。力技?とんでもない。今の私の知識では上記の方法が最も適切だと思います。親切なアドバイスありがとうございました。助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • tekcycle
  • ベストアンサー率34% (1839/5289)
回答No.4

1234567890%10すれば一の位が得られませんか? で、それが偶数か奇数か判断する。2又は4又は6又は....。 1234567890を1/10して、intでキャストすると(しなくても)、123456789という数値が得られ、上記の操作をすると、また一の位、元の10の位が得られないでしょうか。 逆に、123456789の2を倍にし、これが一桁なら1を10倍して2の2倍を足す。二桁なら1を100倍して6か8の倍を加える。 なんて方法はどうでしょうか? 綺麗かどうかは知りません。ど素人なので。不可能だったらごめんなさい。 というか型変換の方が判らない。(笑)

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.3

> 入力した数値を上記の関数を用いてプログラムを組み ”いじる” まさに、「いじる」ためにプログラムを作るのではないでしょうか。 ところで、 > if else, swith case, while for,do while, void findMax等の関数 とありますが、findMax以外は関数ではなくて文です。 また、findMaxはC言語の標準関数の中にはありません。 findMaxがどういうことを行なう関数であるかがわかりませんので、 それを使う、といわれましても、何ともお答えできないです。

jpncndgoo2
質問者

お礼

”プログラムを作るのではないでしょうか。”→プログラムで出来ないことってないんだな、そう思いました。 findMax→そうですか、それは知りませんでした。

すると、全ての回答が全文表示されます。
  • X-trail_00
  • ベストアンサー率30% (438/1430)
回答No.1

文字型に変えて一文字ずつ配列に入れる 配列をループで処理  偶数桁の文字を数値に変換 *2して配列に入れる ループが終わったら配列を全部つなげる 文字型から数値型へ戻す

jpncndgoo2
質問者

お礼

!文字列に変換する。思いつきませんでした。こんな簡単なことですが、思いつきませんでした。アドバイスありがとうございました。私の頭の中ではレジストリ?に入力した数字の変換は”数字のまま変換する”のは不可能だろ、と思っていました。助かりました。・・・文字列に変換すれば、確かに可能ですね。

jpncndgoo2
質問者

補足

以下は書き込んでいただかなくても構いませんが、暇だったら書き込んでやってください。  再度質問になってしまいますが、”配列をループで処理”とはどういう意味でしょうか? 多分”数字を文字列に変換”ということなのかな、とは思いますが。宜しければ再アドバイス願います。

すると、全ての回答が全文表示されます。

関連するQ&A