Variable non reconnu

Résolu/Fermé
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 - 13 janv. 2010 à 13:50
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 13 janv. 2010 à 17:39
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

15 réponses

azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 13:53
T'as pas mis des majuscules a tes noms de fichiers par hasard ?
0
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
13 janv. 2010 à 13:55
Il nous faut un peu plus de code pour pouvoir te dire....
0
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 13:55
non, tout est en minuscule
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 13:55
Postes tes codes s'il te plait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 14:01
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
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 14:07
Tu appelles bien tes structures de cette manière :

Ma_structure.ma_variable; ?

Penses a la POO sinon ;)
0
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 14:10
oui mes structure comme cela.
pour la POO on a pas encore appris.
0
Arya Dröttningu Messages postés 581 Date d'inscription mardi 12 janvier 2010 Statut Membre Dernière intervention 3 janvier 2019 157
13 janv. 2010 à 14:13
tu pourrais nous donner le code des .cpp ?
0
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 14:22
pas de probleme,
je t'envoie un zip avec tout les les fichier
PS:le mail est envoyé
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 14:24
Rien recu. vérifies que c'est bien univ et non unis, j'ai changé entre temps.
0
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 14:28
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
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 14:31
PLutot que faire des include "machin.h", mais tes include sur "machin.cpp"
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 15:42
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
jb500 Messages postés 94 Date d'inscription dimanche 7 décembre 2008 Statut Membre Dernière intervention 13 mai 2011 10
13 janv. 2010 à 17:39
j'ai trouver le probleme
merci de m'avoir aider
0
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
13 janv. 2010 à 17:39
Ok, pas de quoi :)
0