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

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

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

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

Q&A

解決済

2回答

5824閲覧

文字列中のアルファベットa〜zの各個数

xeno

総合スコア16

C

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

0グッド

0クリップ

投稿2020/10/25 11:32

編集2020/10/25 11:34

文字列中のアルファベットa〜zの各個数を求めるプログラムを作成しています。
例えば、aaashという文字列を入力した場合は’aの数が3個’、’sの数が1個’〜と言った感じで出力したいです。
実行してもうまく行きません
どう直してらよいでしょうか
また、もっといい書き方などあれば教えていただきたいです。

現在のソースコード
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
#include <stdio.h>
#include <string.h>
int main(void){

char alf[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; char str[128]; int i = 0; int j = 0; int count=0; scanf("%s",&str); while(str[i] != '\0'){ printf("%c ", str[i]); i++; for(alf[j]=0;j<=26;j++){ if(str[i]==alf[j]){ count++; printf("%sが%d個\n",str[i],count);} } } return(0);

}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

実行結果
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
asd
Segmentation fault (コアダンプ)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

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

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

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

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

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

guest

回答2

0

C

1#include <stdio.h> 2#include <string.h> 3 4int main(void) { 5 6 const char* alphabet = "abcdefghijklmnopqrstuvwxyz"; 7 int hist[26] = { 0 }; // 度数分布表 8 char str[128]; 9 int i; 10 11 scanf("%s", str); 12 13 for ( i = 0; str[i] != '\0'; ++i ) { 14 const char* pos = strchr(alphabet, str[i]); 15 if ( pos != NULL ) ++hist[pos-alphabet]; 16 } 17 18 for ( i = 0; alphabet[i] != '\0'; ++i ) { 19 if ( hist[i] != 0 ) { 20 printf("%cが%d個\n",alphabet[i],hist[i]); 21 } 22 } 23 24 return 0; 25}

投稿2020/10/25 12:17

episteme

総合スコア16612

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

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

0

ベストアンサー

diff

1#include <stdio.h> 2#include <string.h> 3int main(void) { 4 5 char alf[26] = { 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' }; 6 char str[128]; 7 int i = 0; 8 int j = 0; 9- int count = 0; 10+ int count[26] = {0}; 11 scanf("%s", &str); 12 while (str[i] != '\0') { 13 printf("%c ", str[i]); 14- i++; 15- for (alf[j] = 0; j <= 26; j++) { 16+ for (j = 0; j < 26; j++) { 17 if (str[i] == alf[j]) { 18- count++; 19+ count[j]++; 20- printf("%sが%d個\n", str[i], count); 21+ printf("%cが%d個\n", str[i], count[j]); 22 } 23 } 24+ i++; 25 } 26 return(0); 27}

投稿2020/10/25 11:39

編集2020/10/25 11:43
SHOMI

総合スコア4079

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

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

xeno

2020/10/26 00:40

解決しました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問