学校の課題で
キーボードから与えられた英文に含まれる、各アルファベットの数を数えるプログラムを2次元配列を使用して作成して下さい。なお、小文字と大文字は区別しません。
という問題が出たのですが2次元配列をどのようにして使うのかがわかりません。
どなたかわかる方いられましたら教えてください。
英文に含まれる、各アルファベットの数を数えるプログラムについて
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
2次元配列なしでここまでできたのですが、結果は正しく表示されるのですがエラーが出てしまいます。
#include <stdio.h>
int main(void) {
int i=0;
int a[26] = { 0 };
char ch[1000];
while ((ch[1000] = getchar()) != EOF) {
for (i = 0; ch[i] != '\0'; i++) {
if ('a' <= ch[i] && ch[i] <= 'z') {
a[ch[i] - 'a']++;
}
if ('A' <= ch[i] && ch[i] <= 'Z') {
a[ch[i] - 'A']++;
}
}
}
for (i = 0; i<26; i++) {
printf("%c : %d\n", i + 'a', a[i]);
}
return 0;
}
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
適当に使えばいいでしょう。二千 さんが書きました:2次元配列をどのようにして使うのかがわかりません。
どなたかわかる方いられましたら教えてください。
例えば
#include <stdio.h>
void solve(void) {
/* ここにキーボードから与えられた英文に含まれる、各アルファベットの数を数えるプログラムを書く */
puts("hello, world!");
}
int main(void) {
void (*nizigenhairetu[2][2])(void);
nizigenhairetu[0][0] = solve;
nizigenhairetu[0][1] = nizigenhairetu[0][0];
nizigenhairetu[1][0] = nizigenhairetu[0][1];
nizigenhairetu[1][1] = nizigenhairetu[1][0];
nizigenhairetu[1][1]();
return 0;
}
8行目のch[1000]は確保された領域の範囲外であり、アクセスしてはいけません。二千 さんが書きました:2次元配列なしでここまでできたのですが、結果は正しく表示されるのですがエラーが出てしまいます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
本当ですね?それは非常に運がよかったですね。二千 さんが書きました:結果は正しく表示されるのですが
この提示されたプログラムは範囲外アクセスに加え、未初期化で不定の値を持つ自動変数を計算に使うというundefined behaviorを含みます。
従って、あらゆることが起こり得ます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
そもそも、標準ライブラリのgetchar()の戻り値はint型であり、EOFはchar型には入りません。
従って、getchar()の戻り値をchar型のobjectに代入した結果の値(char型)をEOFと比較するのはいい考えではありません。
従って、getchar()の戻り値をchar型のobjectに代入した結果の値(char型)をEOFと比較するのはいい考えではありません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
2次元配列を無理やり使うとしたら、
大文字と小文字を別々に数えたらどうでしょうか?
大文字と小文字を別々に数えたらどうでしょうか?
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
これをもとに英文を1文だけ読み込んでfor文でカウントするようにしたいのですがどうすればいいでしょうかかずま さんが書きました:2次元配列を無理やり使うとしたら、
大文字と小文字を別々に数えたらどうでしょうか?
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
改行されたらカウント結果を出力するようにしたいです二千 さんが書きました:これをもとに英文を1文だけ読み込んでfor文でカウントするようにしたいのですがどうすればいいでしょうかかずま さんが書きました:2次元配列を無理やり使うとしたら、
大文字と小文字を別々に数えたらどうでしょうか?
Re: 英文に含まれる、各アルファベットの数を数えるプログラムについて
解決したのならそのコードを貼ってください。二千 さんが書きました:解決しました
かずまさんのソースコードを参考にさせていただきました
文の定義は何ですか? ピリオドまで?
行と文の関係は? 1行に 2つの文がある場合は?
1つの文が 2行にまたがる場合は?