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

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

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

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

497閲覧

・1,2が複数回あると、その回数分、"Wan"、"Nyan"が表示されてしまう。

mojagen

総合スコア2

C

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

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/08/18 14:49

編集2020/08/18 15:39

1が含まれていたら、Wanと表示する。2が含まれていたら、Nyanと表示する条件で、
結果としては以下の様な感じにしたいのですが、
11...WanWanや22...NyanNyanとなってしまって、
複数の1、もしくは2が含まれていても、Wan/Nyanが一回しか出ないようにするにはどの様な工夫や変更をすればよろしいでしょうか。

1 ... Wan
2 ... Nyan
3 ...3
4 ...4
5 ...5
6 ...6
7 ...7
8 ...8
9 ...9
10 ... Wan
11 ... Wan
12 ... Wan Nyan
13 ... Wan
14 ... Wan
15 ... Wan
16 ... Wan
17 ... Wan
18 ... Wan
19 ... Wan
20 ... Wan
.
.
.

#include <stdio.h>

int main()
{
int n = 100;
int i, j;
int wan = 0;
int nyan = 0;
for (i = 1; i <= n; i++) {
wan = 0;
nyan = 0;
printf("%d ... ", i);

int mod = i;
int devidend = 10;
for (j = 0; mod != 0; j++) {

if (mod % 10 == 1) {
printf("Wan");
}
if (mod % 10 == 2) {
printf("Nyan");
}
mod /= 10;

}
printf("\n");
}
return 0;
}

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

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

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

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

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

thkana

2020/08/18 21:52

C#関係ないです。タグは外してください
thkana

2020/08/18 22:01

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12230267387 https://teratail.com/help#posted-otherservice を参照して適切に対応してください。 「やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。 」
guest

回答3

0

期待する結果で「20 ... Wan」となっているのは「20 ... Nyan」の間違いですね。

変数のうち、wan、nyan、devidend が初期値を設定するだけで、使われていません。
j も 0、1、2 と増えていくだけで、その値は使われていません。

複数の1、もしくは2が含まれていても、Wan/Nyanが一回しか出ないようにするにはどの様な工夫や変更をすればよろしいでしょうか。

wan と nyan を 1 や 2 が見つかったことを示すフラグにしたらよいと思います。
if 文の判定で printf する代わりに wan = 1; や nyan = 1; とし、
内側の forループ終了直後に
if (wan != 0) printf("Wan");
if (nyan != 0) printf("Nyan");
を実行すればよいでしょう。

投稿2020/08/18 15:59

kazuma-s

総合スコア8224

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

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

0

ソースコードを見る限り「iに含まれる1の数だけwanを表示し、2の数だけnyanを表示する」プログラムを作成しているのですが、どのように表記することがゴールなのでしょうか?
1があればwan、2があればnyanを表示するだけでよいのであれば以下のソースコードでよいかと思います。

int main() { int n = 100; int i, j; int wan = 0; int nyan = 0; for (i = 1; i <= n; i++) { printf("%d ... ", i); if (i % 10 == 1) { printf("Wan"); } if (i % 10 == 2) { printf("Nyan"); }printf("\n"); } return 0; }

投稿2020/08/18 15:14

編集2020/08/18 15:15
yusuke-fusegi

総合スコア39

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

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

Daregada

2020/08/18 15:17

質問者はおそらく、10の位や100の位にも1や2があれば、"Wan"や"Nyan"と表示したいのでしょう。
yusuke-fusegi

2020/08/18 15:20

なるほど確かにそのようですね
mojagen

2020/08/18 15:24

おっしゃる通りでございます。 わかりずらい文章を書いてしまい、申し訳ございません。
yusuke-fusegi

2020/08/18 15:33

いえいえ私も理解力が足りず申し訳なかったです。
mojagen

2020/08/18 15:37

上記の質問について、少し変更させて頂きました。 ご教示いただけますと幸いです。
guest

0

ベストアンサー

ひとつのiにつき、一度"Wan"や"Nyan"を表示したらチェックを終了してしまえばいい。
具体的には、printf("Wan");printf("Nyan");の直後にbreak;を入れてください。

追加分: 途中で質問が「12のときはWan Nyanと表示」に変更されたため
必ず"Wan"が先に表示されるならこうかな。
「21のときにどう表示するか」が示されていないので推測するしかない。

C

1#include <stdio.h> 2 3int main(void) 4{ 5 int n = 100; 6 for (int i = 1; i <= n; i++) { 7 printf("%d ... ", i); 8 9 int wan = 0; 10 for (int mod = i; mod > 0; mod /= 10) { 11 if (mod % 10 == 1) { 12 printf("Wan"); 13 wan = 1; 14 break; 15 } 16 } 17 for (int mod = i; mod > 0; mod /= 10) { 18 if (mod % 10 == 2) { 19 if (wan) { 20 putchar(' '); 21 } 22 printf("Nyan"); 23 break; 24 } 25 } 26 putchar('\n'); 27 } 28 29 return 0; 30}

投稿2020/08/18 15:00

編集2020/08/18 15:53
Daregada

総合スコア11990

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問