begin process at 2012 05 29 14:21:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Problème de compréhension tableau.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de compréhension tableau.

mercredi 31 août 2011 à 10:21:33 | Problème de compréhension tableau.

fhoest

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.
Code C/C++ :
#include <cstdlib>
#include <iostream>
#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;
}

Merci a vous de m'éclairer sur ce point.
mercredi 31 août 2011 à 10:40:23 | Re : Problème de compréhension tableau.

coucou747

Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour,

en C, tu n'as pas de vérification sur la taille d'un tableau lorsque tu demandes ou écrases un élément.

L'effet est très simple : tu accèdes à un endroit de la mémoire qui n'est pas celui que tu désires, ça peut avoir des effets graves sur ton programme.

sous linux, tu peux lancer valgrind ./programme pour vérifier ce genre d'erreur.

En utilisant des vectors et .at(), tu peux avoir une exception pour ce genre d'erreur.

Cordialement,

Maxime
mercredi 31 août 2011 à 12:02:47 | Re : Problème de compréhension tableau.

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
coucou747 à déjà pointé tes erreurs, donc je vais me concentrer sur des conseils:
- Évite les "using namespace", voir: [ Lien ]
- É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<int> plutôt qu'un int tab[5];

Je réécrirais ton code comme suit:
Code C/C++ :
#include <iostream>

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++:
Code C/C++ :
#include <iostream>
#include <vector>

int main(int argc, char *argv[])
{
  int c;
  std::vector<int> tab;
  std::cout << "c:";
  std::cin >> c;       
 
  for(int i = 0; i < 5; ++i) 
    tab.push_back(c++);
    
  for(std::vector<int>::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/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
mercredi 31 août 2011 à 16:07:13 | Re : Problème de compréhension tableau.

fhoest

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.
mercredi 31 août 2011 à 16:08:45 | Re : Problème de compréhension tableau.

CptPingu

Administrateur CodeS-SourceS
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/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : problème, table, int, tableau, include


Répondre à ce message

Sujets en rapport avec ce message

Problème d'entrée (cin >>) dans un tableau de float [ par Oeil_de_taupe ] Hello tout le monde,désolé de vous importuné. Mais j'ai fait une toute petite source pour apprendre à allouer de la mémoire pour une variable puis de problème de OutPut [ par NAVIE ] Bonjour, J'écris ce message pour demander de l'aide au sujet des gestions des Input et des Output. En effet, dans un programme que j'ai fabriqué, je m Problème pour compiler du c [ par flox39 ] Salut à tous Je suis en galère avec du code qu'on m'a passé je n'arrive pas a le compilerl'erreur c error C2447: missing function header (old-style fo Aidez-moi à résoudre ce problème !!! (Débutant) [ par tony4758 ] Bonjour je suis un débutant en c et je voudrais savoir pourquoi à chaques fois que j'écris un mini programme du genre ://----------------------------# Problème avec GetTickCount() [ par nisaloncaje ] Bonjour, je voudrais faire une sorte de chronomètres pour mon programme, cependant j'ai un petit problème : je veux que le temps s'affiche sous la for Problème avec le Timer d'ALLEGRO [ par tibe18453636 ] J'ai un problème avec un jeu (une sorte de pong) que j'ai développé sous dev-cpp avec Allegro.Apparament cela vient du timer que jutilise pour limiter problème de if et else [ par ffnajia ] bonjour je comprend pas pourquoi le programme ci-dessous ne prend pas en compte l'éxistence de if et else!!!???#include#include using namespace std; Problème concaténation de tableau langage c [ par lectpe ] Bonjour, dans le cadre d'un projet d'Informatique pour ma première année de licence, j'ai commencé la réalisation d'un jeu d'échecs avec un ami et pou Un problème avec les structures en C ??!! [ par IHECinformaticien ] Bonsoir/Bonjour, dans le code source qui suit, j'ai défini un tableau de type structure date( une structure qui contient le jour, le mois et l'année), problème de allocation de tableau [ par boualiasma ] Bonsoir, Je voulais copier le contenu de fichier "exemple.txt" dans un tableau dynamique t de taille inconnue en avance. J'utilise le tableau pour fa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,328 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales