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

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

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

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

Q&A

解決済

2回答

6963閲覧

文字列の中に一番多く含まれる文字を探すプログラム

bluesky1224

総合スコア6

C

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

1グッド

2クリップ

投稿2020/01/13 06:34

前提・実現したいこと

c言語において以下のプログラムを作成したいです。
半角大文字のアルファベットによる任意の長さの文字列をキーボードから入力すると,入力された文字列に「一番多く含まれる文字(アルファベット)」を,その文字数と共に出力するプログラムを書け.
なお,一番多く含まれる文字数が同数のものが複数ある場合,それらを併記して出力する.
例;文字を入力してください
PPAP
一番多く含まれる文字はP(3文字)です。

  文字を入力してください
PPAPAABCD
一番多く含まれる文字はP(3文字)、A(3文字)です。

試したこと

文字列を入力する。その文字列の文字数を関数で返す。ところまでできましたがこの後どうすればいいか全く分かりません

DrqYuto👍を押しています

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

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

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

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

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

jimbe

2020/01/13 09:56

> 文字列を入力する。その文字列の文字数を関数で返す。ところまでできましたが その出来たものをご提示されては如何でしょうか.
guest

回答2

0

ベストアンサー

  1. int count[26] を用意し、要素すべて0で埋める
  2. 入力文字列の各文字chに対し

2.1 count[ch-'A']を+1する
3. これで度数分布表ができた。count[n]の大きいものを出力する。

[追記] やってみた

C

1#include <stdio.h> 2 3// 度数分布表をcount[]に求める 4void hist(const char* str, int count[26]) { 5 int i; 6 for ( i = 0; i < 26; ++i ) { 7 count[i] = 0; 8 } 9 while ( *str != '\0' ) { 10 int ch = *str - 'A'; 11 if ( ch >= 0 && ch < 26 ) { 12 ++count[ch]; 13 } 14 ++str; 15 } 16} 17 18int main(){ 19 int count[26]; 20 int i; 21 int max_inx = 0; 22 23 hist("PPAPAABCD", count); 24 // 出現頻度最大のものを探す 25 for( i = 0; i < 26; ++i ) { 26 if ( count[i] > max_inx ) { 27 max_inx = count[i]; 28 } 29 } 30 // 出現頻度最大のものを出力する 31 for( i = 0; i < 26; ++i ) { 32 if ( count[i] == max_inx ) { 33 printf("%c : %d\n", i+'A', count[i]); 34 } 35 } 36 37 return 0; 38}

投稿2020/01/13 07:09

編集2020/01/13 09:54
episteme

総合スコア16612

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

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

bluesky1224

2020/01/13 10:07

回答ありがとうございます。。自分のソースコードと繋げてうまく作動しました。分かり易かったです。ありがとうございました。
episteme

2020/01/13 10:58

「度数分布表の作り方を思いつかんかった」ってことでOK?
guest

0

アルファベットとその文字の数をDictionaryで持たせてDictionaryの中の最も大きい数を取得。
その後にそれにあてはまるアルファベットを返してみてはどうですか?

投稿2020/01/13 07:08

Nippun

総合スコア1147

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問