1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   掲示板ランキング



掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5782

^Zの入力?についてご教授願います。
投稿者---瀬菜(2006/05/30 15:20:13)


初めまして、
C言語についてまだ学び始めたばかりでどうしてもわからない部分が出て来てしまったのでお尋ねしたいと思います。
宜しければご回答orヒントを頂けると幸いです。

問としては
キーボードより複数件の整数(0〜49)を入力し、データの範囲ごとに配列に件数を集計して出力しなさい
との事です。
---実行画面---

整数入力 ==> 3
整数入力 ==> 15
整数入力 ==> 43
整数入力 ==> 8
整数入力 ==> 38
整数入力 ==> 7
整数入力 ==> 49
整数入力 ==> 18
整数入力 ==> ^Z

* * * 結果 * * *
配列[0] : 3件  ( 0〜9)
配列[1] : 2件  (10〜19)
配列[2] : 0件  (20〜29)
配列[3] : 1件  (30〜39)
配列[4] : 2件  (40〜49)

--------------------------
と表示させる物で次のようなif文は使ってはいけないと言う物です。
if (n >= 0 && n <= 9)


私が考えたプログラムは
#include <stdio.h>
void main (void)
{
int i , dat ;
int cnt[5]={0,0,0,0,0} ;

printf("整数入力 ==> ") ;
scanf("%d" , dat) ;

*********
{
i=dat/10 ;
cnt[i]++ ;
printf("整数入力 ==> ") ;
scanf("%d" , dat) ;
}
printf("* * * 結果 * * *\n") ;
printf("配列[0] : %d件 ( 0〜9)\n" , cnt[0]) ;
printf("配列[1] : %d件 (10〜19)\n" , cnt[1]) ;
printf("配列[2] : %d件 (20〜29)\n" , cnt[2]) ;
printf("配列[3] : %d件 (30〜39)\n" , cnt[3]) ;
printf("配列[4] : %d件 (40〜49)\n" , cnt[4]) ;
return ;
}
こんな感じで*******にした辺りに何かを入れれば完了するかもしれないと考えているのですが^Z以外で{}から出るようにif (dat != ^Z)を入れてみましたがエラーが出てしまい起動しませんでした。
使用しているOSはWinXPのコンパイラはbcpadを使用しております。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:^Zの入力?についてご教授願います。 5783 breakwind4u 2006/05/30 15:35:52


No.5783

Re:^Zの入力?についてご教授願います。
投稿者---breakwind4u(2006/05/30 15:35:52)


^Z とは、[Ctrl]-z の意味ですよね?

うろ覚えですが、(Windowsの)コンソールから [Ctrl]-z を入力すると、
テキストモードでは EOF と認識したと思います(バイナリモードだと
0x1a の1文字が読まれる)。

この場合、scanf の戻り値が EOF になるので、それを確認すれば
よいハズです。

ちなみに、scanf("%d", dat) ではなく scanf("%d" , &dat) ですね。


この投稿にコメントする

削除パスワード

No.5784

Re:^Zの入力?についてご教授願います。
投稿者---瀬菜(2006/05/30 15:55:14)


breakwind4uさん有難う御座います^^
ご指摘を参考にしてみたところ
#include <stdio.h>
void main (void)
{
int i , dat ;
int cnt[5]={0,0,0,0,0} ;

printf("整数入力 ==> ") ;
while (scanf("%d" , &dat) != EOF)
{
i=dat/10 ;
cnt[i]++ ;
printf("整数入力 ==> ") ;
}
printf("* * * 結果 * * *\n") ;
printf("配列[0] : %d件 ( 0〜9)\n" , cnt[0]) ;
printf("配列[1] : %d件 (10〜19)\n" , cnt[1]) ;
printf("配列[2] : %d件 (20〜29)\n" , cnt[2]) ;
printf("配列[3] : %d件 (30〜39)\n" , cnt[3]) ;
printf("配列[4] : %d件 (40〜49)\n" , cnt[4]) ;
return ;
}
って感じで出来上がりました♪
scanfの&は良く見落としてしまうんです;気をつけないと・・・。
有難うございました。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ