fhoest
Messages postés40Date d'inscriptionmercredi 24 octobre 2007StatutMembreDernière intervention 6 août 2013
-
31 août 2011 à 10:21
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
31 août 2011 à 16:08
Bonjour,
je débute en c++ et j'ai un problème sur le dimensionnement d'un tableau,
voilà ce que je ne comprend pas je défini un tableau de 5 (case)
ensuite je rempli ce tableau dans une boucle de 10 et ensuite je l'affiche.
Pourquoi puis je faire ceci alors que je n'ai que 5 (case).
certainement un problème de facon de définir je suppose.
#include <cstdlib>
#include
#include <windows.h>
using namespace std;
int c,i;
int table[5];
int main(int argc, char *argv[])
{
cout<< "c:"
cin>> c;
for(i=0;i<10;i++)
{
table[i]=::c++;
}
for(i=0;i<10;i++)
{
cout << table[i] << endl;
}
system ("pause");
return EXIT_SUCCESS;
}
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 août 2011 à 12:02
coucou747 à déjà pointé tes erreurs, donc je vais me concentrer sur des conseils:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace - Évite les variables globales
- ::c++ ? Pourquoi ajouter "::" ? Il n'y a pas d'ambiguïté ici.
- return 0, plutôt que EXIT_SUCCESS. C'est portable et plus clair.
- Déclare tes variables au moment où tu en as besoin. Le int i peut se déclarer dans la boucle.
- En C++, prend l'habitude de faire ++i dans une boucle plutôt que i++. Pour des entiers, ça ne change strictement rien, je suis d'accord, mais quand tu travailleras avec des collections, et donc avec des iterators, ça fera une grande différence.
- #include <cstdlib> => Inutile
- Préfère un std::vector plutôt qu'un int tab[5];
Je réécrirais ton code comme suit:
#include
int main(int argc, char *argv[])
{
int c;
int tab[5];
std::cout << "c:";
std::cin >> c;
// Avec pourquoi pas un: tab.resize(5); si la taille est connue.
// A noter que qu'un std::vector se redimensionne tout seul, c'est donc juste une optimisation.
for(int i = 0; i < 5; ++i)
tab[i] = c++;
for(int i = 0; i < 5; ++i)
std::cout << tab[i] << std::endl;
return 0;
}
En version plus C++:
#include
#include <vector>
int main(int argc, char *argv[])
{
int c;
std::vector tab;
std::cout << "c:";
std::cin >> c;
for(int i = 0; i < 5; ++i)
tab.push_back(c++);
for(std::vector::const_iterator it = tab.begin(); it != tab.end(); ++it)
std::cout << *it << std::endl;
return 0;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
fhoest
Messages postés40Date d'inscriptionmercredi 24 octobre 2007StatutMembreDernière intervention 6 août 2013 31 août 2011 à 16:07
Bonjour,
et merci pour les explications ( à tous les deux bien sur) c'est un peu difficile pour commencer mais je vais essayer de comprendre et d'appliquer tous vos conseils.
Bonne journée.
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 31 août 2011 à 16:08
Edit: Petit erreur dans mes codes: Le commentaire du premier code devait être dans le deuxième code.
________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfoliohttp://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question