学校の課題が分かりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Virus

学校の課題が分かりません。

#1

投稿記事 by Virus » 13年前

 自分は今、東京の工学系の大学に通っているのですが、C言語の課題で分からないものが出て・・・。
 文字列の入力後、、英字の出現回数をカウントし、最後にその出現回数を表示、且つ、数字の前の部分に出現個数分の、アスタリスクを表示 しなさい。ただし、英字は全て大文字(A~Z)としみなす。
という問題なのですが、
ctype.hを使う、
while((c = getchar())!= EOF){
if(islower(c)){
c = toupper(c);

printf("%c",alphabet);

という文がmainの中にできる、というところまでは分かったのですが・・・。
どなたか分かる方がいましたら、御回答御願い致します。

アバター
バグ
記事: 130
登録日時: 15年前
住所: 愛媛県
連絡を取る:

Re: 学校の課題が分かりません。

#2

投稿記事 by バグ » 13年前

えっと、まずは、そのプログラムが何をしているのかを説明していただけますか?

Virus

Re: 学校の課題が分かりません。

#3

投稿記事 by Virus » 13年前

すみません。それを忘れていました。
表示結果は、
例として、TOKYOと入力したら、
A 0
B 0
C 0
...
K * 1
L 0
M 0
N 0
O ** 2
...
S 0
T * 1
といった感じで、アルファベットの入力回数をそれぞれ、AからZまで表示する、というものなのですが。

non
記事: 1097
登録日時: 14年前

Re: 学校の課題が分かりません。

#4

投稿記事 by non » 13年前

Virus さんが書きました:  while((c = getchar())!= EOF){
if(islower(c)){
c = toupper(c);

printf("%c",alphabet);
じゃ、ここまでの部分を、動くようにプログラムしてみてください。
non

初級者
記事: 200
登録日時: 14年前

Re: 学校の課題が分かりません。

#5

投稿記事 by 初級者 » 13年前

ヒマなので作ってみました。
ちゃんと動くかどうかは保証できません。

コード:

#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;
}

閉鎖

“C言語何でも質問掲示板” へ戻る