- ベストアンサー
for文を別のint内で定義し、初めのint文内で呼び出す??? 何という名のプログラム名?ですか???
毎度毎度忙しい中失礼します。現在<私のプログラム>を基に<参照プログラム>のようにプログラムを作り変えようとしていますが、正直お手上げ状態です。 どうしても<参照プログラム>に基づいてプログラムを組まなければならないのです。 どこがお手上げ状態かといえば、<参照プログラム>を参考にすると、int multInts(int x, int y)内の条件の組み方が<私のプログラム>内でどのようにして組めばいいのかが全くもって分かりません。かなり考えても分からないレベルです・・・私にとっては。 int multInts(int x, int y)の定義の仕方を真似て<私のプログラム>でも真似てみるのですが・・・出来ないのです。何をどう直せば良いのでしょうか???初期化でtra=0;とすると、表示は"0"になったりするし・・・。簡単かと思われるかもしれませんが・・・私にとってはかなり難しいのです。 ”丸投げ”みたいな感じで恥ずかしいのですが、どうかアドバイスだけでも下さい。お願いします。 出力結果 1.5桁数字入力:"12345"と入力 (これは出来ます) 2.偶数桁のみ抽出して2倍にする→"14385" (最不明部: <参照プログラム>内のmultInts内の条件を<私のプログラム>内でどのようにして組むのかが分かりません) 3.各桁の数値を足し合わせる→1+4+3+8+5=21(不明部: 2.が出来ないので出来ません) 4.その数値が”妥当”か”不当”かをDOS?画面に表示(不明部:2.と3.が出来ないので出来ません) <私のプログラム> #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int num,tra; int inpt=5; int inptnum; int sum=0; //#define 0 printf("5桁入力; "); scanf("%d", &num); if (num==0){ printf("その値は0です。 \n"); } else{ for(inpt ; inpt >=1 ; inpt--) { if(inpt%2 == 0) { inptnum = pow(10,inpt-1); tra = (num/inptnum)%10; //printf("%d",tra*2); tra=(tra*2)/10+(tra*2)%10; printf("%d",tra); } else{ inptnum = pow(10,inpt-1); tra = (num/inptnum)%10; printf("%d",tra); } sum += tra; } printf("\n %d\n",sum); sum= sum%10; if(sum==0) { printf("妥当な数値です。\n"); } else { printf("不当な数値です。\n"); } } system("pause"); return 0; } <参照プログラム> #include <stdio.h> #include <stdlib.h> int main(){ int multInts(int x, int y); int num1,num2,answer; printf("間にスペース設けて2つの値入力: "); scanf("%d%d", &num1, &num2); answer = multInts( num1, num2); printf("%d * %d=%d\n", num1, num2, answer); system("pause"); return 0; } int multInts(int x, int y) { int result = 0; int i; for (i=1 ;i<=y ;i++) { result=result + x; } return result; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
理屈だけ書いておくね ○入力された物は「数値」 ○これを「桁毎にバラす」という方法が必要 ◆演算によって1桁ずつ取り出す ◆そもそも入力を文字列にしてしまって後で数値に戻す のどちらかの方法が考えられる いずれにしても「配列」という概念が必要になるかもしれないね
その他の回答 (2)
- koko_u_
- ベストアンサー率18% (459/2509)
>これを<参照プログラム>に倣って<私のプログラム>内で組みたいのです。 もう一度言いますが、参照プログラムに倣う必要性をまったく見出すことができません。あえて「for ループを見倣っています」と強弁する程度の意味しかなさそうです。 自分で好きなようにコーディングするのが吉。
- koko_u_
- ベストアンサー率18% (459/2509)
>どうしても<参照プログラム>に基づいてプログラムを組まなければならないのです。 これが全く理解不能です。multInts(int x, int y); で単に x * y ( y ≧ 0 ) ですよね?なぜ必要なのですか? ANo.1 の方も指摘しているように、入力を「文字列」として受け取ってしまうのが最もわかりやすいと思います。
補足
主プログラム内::"12345"と入力→福プログラム内呼び出し→21%10=1→”不当な数値”と表示する 福プログラム内:"12345"→”14385"→"1+4+3+8+5=21"処理を行う これを<参照プログラム>に倣って<私のプログラム>内で組みたいのです。 というプログラムを作りたいのです。 よろしければ再アドバイス願います。
お礼
アドバイスありがとうございます。 更にアドバイス等あれば、また書き込んでやってください。
補足
!「桁毎にバラす」というアドバイスから、今自分なりに自分に合ったレベルに落として、プログラムを組み直しています。 また、分からなくなったら質問することにします。 皆さん色々とアドバイスありがとうございました。