Aidez un néophyte

Fermé
kabalaye13 - 11 déc. 2008 à 23:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 12 déc. 2008 à 01:40
Bonjour,

Je suis débutant en c++ pour ne pas dire nul mais j'essaie de me soigner en m'autoformant.
Je me suis lancé un défi qui va sans doute en faire rire beaucoup d'entre vous mais bon, j'ai besoin d'aide car je ne veux pas déja m'avouer vaincu.

Le défi :

je veux créer un tableau simple (5 cellules on peu difficilement faire plus simple...), initialiser ces cellules à une valeur quelconque, faire la somme de ces valeurs et afficher le résultat à l'écran.

Ca doit vous paraître ridicule mais faut bien commencer par quelque chose...

Malgré l'extrème simplicité du sujet je ne m'en sors pas, je me retrouve avec l'erreur
expected unquqalified-id before "for" sur ma boucle for

Voici les quelques lignes de codes :

#include <cstdlib>
#include <iostream>

using namespace std;

class tablo
{
int tab[6];
int somme (void);
int i;

for(i = 0, i < tailleTableau, i++){somme += tableau[i]};
};
int main(int argc, char *argv[])
{
int tab[6]= {8, 3, 6, 2, 4};

system("PAUSE");
return EXIT_SUCCESS;
}


Je n'ai même pas encore essayé d'afficher le résultat comme vous pouvez le voir.

Quelqu'un aurait il la gentillesse de m'expliquer ce que signifie ce message d'erreur et au risque d'abuser de me dire où se trouve le bug ???

Merci d'avance

3 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
12 déc. 2008 à 00:14
Bonsoir,
erreur de ma part, j'arrive.
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
12 déc. 2008 à 01:05
Bonsoir,

for(i = 0, i < tailleTableau, i++){somme += tableau[i]}; 
}; 
int main(int argc, char *argv[]) 
{ 

1) Tu as un point-virgule (;) mal placé, il doit être avant } et non après :
for(i = 0, i < tailleTableau, i++){somme += tableau[i]};

2) Ce sont des points-virgules qui séparent les arguments dans une boucle for et non pas les virgules.
for(i = 0; i < tailleTableau, i++){somme += tableau[i]}

3) Je ne pense pas qu'une boucle for puisse apparaître à cet "endroit" dans une classe.
REFERENCE: (LE SITE DU ZERO) TUTORIEL APPRENEZ A PROGRAMMER EN C++
          - LA PROGRAMMATION ORIENTEE OBJET.
          - LES CLASSES (partie 1/2).

 Une CLASSE est constituee :
     ------
 -De VARIABLES, ici appelees ATTRIBUTS (on parle aussi de variables membres)
 -De FONCTIONS, ici appelees METHODES (on parle aussi de fonctions membres)

 -Pour creer un OBJET, il faut d'abord creer une CLASSE !
               Creation de la CLASS 'Personnage' :
               -----------------------------------

 class    Personnage
  {
  public:                // Droits d'acces sur les methodes:
                         // Ajout des methodes/fonctions :
        Personnage       ()
   void recevoirDegats   (int    nbDegats)                                 {  }
   void attaquer         (Personnage &cible)                               {  }
   void boirePotionDeVie (int    quantitePotion)                           {  }
   void changerArme      (string nomNouvelleArme, int degatsNouvelleArme)  {  }
   bool estVivant        ()                                                {  }
        ~Personnage      ()
  private:               //Droits d'acces sur les attributs:
                         //    Ajout des attributs/variables:
   int    m_vie          ;
   int    m_mana         ;
   string m_nomArme      ;
   int    m_degatsArme   ;
  }                      ;//  Ne pas oublier le dernier ';'

Il faut enuite implémenter les méthodes cela signifie programmer effectivement ces méthodes par exemple.
     Constructeur par défaut = (c'est un constructeur dépourvu d'argument) :   */
     Personnage::Personnage()
     {
       m_vie                  =  100                                           ;
       m_mana                 =  100                                           ;
     }

..........................;
............................

A vérifier je ne suis pas spécialiste....... mais dans les grandes lignes ça doit ressembler à ça.
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
12 déc. 2008 à 01:11
en complement de ce qu'a dit cchristian je rajouterais que tu utilises aussi des variable non déclaré
ex : tailleTableau et tableau et tu fais mal certaine declaration de variable ex : int somme (void)
tu devrais faire une methode somme dans laquelle tu mets ta boucle et qui te calcule la somme et une methode afficher dans ta classe
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
12 déc. 2008 à 01:40
Je rajoute également ma couche.
Il faut séparer (pas obligé mais bonne habitude) de séparer .h et .cpp
Dans tablo.h, tu mets :
class tablo
{
int tab[6];

public:
int somme (void); 
};

Et dans ton tablo.c :
#include <cstdlib>
#include <iostream>

#include "tablo.h"
using namespace std;


int tablo::somme(void){
    int somme=0; //ne pas oublier de le déclarer
    for(int i = 0; i < sizeof(tab)/sizeof(*tab); i++){somme += tab[i]}; //attention aux points virgules dans for
}

int main(int argc, char *argv[]){

    int tab[6]= {8, 3, 6, 2, 4,7}; //tu peux même rajouter un élément ;) (tab n'a rien à voir avec le tab de l'objet)

     system("PAUSE");
     return EXIT_SUCCESS;
}

Tu peux aussi te créer un constructeur pour initialiser tab au sein de la classe. Comme ça il pourra intéragir avec les accesseurs et compagnie.
Cdlt
0