2017-09-22 1 views
0

code:nouvelle ligne seulement à la fin d'un vecteur - « si » en dehors d'une boucle « for »

#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; 

} 

je suis arrivé 9/10 avec ce commentaire: « si l'état intérieur boucle seulement être satisfait une fois, mais vérifié à chaque fois, sortir de la boucle ". Je ne sais vraiment pas comment placer l'instruction if hors de la boucle. La portée de cette instruction for-if consiste à ajouter une nouvelle ligne uniquement à la fin du vecteur "series". Je ne peux pas penser à autre chose mais à coup sûr, je suis assez expérimenté et il y a une autre solution plus élégante. Je demande ici parce que je dois soumettre une autre assignation et je ne veux pas la soumettre avec la même erreur.

PS: l'autre commentaire était: light over-commenting. Ai-je vraiment commenté beaucoup?

+2

Vous n'avez pas besoin de ce 'si '. par exemple. 'return 0' arrive" seulement à la fin de la série ". – Mat

+0

Le bloc 'if' est seulement vérifié à la fin de l'itération, et la seule condition d'entrée est si vous entretenez l'élément _last_. C'est sémantiquement identique à _not_ ayant un bloc 'if' du tout - et en déplaçant le contenu immédiatement après la boucle (par exemple, appel inconditionnellement' std :: cout << std :: endl' après le 'for' au lieu de vérifier conditionnellement le dernier élément par itération.) – Bitwize

+0

Et oui, vous ajoutez des commentaires inutiles, par exemple: 'std :: vector series; // définition du vecteur "série" 'est évident pour tous ceux qui écrivent du code C++ – UnholySheep

Répondre

0

imprimer le endl à la fin de la for loop, vous pouvez donc ajouter la ligne de endl quand vous sortez de la boucle et de supprimer la ligne à la boucle, il vous donnera le même résultat

le code:

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

Ce que vous essayez de faire est d'imprimer un saut de ligne après le dernier élément. Ici, vous vérifiez chaque élément s'il s'agit du dernier. Cependant, vous n'avez pas besoin de faire cela.

Une autre façon de faire "Après le dernier élément" est "après tous les éléments", donc après la boucle. Traitez simplement tous les éléments avec la boucle for, puis imprimez la nouvelle ligne.

Je ne donne pas le code, puisqu'il s'agit d'une affectation, mais cela devrait être suffisamment clair. En ce qui concerne les commentaires: ne pas documenter l'évidence.

Bien sûr, pour différents niveaux, évident est quelque chose de différent. Mais pour la déclaration du vecteur "série", le commentaire n'ajoute rien au code, par exemple.