お願いします

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

お願いします

#1

投稿記事 by phoen » 14年前

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

void main( void ) {
int hindo[26];
int i, c;
char name[20];
FILE *fp;
setbuf(stdout,0);

if ( (fp = fopen("fdct2.c", "r")) == NULL ) {
printf( "* Cannot open file.\n" );
exit( EXIT_FAILURE );
}

for ( i = 0; i < 26; ++i )
hindo = 0;

while ( (c = getc( fp )) != EOF )
if ( isalpha ( c ) )
++hindo[ c - 'a' ];

fclose( fp );

for ( i = 0; i < 26; ++i ) {
printf( "%c → %d\n", 'a' + i, hindo );
}
printf("名前をアルファベットで入力 ");
scanf("%s", name);

for ( i = 0; i < name; ++i ) {
printf("%c → %d\n",name, hindo[name - 'a']);
}
}

ここから名前の中に重複する文字があったら、その文字のプログラム中での出現回数を、アルファベット順に一度だけ表示するように作り変えたいのですが、どうすればいいか教えてください。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: お願いします

#2

投稿記事 by beatle » 14年前

次回からソースコードを貼り付ける際はcodeタグをお使い下さい。詳しくはフォーラムルール投稿前チェックリストを御覧ください。

phoenさんの投稿では、現在のプログラムがどのような動きをするのかがまったく書かれていませんので、書いて下さい。
「現在は~~という動作ですが、◯◯という動作に変えたいです」という感じで書けばいいでしょう。
phoen さんが書きました:その文字のプログラム中での出現回数を
とありますが、この「プログラム」とは何でしょうか。fdct2.cというファイルの中身のことでしょうか。

phoen

Re: お願いします

#3

投稿記事 by phoen » 14年前

fdct2.cというファイルの中身のことでしょうか。[/quote]
そうです


現在はキーボードから名前をアルファベットで入力し、ファイルの中の文字の出現回数のうち、入力した文字に該当する出現回数を表示しているの動作ですが、名前の中に重複する文字があったら、その文字のプログラム中での出現回数をアルファベット順に一度だけ表示するように作り変えたいです

例 tanaka と入力した場合
t ⇒ 2 a ⇒ 12 n ⇒ 5 a ⇒12 k ⇒ 6 a ⇒12

a ⇒ 12 k ⇒ 6 n ⇒ 5 t ⇒ 2

今が上の状態なので下のようにしたいです

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: お願いします

#4

投稿記事 by beatle » 14年前

なるほど。ではヒントを差し上げます。
入力された名前(例えばtanaka)のなかで、使われているアルファベットは何かを探します。

コード:

int used_characters[26];
// used_charactersを0クリア
for (i = 0; i < strlen(name); ++i)
{
    used_characters[name[i] - 'a']++;
}
こんな感じにすれば、nameにどのアルファベットが何文字含まれているかを検出できます。

ちなみに、お示しのソースコードの最後の方に

コード:

    for ( i = 0; i < name[i]; ++i ) {
        printf("%c → %d\n",name[i], hindo[name[i] - 'a']);
    }
という行がありますが、これはたまたま正常に動いているだけだと思いますので、改良をおすすめします。特にi < nameのあたりを。

phoen

Re: お願いします

#5

投稿記事 by phoen » 14年前

ありがとうございます

閉鎖

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