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

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

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

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

2回答

1117閲覧

構造体を使って日本語を英語に翻訳するプログラム

kazu-.

総合スコア34

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1グッド

0クリップ

投稿2018/12/02 05:30

編集2018/12/02 05:32

日本語を英語に翻訳するプログラムでフラグを使う方法

nihon,denshi,gakkou以外が入力されたら”該当なし”を表示したい
nihonを入力したら英語が出力されたが、denshi,gakkouは該当なしになってしまうのですが、フラグを使い 2回目(含む)のループ以降、breakでelseの該当なし判定されない方法が思いつきません。アドバイスお願いします。

//ここからがコードです。
#include <stdio.h>
#include <string.h>

int main(int argc, const char * argv[])
{
int i,flag=1;
char src[20];
typedef struct Words
{
char jap[20];
char eng[20];
}WORDS;

WORDS Words[3]={ {"nihon","japan"}, {"denshi","electron"}, {"gakkou","school"} }; printf("日本語-->"); scanf("%s",src); for(i=0; i<3; i++) { if(strcmp(src,Words[i].jap)==0) { printf("翻訳:%s\n",Words[i].eng); break; } else (flag==1); { printf("該当なし\n"); break; } } return 0;

}

bochan2👍を押しています

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

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

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

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

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

guest

回答2

0

c

1#include <stdio.h> 2#include <string.h> 3 4int main(int argc, const char *argv[]) 5{ 6 int i, flag = 1; 7 char src[20]; 8 typedef struct Words { 9 char jap[20]; 10 char eng[20]; 11 } WORDS; 12 13 WORDS Words[3] = { { "nihon", "japan" }, 14 { "denshi", "electron" }, 15 { "gakkou", "school" } }; 16 17 printf("日本語-->"); 18 scanf("%s", src); 19 20 for (i = 0; i < 3; i++) { 21 if (strcmp(src, Words[i].jap) == 0) { 22 printf("翻訳:%s\n", Words[i].eng); 23 break; 24 } else 25 (flag == 1); 26 { 27 printf("該当なし\n"); 28 break; 29 } 30 } 31 return 0; 32} 33

インデントをちゃんとすれば一目瞭然d^^
「追記」

usr~/test/c % ./a.out 日本語-->denshi 翻訳:electron usr~/test/c % cat s1.c #include <stdio.h> #include <string.h> int main(int argc, const char *argv[]) { int i, flag = 1; char src[20]; typedef struct Words { char jap[20]; char eng[20]; } WORDS; WORDS Words[3] = { { "nihon", "japan" }, { "denshi", "electron" }, { "gakkou", "school" } }; printf("日本語-->"); scanf("%s", src); for (i = 0; i < 3; i++) { if (strcmp(src, Words[i].jap) == 0) { printf("翻訳:%s\n", Words[i].eng); flag = 0; break; } } if (flag) { printf("該当なし\n"); } return 0; }

全部(3回)見てないから・・・在ったか無かったかはループを抜けてから判断しないといけません。

投稿2018/12/02 06:11

編集2018/12/02 10:08
cateye

総合スコア6851

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

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

kazu-.

2018/12/02 09:33

まだどの様に工夫すれば良いか思いつきません。
cateye

2018/12/02 09:54

strcmp()で0以外が帰ると必ず“該当なし”になりませんか?・・・0の時にstrcmp()でブレークしますよね?で、それ以外(結果が0以外)の時は、必ず該当なしになります。・・・ if文のelse節には(flag == 1);しか含まれていません。下のブロック{ printf("該当なし\n"); break; }は必ず実行されますd^^
guest

0

「該当なし」と判断できるのはどのタイミングかを考えてみましょう。
現状のコードだとどのタイミングでその判断をしているのか追ってみてください。

投稿2018/12/02 05:41

dice142

総合スコア5158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問