ページ 1 / 1
お願いします
Posted: 2009年7月07日(火) 00:19
by ユーリ
キーボードからアルファベット文字列を入力し、文字列の中の母音(a,e,i,o,u)を'='に置き換えて表示するというプログラムなのですが
#include <stdio.h>
int main(void)
{
char moji[/url];
printf("文字を入力してください");
scanf("%S",&moji);
printf("%S",moji);
return 0;
}
最初の方はできたのですが母音を=に置き換えて表示するにはどうしたらいいですかね?
ヒントを貰えないでしょうか?
Re:お願いします
Posted: 2009年7月07日(火) 00:39
by conio
>>最初の方はできたのですが
残念ながら出来ていないように思えます。
エラーが出るのではないですか?
----------------------------------------------------
char moji[/url];
これではサイズが不明です。
適当な数でいいので指定しないとエラーになりますよ。
(省略可能の場合もありますが、今回の書き方だと省略不可です)
scanf("%S",&moji);
文字列の場合、&は要らないです。
あと、大文字ではなく、小文字ではないかと。 %S ⇒ %s
----------------------------------------------------
Re:お願いします
Posted: 2009年7月07日(火) 00:40
by ねこ
<ヒント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);」で取得する事が出来ます。
これで分からなかったらその次は「ヒント」じゃなくて「答え」になります。
Re:お願いします
Posted: 2009年7月07日(火) 01:04
by Hermit
文字を一文字ずつ比較する処理を書くのは面倒なので、
一気に比較する為に、
switch() や、strchr() 等をよく使います。
switch(moji) {
case 'a': case 'i': case 'u': case 'e': case 'o':
moji = '=';
}
とか、
if (strchr("aiueo",moji))
moji = '=';
とか。
コンピュータ内部での処理は遅くなるかもしれません。簡単に書くためだけです。
Re:お願いします
Posted: 2009年7月07日(火) 22:26
by ユーリ
#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:お願いします
Posted: 2009年7月07日(火) 22:31
by バグ
変数iは何の為に使ってますか?
Re:お願いします
Posted: 2009年7月07日(火) 22:45
by ユーリ
ありがとうございました。
解決いたしました。