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

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

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

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

Q&A

解決済

4回答

541閲覧

最後のxが出力されないようにしたい

langhtorn

総合スコア105

C++

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

0グッド

0クリップ

投稿2020/05/29 13:26

###実現したいこと
素因数分解をしたい
###問題点
実行結果を2x2x2x3x5xの最後のxが出力されないようにしたい。

整数値を入力してください 120 nの素因数分解の結果は 2×2×2×3×5×

###コード

C++

1#include<iostream> 2#include<vector> 3std::vector<int> prime_factors(int n); 4 5int main() 6{ 7 int i,n; 8 std::cout<<"整数値を入力してください\n"; 9 std::cin>>n; 10 std::cout<<"nの素因数分解の結果は\n"; 11 std::vector<int> factors=prime_factors(n); 12 int nfactors=factors.size(); 13 for(i=0;i<nfactors;i++){ 14 std::cout<<factors[i]; 15 std::cout<<"×"; 16 } 17 std::cout<<"\n"; 18 return 0; 19} 20std::vector<int> prime_factors(int n) //整数nの素因数分解 21{ 22 std::vector<int> factors; 23 int i=2; 24 while(n>=i){ 25 //std::cout<<"in"<<std::endl; 26 if(n%i==0){ 27 factors.push_back(i); 28 n=n/i; 29 }else{ 30 i++; 31 } 32 } 33 return factors; 34}

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

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

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

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

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

guest

回答4

0

ベストアンサー

以下のようにすることで出力しないようにできます。

0以外のときに出力する方法。

C++

1 for(i=0;i<nfactors;i++){ 2 if(i > 0) std::cout<<"×"; 3 std::cout<<factors[i]; 4 }

0番目を別に出力する方法。

C++

1 std::cout<<factors[0]; 2 for(i=1;i<nfactors;i++){ 3 std::cout<<"×"; 4 std::cout<<factors[i]; 5 }

"×"を出力する前にbreakする方法。

C++

1 for(i=0;;i++){ 2 std::cout<<factors[i]; 3 if(i+1 >= nfactors) break; 4 std::cout<<"×"; 5 }

投稿2020/05/29 13:38

etsuhisa

総合スコア416

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

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

0

せっかく試したので別解です。

c++

1 int nfactors=factors.size(); 2 std::cout << factors[0]; 3 for(i=1;i<nfactors;i++){ 4 std::cout<<"×"; 5 std::cout<<factors[i]; 6 } 7 std::cout<<"\n";

最初の要素だけ for の前で出力して、ループの中では、先に "x" を出力するパターンです。

投稿2020/05/29 13:38

Yasumichi

総合スコア1773

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

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

0

forでは、(最後でなく)最後から2つ目までループし、forループが修了してから最後の要素を出力します。

投稿2020/05/29 13:35

otn

総合スコア85901

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

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

0

C++

1int main() 2{ 3 int i, n; 4 std::cout << "整数値を入力してください\n"; 5 std::cin >> n; 6 std::cout << "nの素因数分解の結果は\n"; 7 std::vector<int> factors = prime_factors(n); 8 int nfactors = factors.size(); 9 for (i = 0; i < nfactors; i++) { 10 if ( i != 0 ) std::cout << "x"; 11 std::cout << factors[i]; 12 } 13 std::cout << "\n"; 14 return 0; 15}

...ちったー自分のアタマで考えたらいかがか?

投稿2020/05/29 13:36

episteme

総合スコア16612

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問