Problemme debogage en c++

Résolu/Fermé
mrdevil Messages postés 13 Date d'inscription lundi 6 décembre 2010 Statut Membre Dernière intervention 3 juin 2012 - 6 déc. 2010 à 00:18
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 6 déc. 2010 à 08:21
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.

2 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
6 déc. 2010 à 04:13
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
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 déc. 2010 à 08:21
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.
0