Problemme debogage en c++ [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
3 juin 2012
-
Char Snipeur
Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
-
Bonjour,


2 ème probleme j'ai reussit a faire le programme suivant :



Ecrire un programme C++ qui permet de :
Declarer 4 Tableaux en memoire avec 1a structure Suivante :

1 ) Demander Le Code d'un avion ensuite
Rechercher en table et afficher son nom, sa vitesse, son Rayon d'action si non trouve Afficher
"erreur"
2) afficher la moyenne des rayons d'action
3) afficher l'avion qui vole Ie plus vite



bon mon programme en c++ est le suivant :



#include<iostream>
#include<string>
using namespace std;




void recherche()
{
string co;
bool test;
test=false;
int i;
int vit[5] , ray[5];
string nom[5] , code[5];
nom[0]="BOING747";
nom[1]="AIRBUSA380";
nom[2]="LEARJET45";
nom[3]="DC10";
nom[4]="ANTONOV32";
nom[5]="CONCORDE";

code[0]="B0";
code[1]="AB";
code[2]="LJ";
code[3]="DC";
code[4]="AN";
code[5]="CO";

vit[0]=800;
vit[1]=950;
vit[2]=700;
vit[3]=900;
vit[4]=560;
vit[5]=1400;

ray[0]=10000;
ray[1]=12000;
ray[2]=4500;
ray[3]=8000;
ray[4]=2500;
ray[5]=16000;

cout<<" Veuillez saisir le code de l'avion : ";
cin>>co;
cout<<endl;
for (i=0;i<=5;i++)
{
if (co!=code[i])
test=true;
}
if (test==true)
cout<<" ERREUR \n";
for (i=0;i<=5;i++)
{
if (co==code[i]);
test=false;
{
cout<<" Le nom de cette avion est : "<<nom[i]<<endl;
cout<<" Le code de cette avion est : "<<code[i]<<endl;
cout<<" La vitesse de cette avion est de : "<<vit[i]<<endl;
cout<<" Le rayon d'action de cette avion est de : "<<ray[i]<<endl;
}
}
}

void moyenne()
{
int ray[5];
ray[0]=10000;
ray[1]=12000;
ray[2]=4500;
ray[3]=8000;
ray[4]=2500;
ray[5]=16000;
int m,s,j;
for (j=0;j<=5;j++)
m=m+ray[j];
s=m/6;
cout<<" La moyenne des rayons d'action est de : "<<s<<endl;
}

void vitesse()
{
int k,vmax,x;
int vit[5];
string nom[5];
nom[0]="BOING747";
nom[1]="AIRBUSA380";
nom[2]="LEARJET45";
nom[3]="DC10";
nom[4]="ANTONOV32";
nom[5]="CONCORDE";

vit[0]=800;
vit[1]=950;
vit[2]=700;
vit[3]=900;
vit[4]=560;
vit[5]=1400;

vmax=vit[0];
for(k=0;k<=5;k++)
{
if (vit[k]>vmax)
{
vmax=vit[k];
x=k;
}
}
cout<<" L'avion qui vole le plus vite est : "<<nom[x]<<"\n";
}




main()
{
cout<<" 1) : Recherche d'avion \n";
cout<<" 2) : La moyenne des rayons d'actions \n";
cout<<" 3) : Afficher l'avion qui vole le plus vite \n";
cout<<endl;
cout<<endl;
int choix;
cout<<" Veuillez saisir votre choix : ";
cin>>choix;
cout<<endl;
while (choix<0 || choix>3 )
{
cout<<" Veuillez saisir un choix entre 0 et 3 SVP : ";
cin>>choix;
}
switch (choix)
{
case 1:recherche();
break;
case 2:moyenne();
break;
case 3:vitesse();
break;
}
cout<<endl;
system("pause");
}




quand je compile ca marche bien mais a l'exécution j' ai un problème de débogage pour l'application de recherche d'avion
est ce que vous avez des solution au problème
et merci d'avance.

3 réponses

Messages postés
8896
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1381
Hello,

void recherche()
{
    string co;
    bool test;
    test=false;
    int i;
    int vit[5] , ray[5];
    string nom[5] , code[5];
    nom[0]="BOING747";
    nom[1]="AIRBUSA380";
    nom[2]="LEARJET45";
    nom[3]="DC10";
    nom[4]="ANTONOV32";
    nom[5]="CONCORDE";


Attention nom est de longueur 5, donc il va de 0 à 4.
nom[5] n'étant pas alloué, c'est un bug de l'utiliser.

code[0]="B0";
code[1]="AB";
code[2]="LJ";
code[3]="DC";
code[4]="AN";
code[5]="CO";

vit[0]=800;
vit[1]=950;
vit[2]=700;
vit[3]=900;
vit[4]=560;
vit[5]=1400;

ray[0]=10000;
ray[1]=12000;
ray[2]=4500;
ray[3]=8000;
ray[4]=2500;
ray[5]=16000;


Donc pareil pour code, vit et rav.

cout<<" Veuillez saisir le code de l'avion : ";
cin>>co;
cout<<endl;

for (i=0;i<=5;i++)
{
    if (co!=code[i])
        test=true;
}


Même problème avec la boucle.

if (test==true)
    cout<<" ERREUR \n";

for (i=0;i<=5;i++)
{
    if (co==code[i]);


Il y a un point-virgule après ta condition, ce qui fait que ton
if ne fait rien.

    test=false;


Donc test sera toujours false.

    {
        cout<<" Le nom de cette avion est : "<<nom[i]<<endl;
        cout<<" Le code de cette avion est : "<<code[i]<<endl;
        cout<<" La vitesse de cette avion est de : "<<vit[i]<<endl;
        cout<<" Le rayon d'action de cette avion est de : "<<ray[i]<<endl;
    }


Pourquoi ceci est dans un bloc séparé?

Bonne chance!
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62866 internautes nous ont dit merci ce mois-ci

Messages postés
9713
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
1104
salut
pas très C++ comme démarche. C'est dommage, car c'est le genre de cas ou l'objet est vraiment intéressant.
Au lieu de faire 4 tableaux pour chaque données (ce qui fait que le lien entre chaque n'est pas assuré), il aurait été mieux de créer une classe avion avec les 4 champs vit, ray, com et code. Ensuite de faire un tableau d'avion. Et encore mieux qu'un tableau, un vector pour tout stocker.