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

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

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

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

Q&A

解決済

1回答

769閲覧

1~nのうち3の倍数と3のつく数字を全て出力するプログラム

Moco

総合スコア7

C++

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

0グッド

0クリップ

投稿2023/01/18 11:12

前提

「1~nのうち3の倍数と3のつく数字を全て出力するプログラム」を作成しています。
2パターンのプログラムを作成しました。

実現したいこと

入力は「n=30」、期待出力は「3 6 9 12 13 15 18 21 23 24 27 30」。
該当ソースコード➀は問題なく作動しますが、➁は正常に作動せず、原因が分かりません。➁が作動しない原因を学びたいです。

該当のソースコード

C++

1//ソースコード➀ 2#include <bits/stdc++.h> 3#define _GLIBCXX_DEBUG 4#define rep(i, n) for (int i = 0; i < (int)(n); i++) 5#include <math.h> 6#include<algorithm> 7using namespace std; 8 9void call(int n){ 10 for(int i=1; i<=n; i++){ 11 int x = i; 12 if(x%3==0) cout << " " << x; 13 else{ 14 do{ 15 if(x%10==3) cout << " " << x; 16 x /= 10; 17 }while(x); 18 } 19 } 20} 21 22int main(){ 23 int n; 24 cin>>n; 25 call(n); 26}

該当のソースコード

C++

1//ソースコード➁ 2#include <bits/stdc++.h> 3#define _GLIBCXX_DEBUG 4#define rep(i, n) for (int i = 0; i < (int)(n); i++) 5#include <math.h> 6#include<algorithm> 7using namespace std; 8 9void call(int n){ 10 for(int i=1; i<=n; i++){ 11 if(i%3==0) cout << " " << i; 12 else{ 13 do{ 14 if(i%10==3) cout << " " << i; 15 i /= 10; 16 }while(i); 17 } 18 } 19} 20 21int main(){ 22 int n; 23 cin>>n; 24 call(n); 25}

試したこと

ソースコード➀の11行目において、「int x = i」のように、変数xにiの値を代入する事で作動しました。
ソースコード➁においても。forループによってiの値は更新される為、変数xを用意する手間が省けるのでは?と考えてました。
しかし、ソースコード➁だとエラーが発生してしまう為、原因を知りたいです。

長文駄文失礼しました。
分かりにくい質問で大変恐縮ですが、ご教示いただけると幸いでございます。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

for(int i=1; i<=n; i++){ // loop変数は i if(i%3==0) cout << " " << i; else{ do{ if(i%10==3) cout << " " << i; i /= 10; // loop変数(i)を書き換えたら、そりゃloopが狂うでしょうよ... }while(i); } }

投稿2023/01/18 11:16

episteme

総合スコア16614

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

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

Moco

2023/01/18 13:29

ご回答いただき、誠にありがとうございます。 ループ変数に関して、とんでもない勘違いをしていました。 理解することができました。お力添えいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問