質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

2回答

1106閲覧

数字をカウントするプログラムの改良

purinnn

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/04/12 12:21

入力された数字の頻度を表示するプログラミングを作成しました。
これを
0以上10未満
10以上20未満

90以上100未満
100
というように分類して頻度を調べるようにしたいです。
負の数値の場合にはプログラムを終了、また101以上は無効で、そのことを警告するというようにしたいと考えています。
どのようにしたらいいでしょうか。
教えていただけるとありがたいです。

#include<stdio.h> int main(void) { int i,ch; int cnt[10]={0}; while(1){ ch = getchar(); if(ch ==EOF)break; if(ch >= '0' && ch <= '9') cnt[ch -'0']++; } puts("数字の出現回数"); for(i=0;i<10;i++) printf("'%d':%d\n",i,cnt[i]); return (0); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

宿題?何かの課題?

getchar の使い方がおかしいです。
これでは、数字の入力が出来ません。

数字だけを入力させる(エラーを考えない)のなら、scanf を使ったほうが楽です。
そこで、得られる数字を、0以下と101以上ならエラーにするようなif文を組み込む。

そうしたら、0-100の数字が得られる。
全部をif文やswitch文で比較しても良いと思うのですが、10刻みで配列に入れるのなら、得られた数字を10で割った商の添字の配列に加算します。
これで、分布の配列cntに数字が入るので、表示して終わりです。

投稿2021/04/12 12:33

nfox

総合スコア229

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/04/12 12:41

> getchar の使い方がおかしいです。 > これでは、数字の入力が出来ません。 質問の流れとして、たぶん、「提示のプログラムは'0'~'9'の1文字の数文字の分布(出現回数)を求めるプログラムですが、それを0以上10未満...」とするプログラムに変えたいということなのだと思います。そうであればその時点でのgetchar自体の使い方は有り、だと思います。しかしここから「どのようにしたら」はちょっと飛躍がありますね。
guest

0

まず、第一歩として、「数字を入力してそのまま出力する。負の数が入力されたら終わり」というプログラムから始めましょう。

投稿2021/04/12 12:47

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問