ページ 1 / 1
質問です
Posted: 2009年7月15日(水) 09:21
by ユーリ
#include <stdio.h>
int main(void)
{
char i;
char moji[30];
printf("文字を入力してください\n");
scanf("%s",moji);
switch(moji) {
case 'a':
printf("%s",moji);
case 'i':
printf("%s",moji);
case 'u':
printf("%s",moji);
case 'e':
printf("%s",moji);
case 'o':
printf("%s",moji);
default:
break;
}
moji='=';
printf("%s",moji);
return 0;
}
入力した文字たとえばemiを母音のところを=表示=m=と表示したいのですが
上記のプログラムまでできていますがうまくいきません
ヒントの方をお願いします。
Re:質問です
Posted: 2009年7月15日(水) 09:36
by Mist
前も指摘されていましたがタイトルは質問内容がわかりるものにしましょう。
switch以降は間違っていますので以下をヒントに作り直してください。
1.strlenで入力された文字数を取得する
2.forでi=0から入力された文字数まで2-1の処理を実行
2-1.moziが母音であれば'='に置き換える、子音であれば何もしない
Re:質問です
Posted: 2009年7月15日(水) 09:44
by ねこ
Re:質問です
Posted: 2009年7月15日(水) 10:33
by ユーリ
すいません まちがえました
Re:質問です
Posted: 2009年7月15日(水) 20:01
by conio
>>すいません まちがえました
「解決したのに、解決していない問題だと間違えて、また投稿してしまった」
と言うことでしょうか?
(良く分からないので、解釈が間違っているかもしれません)
とりあえず、上記のプログラムで思ったことは
---------------------------------------------------------------------
●char型の変数iが初期化されてない
●添え字に使うのであれば、iはint型で良いのでは?
●文字列を変換する部分と、表示する部分は分けたほうが良い
●breakや処理の分岐など、switch文の中がおかしい。
●for文などを使っていないので、文字列を変換する部分が意味を成さない。
(i = 0だったとして、置換されるのは先頭の文字だけ)
---------------------------------------------------------------------
こんな感じですかね。
とりあえず、30文字未満であれば下記のプログラムで動くはずです。
-----------------------------------------------------------------
#include <stdio.h>
void Replace( char str[/url])
{
int i = 0;
while(str){
switch(str) {
case 'a':
case 'i':
case 'u':
case 'e':
case 'o': str = '=';
break;
default:break;
}
i += 1;
}
}
int main(void)
{
int i = 0;
char moji[30];
printf("文字を入力してください\n");scanf("%s",moji);
Replace(moji);
printf("%s",moji);
return 0;
}
-----------------------------------------------------------------