以下のように実行したいのですが、
どのように組んだら良いのでしょうか?
宜しくお願いします。
言語はC言語で、環境はVisual C++ 2010 Express Editionを使っています。
ちなみに最後の方に現在のコードがあります。
/////////////////////////////////////////////
文字を入力しなさい(終了条件:Ctrl+Z)
abcdef678ABCDEFopuKLH
ghtJK+ghjBBBdgjk
^Z
a : 1個入力 b : 1個入力 c : 1個入力
d : 2個入力 e : 1個入力 f : 1個入力
g : 3個入力 h : 2個入力 i : 0個入力
j : 2個入力 k : 1個入力 l : 0個入力
m : 0個入力 n : 0個入力 o : 1個入力
p : 1個入力 q : 0個入力 r : 0個入力
s : 0個入力 t : 1個入力 u : 1個入力
v : 0個入力 w : 0個入力 x : 0個入力
y : 0個入力 z : 0個入力
A : 1個入力 B : 4個入力 C : 1個入力
D : 1個入力 E : 1個入力 F : 1個入力
G : 0個入力 H : 1個入力 I : 0個入力
J : 1個入力 K : 2個入力 L : 1個入力
M : 0個入力 N : 0個入力 O : 0個入力
P : 0個入力 Q : 0個入力 R : 0個入力
S : 0個入力 T : 0個入力 U : 0個入力
V : 0個入力 W : 0個入力 X : 0個入力
Y : 0個入力 Z : 0個入力
///////////////////////////////////////
#include<stdio.h>
#include<conio.h>
#defineALPHABET_COUNT52
intmain(void)
{
//入力アルファベットの個数を数えるカウンタは大きさ 52 の配列で用意。
intcounter[ALPHABET_COUNT];
intc;
inti;
//最初に、配列の 52個の要素すべてを0クリアする
for(i=0;i<52;i++){
counter[i] = 0;
}
printf("文字を入力しなさい(終了条件:Ctrl+Z)\n");
while(1){
c = getchar();
if(c == EOF){
break;
}
if(c >= 'a' && c <= 'z'){ //65<90
counter[c-'a']++;
}
else if(c >= 'A' && c <= 'Z'){ //97<122
counter[c-'A']++;
}
}
// 文字種別の個数表示する
c = 'a';
for(i=0;i<ALPHABET_COUNT;i++){
if(i<26){
printf("\t%c : %3d個入力",c++,counter[i]);
if(((i+1)%3) == 0){
printf("\n");
}
}
else{
if(i==26){
printf("\n");
c = 'A';
}
printf("\t%c : %3d個入力",c++,counter[i]);
if(((i+2)%3) == 0){
printf("\n");
}
}
}
printf("\n");
/*
c = 'a';
for(i=1;i<=26;i++){
printf("\t%c : %3d個入力",c++,counter[i-1]);
if(i%3 == 0){
printf("\n");
}
}
printf("\n");
*/
}
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
main関数で何でもかんでも仕事をしようとすると
プログラム全体の見通しが悪くなるので、
こんな風に役割分担させることをおすすめします。
#include <stdio.h>
#include <ctype.h>
#define ALPHABET (26)
void input(int *lower, int *upper)
{
int c;
printf("文字を入力しなさい(終了条件:Ctrl+Z)\n");
while ((c = getchar()) != EOF) {
if (islower(c)) {
lower[c - 'a']++;
}
if (isupper(c)) {
upper[c - 'A']++;
}
}
}
void output(int *lower, int *upper)
{
int i;
for (i = 0; i < ALPHABET; i++) {
printf("%c:%d個入力%c", 'a' + i, lower[i], (i % 3 == 2) ? '\n' : ' ');
}
putchar('\n');
for (i = 0; i < ALPHABET; i++) {
printf("%c:%d個入力%c", 'A' + i, upper[i], (i % 3 == 2) ? '\n' : ' ');
}
putchar('\n');
}
int main(void)
{
int lower[ALPHABET] = { 0 };
int upper[ALPHABET] = { 0 };
input(lower, upper);
output(lower, upper);
return 0;
}
No.1
- 回答日時:
#include <stdio.h>
#include <ctype.h>
#define ALPHABET (26)
int main(void)
{
int lower[ALPHABET] = { 0 };
int upper[ALPHABET] = { 0 };
int c, i;
printf("文字を入力しなさい(終了条件:Ctrl+Z)\n");
while ((c = getchar()) != EOF) {
if (islower(c)) {
lower[c - 'a']++;
}
if (isupper(c)) {
upper[c - 'A']++;
}
}
for (i = 0; i < ALPHABET; i++) {
printf("%c:%d個入力%c", 'a' + i, lower[i], (i % 3 == 2) ? '\n' : ' ');
}
putchar('\n');
for (i = 0; i < ALPHABET; i++) {
printf("%c:%d個入力%c", 'A' + i, upper[i], (i % 3 == 2) ? '\n' : ' ');
}
putchar('\n');
return 0;
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
scanfが2回使えない・・・?;
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
"scanf"でエンターで改行させな...
-
if文の条件にscanf関数を使うと…?
-
2進数の1の数を数える問題
-
cout関数を使っているのですが...
-
プログラミングの問題で、キー...
-
プログラミングの問題です 「金...
-
scanf が無視されます
-
scanf関数について
-
C言語 逆ピラミッドの作り方
-
scanf("%s", buf);でスペースを...
-
Eclipseコンソール表示を、リセ...
-
VBでの日付入力値のフォーマッ...
-
enterでループ終了
-
UWSCで変数をキー入力
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
double型が正常に認識されてい...
-
プログラミング初心者です。 Py...
-
正負を反転させて出力するプロ...
-
Excel VBAで、Application.Inpu...
-
C言語について。
-
batプログラム上で文字列を入力...
-
*をユーザーが入力した数字の数...
-
cout関数を使っているのですが...
-
漢字のソートについて
-
数字以外が入力されたらエラー...
-
Userformの入力順序をタブオー...
-
ワードで文字を入力する時の変...
-
Linuxで入力待ちなしkeyread関...
-
java初心者です。入力されたの...
-
EDITコントロールで入力できる...
-
Eclipseコンソール表示を、リセ...
-
小数か整数かを判定する方法
-
C言語scanf_sで何故か2回入力に...
-
VB.NETで16進数+16進数や16進...
-
Linuxプログラミングで、キーボ...
おすすめ情報