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

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

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

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

C#

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

C++

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

Q&A

解決済

2回答

852閲覧

C言語の繰り返しについて

mojagen

総合スコア2

C

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

C#

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

C++

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

0グッド

0クリップ

投稿2020/08/18 16:00

編集2020/08/18 16:04

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 ... Nyan
.
.
.

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ページで確認できます。

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

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

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

KoichiSugiyama

2020/08/18 16:16

タイトルと質問内容は一致していますが、「C#に関する質問」にしてしまうと、内容によっては回答が集まらなくなることもあります。せめてタグの”C#"、"C++"は外した方が良いかと思います。
KoichiSugiyama

2020/08/18 16:34

回答してから気が付きましたが、確かに同じですね。同じ質問でしたら最初の質問で回答してくださっている方もおられますので、回答に対する疑問点があればそちらの方で聞かれた方が良いです。
guest

回答2

0

数値は一桁分なら10種類しかないから、全て数値のフラグにしてしまう。
int f=0;としておいて、
一桁ごとに分解した後に、
f |= 1<<n;(nは一桁に分解した数)
としてフラグに変えて合成する。
これでたとえば、123なら、0b1110になるから、後は、
wan = 1<<1;
nyan = 1<<2;
とかしておけば、
if(f & wan)
if(f & nyan)
とかで要素の有無を判別して出力できる。
これなら後から、8の場合はpoppoを追加して、とか言われても簡単にできる。

(配列化して一般化した方がもっといいかもだけど)

投稿2020/08/18 16:40

amiya

総合スコア1218

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

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

0

ベストアンサー

12の時は「Wan Nyan」で良いとすれば、一番簡単な対応はWanもしくはNyanを出力したかどうかのフラグを立てることです。ソース中で用意されていながら使用されていない変数wanとnyanをフラグとして使うと

c

1 2for (j = 0; mod != 0; j++) { 3 4 if (mod % 10 == 1) { 5 if (wan == 0) { 6 printf("Wan"); 7 wan = 1; 8 } 9 } 10 if (mod % 10 == 2) { 11 if (nyan == 0) { 12 printf("Nyan"); 13 nyan = 1; 14 } 15 } 16 mod /= 10; 17} 18

としてやればWanもNyanも一回ずつしか表示されません。wan,nyanとも他の用途で使用する予定でしたら、別途フラグ用の変数を用意して使用してください。wan,nyan同様外側のforループで都度0に初期化するのをお忘れなく。

投稿2020/08/18 16:27

KoichiSugiyama

総合スコア3041

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問