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

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

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

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

Q&A

解決済

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

Moco
Moco

総合スコア6

C++

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

1回答

0グッド

0クリップ

243閲覧

投稿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を用意する手間が省けるのでは?と考えてました。
しかし、ソースコード➁だとエラーが発生してしまう為、原因を知りたいです。

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

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

総合スコア16097

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Moco

2023/01/18 13:29

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

C++

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