自分は今、東京の工学系の大学に通っているのですが、C言語の課題で分からないものが出て・・・。
文字列の入力後、、英字の出現回数をカウントし、最後にその出現回数を表示、且つ、数字の前の部分に出現個数分の、アスタリスクを表示 しなさい。ただし、英字は全て大文字(A~Z)としみなす。
という問題なのですが、
ctype.hを使う、
while((c = getchar())!= EOF){
if(islower(c)){
c = toupper(c);
printf("%c",alphabet);
という文がmainの中にできる、というところまでは分かったのですが・・・。
どなたか分かる方がいましたら、御回答御願い致します。
学校の課題が分かりません。
Re: 学校の課題が分かりません。
えっと、まずは、そのプログラムが何をしているのかを説明していただけますか?
Re: 学校の課題が分かりません。
すみません。それを忘れていました。
表示結果は、
例として、TOKYOと入力したら、
A 0
B 0
C 0
...
K * 1
L 0
M 0
N 0
O ** 2
...
S 0
T * 1
といった感じで、アルファベットの入力回数をそれぞれ、AからZまで表示する、というものなのですが。
表示結果は、
例として、TOKYOと入力したら、
A 0
B 0
C 0
...
K * 1
L 0
M 0
N 0
O ** 2
...
S 0
T * 1
といった感じで、アルファベットの入力回数をそれぞれ、AからZまで表示する、というものなのですが。
Re: 学校の課題が分かりません。
じゃ、ここまでの部分を、動くようにプログラムしてみてください。Virus さんが書きました: while((c = getchar())!= EOF){
if(islower(c)){
c = toupper(c);
printf("%c",alphabet);
non
Re: 学校の課題が分かりません。
ヒマなので作ってみました。
ちゃんと動くかどうかは保証できません。
ちゃんと動くかどうかは保証できません。
#include <stdio.h>
#include <ctype.h>
#define ALPHABET (26)
void inputData(int *p)
{
int c;
printf("英文字を入力するんだぜぇ!\n");
while ((c = getchar()) != EOF) {
if (islower(c)) {
p[toupper(c) - 'A']++;
}
}
}
void outputData(int *p)
{
int i, j;
for (i = 0; i < ALPHABET; i++) {
printf("%c ", 'A' + i);
for (j = 0; j < p[i]; j++) {
putchar('*');
}
printf(" %d\n", p[i]);
}
}
int main(void)
{
int count[ALPHABET] = { 0 };
inputData(count);
outputData(count);
return 0;
}