お願いします

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

お願いします

#1

投稿記事 by ユーリ » 16年前

キーボードからアルファベット文字列を入力し、文字列の中の母音(a,e,i,o,u)を'='に置き換えて表示するというプログラムなのですが
#include <stdio.h>

int main(void)
{
char moji[/url];
printf("文字を入力してください");
	scanf("%S",&moji);

	
	
	printf("%S",moji);
	return 0;
}
最初の方はできたのですが母音を=に置き換えて表示するにはどうしたらいいですかね?
ヒントを貰えないでしょうか?

conio

Re:お願いします

#2

投稿記事 by conio » 16年前

>>最初の方はできたのですが
残念ながら出来ていないように思えます。
エラーが出るのではないですか?

----------------------------------------------------
char moji[/url];
これではサイズが不明です。
適当な数でいいので指定しないとエラーになりますよ。
(省略可能の場合もありますが、今回の書き方だと省略不可です)


scanf("%S",&moji);
文字列の場合、&は要らないです。
あと、大文字ではなく、小文字ではないかと。 %S ⇒ %s
----------------------------------------------------

ねこ

Re:お願いします

#3

投稿記事 by ねこ » 16年前

<ヒント1>
例えば入力で「kakikukeko」と入力した場合、mojiには以下のように情報が入っています
moji[0]:'k'
moji[1]:'a'
moji[2]:'k'
moji[3]:'i'
moji[4]:'k'
moji[5]:'u'
moji[6]:'k'
moji[7]:'e'
moji[8]:'k'
moji[9]:'o'

<ヒント2>
文字を1文字ずつ比較するのはif( moji[x] == 'a' )と判定出来ます。

<ヒント3>
指し変えるためには「moji[x] = '='」と処理します。

<ヒント4>
文字数を取得するには「int mojisu = strlen(moji);」で取得する事が出来ます。

これで分からなかったらその次は「ヒント」じゃなくて「答え」になります。

Hermit

Re:お願いします

#4

投稿記事 by Hermit » 16年前

文字を一文字ずつ比較する処理を書くのは面倒なので、
一気に比較する為に、
switch() や、strchr() 等をよく使います。
switch(moji) {
			case 'a': case 'i': case 'u': case 'e': case 'o':
				moji = '=';
		}
とか、

		if (strchr("aiueo",moji))
			moji = '=';
とか。


コンピュータ内部での処理は遅くなるかもしれません。簡単に書くためだけです。

ユーリ

Re:お願いします

#5

投稿記事 by ユーリ » 16年前

#include <stdio.h>

int main(void)
{
   char i;
	char moji[30];
	printf("文字を入力してください\n");
	scanf("%s",moji);
switch(moji) {
			case 'a':
			case 'i':
			case 'u':
			case 'e':
			case 'o':
			break;
	
		}
	moji='=';
	printf("%s",moji);
	return 0;
}

これで実行したら初めの文字だけが=になるのですがどのようにしたらよいのでしょうか?

バグ

Re:お願いします

#6

投稿記事 by バグ » 16年前

変数iは何の為に使ってますか?

ユーリ

Re:お願いします

#7

投稿記事 by ユーリ » 16年前

ありがとうございました。
解決いたしました。

閉鎖

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