質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2935閲覧

日本語入力で英語訳出力するC言語プログラム

KeiD

総合スコア26

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/07/11 02:09

編集2020/07/11 02:22

日本語入力で英語訳出力するC言語プログラム

C言語で以下の表示がされるようなプログラムを書いてます。

日本語で惑星名を入力>水
Mercury
日本語で惑星名を入力>金
Mars
日本語で惑星名を入力>地
Earth
日本語で惑星名を入力>終

と表示され、最後に4つの惑星日本語単語以外の入力で終了にしたいのですが

以下のプログラムでは
日本語で惑星名を入力>水
Mercury
で 水 を入力するとMercuryは出ますがそれで終わってしまいます。

while(1)ではなく do{ }while(flag==1);を用い、
flag=0を使い 惑星日本語名が入力されたらflag=1とし、惑星以外入力でループから抜け出せるようにしたいのですがやり方がわかりません。

どう変更すればよいかご存じの方ご教示お願い致します。

#include <stdio.h>
#include <string.h>

int main()
{
const char dictionary[4][2][10]={{"水","Mercury"},{"金","Venus"},
{"地","Earth"},{"火","Mars"}};

char input[128]={'\0'};
int i, flag;

do{
printf("日本語で惑星名を入力>");
scanf("%s",&input);
if(strcmp(input,"水")==0) printf("Mercury");
else if(strcmp(input,"金")==0) printf("Mars");
else if(strcmp(input,"地")==0) printf("Earth");
else if(strcmp(input,"火")==0) printf("Mars");
else break;
}while(flag==1);
return 0;
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

doループに入る前にflagが初期化されていないため、while文での判定式 flag==1 が false となりループを抜けています。
do の前に flag=1; を入れましょう。

その状態でも動くと思いますが、flag操作でdo-whileを抜けるのであれば、
if-elseの最後の break;の代わりに flag=0; を入れれば想定通りに動くでしょう。

c

1include <stdio.h> 2include <string.h> 3int main() 4{ 5 const char dictionary[4][2][10]={{"水","Mercury"},{"金","Venus"}, 6 {"地","Earth"},{"火","Mars"}}; 7 8 char input[128]={'\0'}; 9 int i, flag; 10 11 flag=1; 12 13 do{ 14 printf("日本語で惑星名を入力>"); 15 scanf("%s",&input); 16 if(strcmp(input,"水")==0) printf("Mercury"); 17 else if(strcmp(input,"金")==0) printf("Mars"); 18 else if(strcmp(input,"地")==0) printf("Earth"); 19 else if(strcmp(input,"火")==0) printf("Mars"); 20 else flag=0; 21 }while(flag==1); 22 return 0; 23}

投稿2020/07/11 02:25

Kaleidoscope

総合スコア257

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KeiD

2020/07/11 02:29

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問