• ベストアンサー

プログラムの考え方。

fm0606の回答

  • fm0606
  • ベストアンサー率10% (1/10)
回答No.3

数字の引数を文字列と考えていけばよろしいのではないでしょうか。 たぶんargv[]でコマンドラインから数字を受け取るのでしょうね。 例えば1万の位をだすには for(i=0; i<9; i++){ if(strncmp(&arg[0],i,1)==0){ man = i*10000; printf("1万円%d\n枚",man); } } 分岐文のところで if(strncmp(&arg[0],i,2)==0){千の位 if(strncmp(&arg[0],i,3)==0){百の位        ・        ・        ・ と検索すればよいのではないでしょうか・・ 50円が何枚かというのはちょっと意味がわかりませんね・・同様に5円も。。

usui323
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • スタックを用いたプログラム

    http://okwave.jp/qa4433705.html 先日教えて戴いた事でスタックがどういったものなのかは わかりましたが、実際にプログラムを作ってみると、 なかなかうまくいけません。再びアドバイスを戴ければと思ってます。 <プログラムの仕様> 入力数値をスタックに格納し'a'が入力されたら、 スタックに格納されている数値を全て取り出し、 平均値を出力するプログラム ・スタックは、push()関数およびpop()関数を実装する ・スタックへの要素の追加はpush()関数で行う ・スタックからの要素の取出はpop()関数で行う ・スタックのサイズは任意とする int push(int push_data);  引数: スタックに追加するデータ  戻り値: 成功の場合1、失敗の場合0を返す int pop(int *pop_data);  引数: スタックから取り出した値を格納するポインタ  戻り値: 成功の場合1、失敗の場合0を返す いざ、自分で作ってみると、 仕様通りには全く作れず、結局main関数ですべてを作って しまうことになってしまいます・・

  • コマンドライン引数について。

    コマンドライン引数についての質問です。 コマンドライン引数に適当な数字をいれ、金種別にわけるプログラムですが、 コマンドライン引数に負の値や、文字列を入力したときにはエラーが表示させるようにしているのですが、 数字と文字を混合したもののときはエラーが表示されずにそのまま処理されてしまいます。 初めの一文字目が数字だったらそのあとに文字を入れても実行されてしまうようです。 全て数字の場合のみ実行させてそれ以外はエラーメッセージを表示させたいのですが、どのようにすればいいでしょうか? #include <stdio.h> #include <stdlib.h> int syubetu(int money,int *kinsyu); int *kinsyu; int main(int argc,char *argv[]) { int *p,a; p=(int*)malloc(sizeof(int)*9); if(p==NULL){ printf("メモリ確保失敗\n"); exit(1); } a=atoi(argv[1]); if(a>0){ syubetu(a,&p[0]); printf("1万円 %d枚\n",p[0]); printf("5千円 %d枚\n",p[1]); printf(" 千円 %d枚\n",p[2]); printf("5百円 %d枚\n",p[3]); printf(" 百円 %d枚\n",p[4]); printf("50円 %d枚\n",p[5]); printf("10円 %d枚\n",p[6]); printf(" 5円 %d枚\n",p[7]); printf(" 1円 %d枚\n",p[8]); } else{ printf("入力エラー\n"); exit(1); } } int syubetu(int money,int *kinsyu) 800字以上になるため、処理は省略します。

  • GDBでCプログラムの関数の引数を変更したい

    関数の引数の値を書き換えたいです。 DGBのx/iコマンドでアッセンブラをみて レジスタに格納された引数の値を書き換えようと考えています。 このコマンドで書き換えたい関数の$ebpを見て書き換える予定です。 引数を書き換えたい関数の戻り値が構造体であるかないかで、$ebpからのアドレスの位置が変更されてしまいます。 他に格納されている関数の引数のアドレスが1つに固定できる方法はないでしょうか? できないとしたら、条件で関数の戻り値が構造体かどうかの判断はどこでつければよいでしょうか?

  • main関数の事についてお聞きします。

    Windowsのプログラムを書くとき、下のようにキッチリ戻り値や引数を書かなくてはならないのに int WINAPI WinMain( HINSTANCE hInstance, // 現在のインスタンスのハンドル HINSTANCE hPrevInstance, // 以前のインスタンスのハンドル LPSTR lpCmdLine, // コマンドライン int nCmdShow // 表示状態 ); C言語で書かれたプログラムは int main(int argc, char *argv[]) ではなく、 int main(void) や void main(void) または int main() や main() だけのモノなど、 いろいろです。 main関数は、関数なのに戻り値や引数を省略して書ける仕様なのは、なぜなのか? ちょっと疑問に思ったのでこちらにお尋ねしました。

  • 次の式の意味は?

    Javaで 「1つのコマンドライン引数を受け取るプログラムを作成しなさい。 文字列をint型に変換して...」 という問題がありました。 コマンドラインから引数を受け取りint型に変える式が int i = Integer.valueOf(args[0]).intValue(); と書かれてあったのですがこの式の意味がよく理解出来ません。 もしよろしければ、初心者にも分かるように答えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 金種を整理する関数を教えてください。

    両替のため、エクセルに関数を入れて、金額を入力するだけで金種を表示させたいのですが、どんな関数がふさわしいでしょうか?教えてください。

  • コマンドライン引数の例外処理について

    整数a、bをコマンドライン引数として受け取るプログラムを作成するとします。この時、入力するコマンドライン引数を整数であるa、b2つのみとします。 次の事柄について教えて下さい。 (1)コマンドライン引数を2個入力しなかった時の例外処理の仕方 (例えば、コマンドライン引数を入力しなかったり3個入力した時) (2)整数のコマンドライン引数を入力しなかった時の例外処理の仕方 (例えば、「abc」などと入力した場合) (3)コマンドライン引数を数の小さいものから入力しなかった時の処理の仕方 (例えば、「3 5」ではなく「5 3」と入力した場合) 初心者なもので…。どなたかお教え下さい。宜しくお願いします。

    • ベストアンサー
    • Java
  • 関数について教えて下さい

    エクセルでセルに金額を入れると、金種(例えば\157,689と入力した場合、1万円が15枚、5千円が1枚、千円が2枚、500円が1枚、100円が1枚、50円が1枚、10円が3枚、5円が1枚、1円が4枚とそれぞれの金種のセルに枚数を表示させる)に振り分けて表示するためにはどの関数を使えばよいのか教えてください。パソコンは超初心者で勉強を始めたばかりなので、恐れ入りますが、出来るだけわかりやすく解説していただければ幸いです。よろしくお願い致します。

  • C言語 文字列比較

    WindowsAppのコマンドライン引数はLPSTR型ですよね、コマンドライン引数が~だったら、というような条件分岐を作りたいのですが、strcmpは使えません。それで、どうすればいいのか分からなくなってしまい、質問しました。 WindowsAppではあるけど、コマンドラインオプションを使いたいのですが、どうやって文字列をしたらいいのでしょうか? もしstrcmpが使えたとしたら、こういうことをやりたいのです。 int WINAPI WinMain(・・・LPSTR pCmdLine, ・・・) // pCmdLineはコマンドライン引数です。 { ・・・ // 省略 if(strcmp(pCmdLine,"-s") == 0) { ・・・ } ・・・ return 0; } ・・・は省略です。 このようなことをできる関数はありませんか?

  • このプログラムにアドバイスをください

    問題が  ・100個の要素を持った一次元配列をmain()関数内で宣言 ・一次元配列と要素数を引数として持つ関数seisei() ・関数seisei()は乱数を使い渡された配列を0~99の整数で初期化する。 ・一次元配列、要素数そして変数のポインタを引数としてもつ関数goukei() ・関数goukei()は渡された配列に格納された数値の合計を計算し、渡された変数のポインタにその合計値を代入する。 と問題があり、下記のようにプログラムを作ったんですが、どうしてもコンパイルできません。どなたかご指摘よろしくお願いします。 #include <stdio.h> #include <time.h> void seisei(int *,int); void goukei(int *, int, int*); int i, *sum; int main() { int a[100],sum; seisei(a,100); goukei(a,100,&sum); printf("sum:%d\n",&sum); return 0; } void seisei(int *a[i], int n) { srand(time(NULL)); for(i = 0; i <= n; i++){ *a[i] = rand() % 100; } } void goukei(int *a[i],int n,int *sum) { *sum = 0; for(i = 0; i <= n; i++){ *sum += *a[i]; } }