Variable non reconnu

Résolu
jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   -  
azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je suis en dut informatique et on ma donné un projet a faire en compilation séparée
et quand je compile l'obtient cette erreur 'region' was not declared in this scope et ceci pour tout les variable déclare dans les autre entêtes sauf ensemble.h
alors que j'ai tout défini dans les entêtes écrit ci-dessous.

//ensemble.cpp
#include <iostream>
#include "ensemble.h"
#include "animal.h"
#include "region.h"
#include "vivre.h"

PS: Je compile sous g++
merci de mon répondre
Configuration: Linux
Mozilla 1.9.1.6

15 réponses

  1. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    T'as pas mis des majuscules a tes noms de fichiers par hasard ?
    0
  2. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    Il nous faut un peu plus de code pour pouvoir te dire....
    0
  3. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    non, tout est en minuscule
    0
  4. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    Postes tes codes s'il te plait.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    je poste seulement les .h

    //animal.h
    #ifndef _ANIMAL
    #define _ANIMAL

    enum classi{mammifere,oiseau,reptile,amphibien,mollusque,arthropode,autre_invertebres};

    #define TAILLEMAX 100

    struct animal{
    int reference;
    char noma[TAILLEMAX];
    classi classification;
    int dureedeviemoy;
    };

    typedef animal tabanimaux[TAILLEMAX];

    //entrer les valeurs pour un animal
    void entreeanimal(int&);

    //entre la classification d'un animal
    classi entreclassi();

    //affiche un animal
    void afficheranimal(animal&);

    //modifie la duree moyenne de vie d'un animal
    void modifdureevie(animal&);

    //renvoie la duree moyenne de vie d'un animal
    int renvoiedureevie(animal&);

    //renvoie la reference d'un animal
    int renvoiref(animal&);

    //renvoie le nom d'un animal
    char renvoienom(animal&);

    //renvoie la classification d'un animal
    char renvoieclassif(animal&);

    //affiche les animaux dont la durée de vie est superieur a une valeur donnée
    void afficheanisupvaldon(tabanimaux*,int);

    //affiche les animaux ayant une meme classification
    void afficheaniclass(tabanimaux*,classi);

    //affiche tout les animaux de l'ensemble animaux
    void afficheensembleani(tabanimaux*,int);

    //tri les animaux
    void trianiclass(tabanimaux*);

    #endif

    //region.h
    #ifndef _REGION
    #define _REGION
    #define TAILLEMAX 100

    enum typere{volcanique,desertique,steppe,glaciere,eau_tropical,eau_tempere,eau_polaire,tempere,ville};

    enum hemis{nord,sud};

    struct region{
    char nomr[TAILLEMAX];
    typere typeregion;
    int densite;
    hemis hemisphere;
    };

    typedef region tabregion[TAILLEMAX];

    //entre le type de region
    typere entretypere();

    //affiche le type de region
    void affichetype (typere);

    //affiche l'hemisphere
    void affichehemis (hemis);

    //renvoie le type de region
    typere entretypreg();

    //affiche la region
    void afficheregion (region&);

    //entre une region
    region rentreregion();

    char renvoienomr(region&);

    char renvoietyper(region&);

    int renvoiedensite(region&);

    char renvoiehemis(region&);

    //affiche les occurences d'une region

    void afficheregiontype(tabregion*,typere);

    //affiche la region ayant la plus grande densite

    void afficheregionplusgrandedens(tabregion*);

    //affiche toute les region dans l'ensemble

    void afficheensemblereg(tabregion*,int);

    #endif

    //vivre.h
    #ifndef _VIVRE
    #define _VIVRE

    #define TAILLEMAX 100

    struct vivre{
    int ref;
    char nomr[TAILLEMAX];
    int nombre;
    bool menace;
    };

    typedef vivre tabvivre[TAILLEMAX];

    //rentre les valeur pour une occurence de vivre
    vivre creervivre();

    //affiche vivre
    void affichervivre(vivre&);

    //modifie la population//affiche vivre
    void modifnombre(int&);

    //modifie si l'animal est menace ou pas
    void modifmenace(bool&);

    //renvoie la references d'un animal
    int renvoieref(vivre&);

    //renvoie le nom de la region
    char* renvoienomreg(vivre&);

    //renvoie la population
    int renvoienombre(vivre&);

    //renvoie si l'animal est menace ou pas
    bool renvoiemenace(vivre&);

    //affiche toute les "vivre" de l'ensemble
    void afficheensemblevivre(tabvivre*,int);

    #endif

    //ensemble.h
    ifndef ENSEMBLE_H
    #define ENSEMBLE_H

    #define TAILLEMAX 100

    //ajoute une region a l'ensemble
    void ajoutregion(region&,tabregion*,int&);

    //ajoute un animal à l'ensemble
    void ajoutanimal(animal&,tabanimaux*,int&);

    //aloute vivre dans l'ensemble des vivre
    void ajoutvivre(vivre&,tabvivre*,int&);

    //supprime le premier animal de la region
    void supprimeranimal(tabanimaux*,int&);

    //supprime la première region de l'ensemble
    void supprimeregion(tabregion*,int&);

    //supprime le premier vivre du tableau
    void supprimervivre(tabvivre *,int&);

    //recherche un animal si il est presence dans l'ensemble animal
    bool presenceanimal(tabanimaux*,int );

    //recherche si la region est presente dans l'ensemble
    bool presenceregion(tabanimauxregion*,char*);

    //recherche si la region est dans l'ensemble vivre
    bool presencevivreregion(tabvivre*,char*);

    //recherche si l'animal est present dans l'ensemble vivre
    bool presencevivreanimal(tabvivre*,int);

    //affichge la population totale
    void affichepoptotani(tabvivre*,int);

    //affiche les animaux vivant dans un region donnée
    void affixheaniregion(tabvivre*,region&,tabanimaux*);

    #endif

    Bonne lecture
    vivre.cpp, animal.cpp, region.cpp compile sans probleme avec leur .h
    0
  7. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    Tu appelles bien tes structures de cette manière :

    Ma_structure.ma_variable; ?

    Penses a la POO sinon ;)
    0
  8. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    oui mes structure comme cela.
    pour la POO on a pas encore appris.
    0
  9. Arya Dröttningu Messages postés 650 Statut Membre 157
     
    tu pourrais nous donner le code des .cpp ?
    0
  10. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    pas de probleme,
    je t'envoie un zip avec tout les les fichier
    PS:le mail est envoyé
    0
  11. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    Rien recu. vérifies que c'est bien univ et non unis, j'ai changé entre temps.
    0
  12. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    je vous donne les .cpp mais sa va etre long (+ 500 lignes)

    //animal.cpp
    #include "animal.h"
    #include <iostream>

    #include <string.h>
    using namespace std;

    //entrer les valeurs pour un animal
    animal entreanimal(int &ref){
    animal a;
    a.reference=ref;
    cout<<"Entrer le nom de l'animal : ";
    cin>>a.noma;
    cout<<"Entrer une classification : "<<endl;
    a.classification=entreclassi();
    cout<<"Entrer la durre de vie moyenne : ";
    cin>>a.dureedeviemoy;
    ref++;
    }

    //entre la classification d'un animal
    classi entreclassi(){
    int choix;
    bool correct;
    classi classi;
    cout<<"C'est un : "<<endl
    <<"1-mammifere"<<endl
    <<"2-oiseau"<<endl
    <<"3-reptile"<<endl
    <<"4-amphibien"<<endl
    <<"5-mollusque"<<endl
    <<"6-arthropode"<<endl
    <<"7-autres invertebres"<<endl
    <<"Entrer votre choix :";
    cin>>choix;
    while(correct){
    if(choix<1 || choix>7){
    cout<<"choix incorrect"<<endl;
    cin>>choix;
    }
    else
    correct=false;
    }
    switch(choix){
    case 1: classi=mammifere;break;
    case 2: classi=oiseau;break;
    case 3: classi=reptile;break;
    case 4: classi=amphibien;break;
    case 5: classi=mollusque;break;
    case 6: classi=arthropode;break;
    case 7: classi=autre_invertebres;break;
    }
    return classi;
    }

    //affiche la classification
    void afficheclassi(classi e){
    switch(e){
    case mammifere: cout<<"mammifere";break;
    case oiseau: cout<<"oiseau";break;
    case reptile: cout<<"reptile";break;
    case amphibien: cout<<"amphibien";break;
    case mollusque: cout<<"mollusque";break;
    case arthropode: cout<<"arthropode";break;
    case autre_invertebres: cout<<"autres invertebres";
    }
    cout<<endl;
    }

    //affiche un animal
    void afficheranimal(animal&a){
    cout<<"Reference : "<<a.reference<<endl;
    cout<<"Nom : "<<a.noma<<endl;
    cout<<"Classification : ";
    afficheclassi(a.classification);
    cout<<"Duree de vie moyenne : "<<a.dureedeviemoy<<endl<<endl;
    }

    //modifie la duree moyenne de vie d'un animal
    void modifdureevie(animal &a){
    cout<<"Entrer la nouvelle duree de vie moyenne : ";
    cin>>a.dureedeviemoy;
    }

    //renvoie la duree moyenne de vie d'un animal
    int renvoiedureevie(animal&a){
    return a.dureedeviemoy;
    }

    //renvoie la reference d'un animal
    int renvoiref(animal&a){
    return a.reference;
    }

    //renvoie la classification d'un animal
    char renvoieclassif(animal&a){
    return a.classification;
    }

    //affiche les animaux dont la durée de vie est superieur a une valeur donnée
    void afficheanisupvaldon(tabanimaux*A,int vie){
    for(int i=0;i<TAILLEMAX;i++){
    if(renvoiedureevie((*A[i]))>vie)
    afficheranimal((*A[i]));
    }
    }

    //affiche les animaux ayant une meme classification
    void afficheaniclass(tabanimaux *tani,classi c){
    for(int i=0;i<TAILLEMAX;i++){
    if(renvoieclassif((*tani[i]))==c)
    afficheranimal((*tani[i]));
    }
    }

    //affiche tout les animaux de l'ensemble animaux
    void afficheensembleani(tabanimaux *tab,int index){
    for(int i=0;i<=index;i++){
    afficheranimal((*tab[i]));
    }
    }

    //tri les animaux par classification
    void trianiclass(tabanimaux* tab){
    int j;
    animal aux;
    for(int i=1;i<TAILLEMAX;i++){
    aux=(*tab[i]);
    for(j=i;j>0;i--){
    if(renvoieclassif((*tab[j-1]))>renvoieclassif((*tab[j])))
    (*tab[j])=(*tab[j-1]);
    if(renvoieclassif((*tab[j-1]))==renvoieclassif((*tab[j])) && strcmp((*tab[j-1]).noma,(*tab[j]).noma)>0)
    (*tab[j])=(*tab[j-1]);
    }
    (*tab[j])=aux;
    }
    }

    //vivre.cpp

    #include <iostream>
    #include "vivre.h"

    using namespace std;

    //rentre les valeur pour une occurence de vivre
    vivre creervivre(){
    vivre v;
    cout<<"Entrer la reference de l'animal :";
    cin>>v.ref;
    cout<<"Entrer le nom de la region :";
    cin>>v.nomr;
    cout<<"Entrer la population de l'animal :";
    cin>>v.nombre;
    char rep;
    cout<<"L animal est il menace? (o)ui ou (n)on?";
    cin>>rep;
    if(rep=='o'||rep=='O')
    v.menace=true;
    else
    v.menace=false;
    return v;
    }

    //affiche vivre
    void affichervivre(vivre &v){
    cout<<"La reference de l'animal :"<<v.ref<<endl;
    cout<<"Le nom de la region :"<<v.nomr<<endl;
    cout<<"La population est de :"<<v.nombre<<endl;
    if(v.menace)
    cout<<"L'animal est menace"<<endl;
    else
    cout<<"L'animal n'est pas menace"<<endl;
    }

    //affiche vivre
    void modifnombre(int &n){
    cout<<"Entrer le nouveau nombre de population :";
    cin>>n;
    }

    //modifie si l'animal est menace ou pas
    void modifmenace(bool &b){
    b=!b;
    }

    //renvoie la references d'un animal
    int renvoieref(vivre &v){
    return v.ref;
    }

    //renvoie le nom de la region
    char* renvoienomreg(vivre &v){
    return v.nomr;
    }

    //renvoie la population
    int renvoienombre(vivre &v){
    return v.nombre;
    }

    //renvoie si l'animal est menace ou pas
    bool renvoiemenace(vivre &v){

    return v.menace;
    }

    void afficheensemblevivre(tabvivre *tab,int index){
    for(int i=0;i<=index;i++){
    vivre a=(*tab[i]);
    affichervivre(a);
    }
    }

    //region.cpp

    #include "region.h"
    #include <iostream>

    using namespace std;

    //affichage de la région étant donné un type de région
    void affichetype (typere t){
    cout<<"Type : ";
    switch(t){
    case volcanique : cout<<"volcanique";break;
    case desertique : cout<<"desertique";break;
    case steppe : cout<<"steppe";break;
    case glaciere : cout<<"glaciere";break;
    case eau_tropical : cout<<"eau tropical";break;
    case eau_tempere : cout<<"eau tempere";break;
    case eau_polaire : cout<<"eau polaire";break;
    case tempere : cout<<"tempere";break;
    case ville : cout<<"ville";
    }
    }

    void affichehemis (hemis h){
    cout<<"Hemisphere : ";
    switch(h){
    case nord : cout<<"nord"<<endl;break;
    case sud : cout<<"sud"<<endl;
    }
    }

    void afficheregion (region &r){
    cout<<"nom de region : "<<r.nomr<<endl;
    affichetype(r.typeregion);
    cout<<endl<<"densité : "<<r.densite<<endl;
    affichehemis(r.hemisphere);
    }

    typere entretypere(){
    int choix;
    bool correct=true;
    typere classi;
    cout<<"C'est un : "<<endl
    <<"1-volcanique"<<endl
    <<"2-desertique"<<endl
    <<"3-steppe"<<endl
    <<"4-glaciere"<<endl
    <<"5-eau_tropical"<<endl
    <<"6-eau_tempere"<<endl
    <<"7-eau_polaire"<<endl
    <<"8-tempere"<<endl
    <<"9-ville"<<endl
    <<"Entrer votre choix :";
    cin>>choix;
    while(correct){
    if(choix<1 || choix>9){
    cout<<"choix incorrect"<<endl;
    cin>>choix;
    }
    else
    correct=false;
    }
    switch(choix){
    case 1: classi=volcanique;break;
    case 2: classi=desertique;break;
    case 3: classi=steppe;break;
    case 4: classi=glaciere;break;
    case 5: classi=eau_tropical;break;
    case 6: classi=eau_tempere;break;
    case 7: classi=eau_polaire;break;
    case 8: classi=tempere;break;
    case 9: classi=ville;break;
    }
    return classi;
    }

    hemis saisiehemis(){
    int choix;
    bool correct=true;
    hemis hemi;
    cout<<"Qu'elle est l'hemisphere de la region"<<endl
    <<"1-Sud"<<endl
    <<"2-Nord"<<endl;
    cin>>choix;
    while(correct){
    if(choix<1 || choix>2){
    cout<<"choix incorrect"<<endl;
    cin>>choix;
    }
    else
    correct=false;
    }
    switch(choix){
    case 1: hemi=sud;break;
    case 2: hemi=nord;break;

    }
    return hemi;
    }

    region rentreregion(){
    region r;
    cout<<"Entrer le nom de la region";cin>>r.nomr;
    cout<<"Entrer le type de region";r.typeregion=entretypere();
    cout<<"Entrer la densité d'une region";cin>>r.densite;
    cout<<"Entrer l'hemishere de la region";r.hemisphere=saisiehemis();
    return r;
    }

    char renvoietyper(region &r){
    return r.typeregion;
    }

    int renvoiedensite(region &r){
    return r.densite;
    }

    char renvoiehemis(region &r){
    return r.hemisphere;
    }

    void afficheregiontype(tabregion *tab,typere t){

    for(int i=0;i<TAILLEMAX;i++){

    if(renvoietyper((*tab[i]))==t)

    afficheregion((*tab[i]));

    }

    }

    void afficheregionplusgrandedens(tabregion *tab){

    int aux=0;
    for(int i=0;i<TAILLEMAX;i++){

    if( (*tab[i]).densite > (*tab[aux]).densite )

    aux=i;
    }
    afficheregion((*tab[aux]));
    }

    void afficheensemblereg(tabregion *tab,int index){

    for(int i=0;i<=index;i++){

    afficheregion((*tab[i]));

    }

    }

    //ensemble.cpp

    #include <iostream>
    #include "ensemble.h"
    #include "animal.h"
    #include "region.h"
    #include "vivre.h"
    #define TAILLEMAX 100

    using namespace std;

    //ajoute une region dans l'ensemble des regions
    void ajoutregion(region &r, tabregion *tabr,int &i){
    tabr[i]=r;
    i++;
    }

    //ajoute un animal dans l'ensemble des animaux41
    void ajoutanimal(animal &r, tabanimaux *tabr,int &i){
    tabr[i]=r;
    i++;
    }

    //ajoute vivre a l'ensemble des vivres
    void ajoutvivre(vivre &v, tabvivre *tab,int &i){
    tab[i]=v;
    i++
    }

    //supprime le premier animal de l'ensemble
    void supprimeranimal(tabanimaux *tab,int &index){
    for(int i=0;i<TAILLEMAX-1;i++){
    tab[i]=tab[i+1];
    index--;
    }
    }

    //supprime la première region de l'ensemble
    void supprimeregion(tabregion *tab,int &index){
    for(int i=0;i<TAILLEMAX-1;i++){
    tab[i]=tab[i+1];
    index--;
    }
    }

    //supprime le premier vivre du tableau
    void supprimervivre(tabvivre *tab,int &index){
    for(int i=0;i<TAILLEMAX-1;i++){
    tab[i]=tab[i+1];
    index--;
    }
    }

    //recherche un animal si il est presence dans l'ensemble animal
    bool presenceanimal(tabanimaux *tab,int ref){
    bool trouver=false;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].reference==ref)
    trouver=true;
    }
    return trouver;
    }

    //recherche si la region est presente dans l'ensemble region
    bool presenceregion(tabanimauxregion *tab,char ref){
    bool trouver=false;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].nomr==ref)
    trouver=true;
    }
    return trouver;
    }

    //recherche si la region est dans l'ensemble vivre
    bool presencevivreregion(tabvivre *tab,char ref){
    bool trouver=false;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].nomr==ref)
    trouver=true;
    }
    return trouver;
    }

    //recherche si l'animal est present dans l'ensemble vivre
    bool presencevivreanimal(tabvivre *tab,int ref){
    bool trouver=false;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].reference==ref)
    trouver=true;
    }
    return trouver;
    }

    //
    void affichepoptotani(tabvivre *tab,animal &a){
    int aux=0;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].reference==a.reference)
    aux+=tab[i].nombre;
    }
    cout<<"La population totale pour l'animal "<<a.noma<<" est : "<<aux<<endl<<endl;
    }

    void afficheaniref(tabanimaux* taba,int ref){
    bool trouver=false;
    for(int i=0;i<TAILLEMAX && !trouver;i++){
    if(tab[i].reference==ref){
    afficheranimal(tab[i]);
    trouver=true;
    }
    }
    }

    void affixheaniregion(tabvivre* tabv,region &r,tabanimaux* taba){
    for(int i=0;i<TAILLEMAX;i++){
    if(tabv[i].nomr==r.nom)
    afficheaniref(taba,tabv[i].ref);
    }
    }

    je n'ai pas fini de le debugger
    0
  13. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    PLutot que faire des include "machin.h", mais tes include sur "machin.cpp"
    0
  14. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    Bon, deja, dans ton ensemble.h, tu utilises des variables appartenant à d'autres .h, donc tu rajoutes des include :

    #include "region.h"
    #include "animal.h"
    #include "vivre.h"


    Ensuite, Tu utilises des références, c'est bien, mais autant les protéger et utiliser des références constantes, ca corrige d'autres erreurs, donc tu as ca :

    //ajoute une region a l'ensemble
    void ajoutregion(const region &,tabregion*,int&);
    
    //ajoute un animal à l'ensemble
    void ajoutanimal(const animal &,tabanimaux*,int&);
    
    //aloute vivre dans l'ensemble des vivre
    void ajoutvivre(const vivre &,tabvivre*,int&);


    Jcontinue de regarder
    0
  15. jb500 Messages postés 94 Date d'inscription   Statut Membre Dernière intervention   10
     
    j'ai trouver le probleme
    merci de m'avoir aider
    0
  16. azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   75
     
    Ok, pas de quoi :)
    0