アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のように実行したいのですが、
どのように組んだら良いのでしょうか?
宜しくお願いします。

言語は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件)

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;
}
    • good
    • 0

#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;
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!