2017-09-22 2 views
0

コードの外で「場合」:「ループ内の条件だけする場合:は、ベクターのみの最後に新しい行を印刷する - 文はループ「のための」

#include <iostream> 
#include <vector> 

int main() { 

std::cout << "Please, enter the number of iterations: "; //Inputs 

int iterations; 
std::cin >> iterations; 

std::cout << "Which term would you like to know: "; 

int term; 
std::cin >> term; //End inputs 

std::vector<int> series;  //definition of vector "series" 

for (int n = 1; n <= iterations; n++) { //creation of "series" 

    int next = (2 * n - 3); 
    series.push_back(next); 

} 

std::cout << "The value of term " //prints the n term 
      << term 
      << " is: " 
      << series[term-1]   //term-1 "adjust" the indexing 
      << std::endl; 

std::cout << "The entire serie up to " 
      << iterations 
      << " terms is: "; 

for (int i = 0; i < series.size(); i++) {  //prints (elements of vector) "series" 

    std::cout << series[i] << ' '; 

    if (i == series.size()-1) {  //new line only at the end the series 

     std::cout << std::endl; 
    } 

} 

return 0; 

} 

私はこのコメントで9/10を得ました一度だけ満足されるが、毎回チェックされる。ループ外に移動する "。 私は本当にどのようにループのif文を置くことができません。 for-ifステートメントのスコープは、ベクトル "系列"の最後にのみ新しい行を追加することです。 私は他のことについて考えることはできませんが、確かに私は十分な経験があり、もっと洗練されたもう一つの解決法があります。 別の課題を提出しなければならないので、同じエラーで提出したくないので、ここで質問しています。

PS:他のコメントがありました:軽すぎます。私は本当に多くのコメントをしましたか?

+2

'if 'はまったく必要ありません。例えば'return 0'は「シリーズの終わりにのみ」起こります。 – Mat

+0

'if'ブロックは、反復の_end_でのみチェックされ、唯一の入力条件は、_last_要素を処理している場合です。これは 'if'ブロックを全く持たない_not_と意味的に同じです - そして、ループの直後に内容を移動します(例えば、' for'の後で無条件に 'std :: cout << std :: endl'を呼び出します。 – Bitwize

+0

そして、あなたは無意味なコメントを追加しています。例えば、 'std :: vector series; //ベクトルの定義 "series" 'はC++コード – UnholySheep

答えて

0

あなたはそれはあなたに同じ結果

を与えるあなたがループから出て行くと、forループで行を削除すると endlの行を追加することができますので、 for loopの終わりに endlを印刷

コード:

for (int n = 1; n <= iterations; n++) { //creation of "series" 

    int next = (2 * n - 3); 
    series.push_back(next); 

} 

std::cout << "The value of term " //prints the n term 
      << term 
      << " is: " 
      << series[term-1]   //term-1 "adjust" the indexing 
      << std::endl; 

std::cout << "The entire serie up to " 
      << iterations 
      << " terms is: "; 

for (int i = 0; i < series.size(); i++) {  //prints (elements of vector) "series" 

    std::cout << series[i] << ' '; 
} 
std::cout << std::endl; 
return 0; 

} 
0

何をしようとするには、最後の要素の後に改行を印刷することです。ここでは、各要素が最後の要素であるかどうかをチェックしています。しかし、あなたはそれをする必要はありません。

"最後の要素の後"を行うもう1つの方法は、 "すべての要素の後"であり、したがってループの後です。 forループですべての要素を処理した後、改行を出力してください。

私はコードを与えていません、それは割り当てなので、これは十分明確でなければなりません。

コメントとして:明らかに文書化しないでください。もちろん、さまざまなレベルでは、明白な違いがあります。しかし、 "系列"ベクトルの宣言では、コメントはコードに何も追加しません。

関連する問題