No.13960![]() |
質問です! 投稿者---ブラザー(2004/05/12 02:03:51) |
||
すみません、超初心者でさらに独学で勉強してるものなのですが、下の getint の書き方では、後に数字の付かない + あるいは - は、 ゼロの正しい表現として扱われる。そうした文字を入力に戻すように、このプログラムを直した上でmain を付けて、動作するプログラムを作れ。 っという問題がわかりません。教えてください #include <ctype.h> int getch(void); void ungetch(int); int getint(int *pn) { int c, sign; while (isspace(c = getch())) ; if (!isdigit(c) && c != EOF && c != '+' && c!= '-'){ ungetch(c); return 0; } sign = (c =='-') ? -1: 1; if (c == '+' || c == '-') c = getch(); for (*pn = 0; isdigit(c); c = getch()) *pn = 10 * *pn + (c - '0'); *pn *= sign; if (c != EOF) ungetch(c); return c; } |
No.13962![]() |
Re:質問です! 投稿者---はあ(2004/05/12 08:56:59) |
||
とりあえず、名前変えてまでマルチポストをするべきじゃない。 ttp://www-cc.ee.tokushima-u.ac.jp/cgi-bin/cboard.cgi?log=&v=749&e=msg&lp=749&st=0 あと、Subjectのつけ方もだめ。 最後に何がどうわからないのか書くべき。 |
No.13963![]() |
Re:質問です! 投稿者---もぐりん(2004/05/12 09:03:34) |
||
質問する前に、【掲示板ご利用上の注意】にある、注意書きは読みましたか? ・題名は具体的にお願いします。 ・学校の課題はある程度ご自分の解き方をお示しください。 ・ソースを添付する際には「HTML変換ツール」で字下げしてください。 ・なるべく詳しく環境などの情報をお書きください。 これらについて守った上で、質問したほうが回答が付きやすいですよ。 質問の内容がいまいち不鮮明です。 main関数の書き方がわからないということでしょうか? それと、'-'や'+'ってint型ではなくてchar型なんでは? もう少し落ち着いてソースを書いてみては、どうでしょうか? |
No.13982![]() |
Re:質問です! 投稿者---RAPT(2004/05/13 00:10:42) |
||
整形+α プログラムの動作が望ましい形かどうかは知りませんが…。 開発環境は、Windows2000sp4/VC++6.0sp6/Console-App #include <stdio.h> #include <conio.h> #include <ctype.h> int getint(int *pn) { int c, sign; while(isspace(c = getch())); if (!isdigit(c) && c != EOF && c != '+' && c != '-'){ ungetch(c); return 0; } sign = (c == '-') ? -1: 1; if (c == '+' || c == '-'){ c = getch(); } for (*pn = 0; isdigit(c); c = getch()){ *pn = 10 * *pn + (c - '0'); } *pn *= sign; if (c != EOF){ ungetch(c); } return c; } int main() { int n, c; printf("input >"); while((c = getint(&n)) != 0){ printf("\nvalue = %d\n\ninput >", n); } return 0; } もぐりんさん> > それと、'-'や'+'ってint型ではなくてchar型なんでは? ''で括られた文字リテラルはint型です。 printf("char = %u\n", sizeof(char)); printf("int = %u\n", sizeof(int)); printf("\'+\' = %u\n", sizeof('+')); ※ "ABC"[0]は char型、'A'は int型になります。 |
No.13996![]() |
Re:質問です! 投稿者---もぐりん(2004/05/13 08:39:39) |
||
もぐりんさん> > それと、'-'や'+'ってint型ではなくてchar型なんでは? ''で括られた文字リテラルはint型です。 RAPTさん、フォローありがとうございます。 私の勘違いでした。 |