Besoin aide pour programme .cpp

Résolu/Fermé
benjamin71 - 23 nov. 2008 à 20:58
 benjamin71 - 24 nov. 2008 à 17:20
Bonjour à tous, j'ai un petit programme à faire et je n'ai pas pu installer le logiciel sur mon pc alors j'aimerais vous montrer ce que j'ai fais pour savoir si ca va marcher en cours lors de l'interro.


En fait, c'est un programme très simple pour vous je pense, mais bien assez complexe pour moi lol. Le but est lorsque l'on tape le numéro du département (j'ai choisi 71, 89, 21, 58) le programme nous affiche le nom du département.


Alors voila ce que j'ai fais :

#include<stdio.h>
void main ()
{char code [20];
float 71 21 58 89 region

{code=France;
while(code!=France);
printf("Entrer le nom du pays ");
scanf("%s", &code);
}

{code=Bourgogne;
while(code!=Bourgogne);
printf("Entrer le nom de la région ");
scanf("%s", &code);
}


{printf("Entrer le numéro du département : %f \n", region);
if(region=71)
printf("Ce numéro correspond au département de la Saone et Loire \n");

if(region=21)
printf("Ce numéro correspond au département de la Cote dOr \n");

if(region=58)
printf("Ce numéro correspond au département de la Nievre \n");

else printf("Ce numéro correspond au département de lYonne \n");


}
}


Merci de me dire si mon programme fonctionne ou non, et si possible me dire ce qui ne va pas.


Merci beaucoup d'avance.
Benjamin
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
23 nov. 2008 à 21:14
Non, il y a plein d'erreurs ;).
D'ailleurs, j'ai pas tout compris ce que tu voulais faire avec ton programme.
Pourquoi tu demandes le nom du pays ? le nom de la région ? Ce n'est pas juste les départements ?
Cdlt
0
Lol, merci de ta réponse rapide.


En fait si, le but était de mettre le nom des départements mais bon, ca aurait été répétitifs. Alors j'ai fais comme ca avec seulement 4 départements et le nom du pays et de la région permet d'utiliser la boucle "Tant que".




Peux tu m'aider un peu, car il me semblait que mon programme était bon.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840 > benjamin71
23 nov. 2008 à 21:33
Oui, t'inquiète je vais t'aider. Mais je veux être sûr de comprendre ton but ^^.
Tu dis que ton programme doit demander le numéro du département et sortir le nom du département. Ca ok, pas de souci. Mais je comprends pas ce que vient faire le nom du pays et de la région ?
0
benjamin71 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
23 nov. 2008 à 21:41
Bah en fait si je ne fais que mettre les noms de régions, je vais utiliser que des boucles if alors qu'en mettant cela, j'utilise une boucle while. En fait ca sert a rien, seulement à rendre un peu plus complexe mon programme (à mes yeux) en utilisant deux boucles différentes alors que sinon, je mettrais toujours la meme. Tu comprends ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
23 nov. 2008 à 22:09
Non, j'ai toujours pas tout compris.
Sinon, je t'ai fait un programme qui marche avec plusieurs boucle do while un tableau pour que tu vois comment ça marche.
Sinon, au niveau de ton code. Tu avais plusieurs erreurs.
Lorsque tu fais une comparaison en C, tu dois doubler l'opérateur d'égalité. Par exemple : if(a==5)...
Si tu mets un seul égal, alors la variable stockera la valeur 5 qui renverra 5. Et comme 5 est toujours vrai. Ton if ne sert à rien. Donc, très important (pas signalé à la compilation).

Lorsque tu as : char code[20]; et que tu fais un scanf. Il ne faut pas d'esperluette (&).
Tu dois utiliser : scanf("%s",code). (Par contre pour les caractères et les nombres, oui il faut bien mettre l'esperluette ;)).

float 71 ... region Je sais pas ce que tu voulais faire, mais en tout cas ça marche pas. float region; déclarera une variable pouvant stocker un nombre flottant (réel).

Dans ton code, tu as mis des accolades partout. Attention, l'accolade est importante. Il faut pas s'en servir pour grouper des bloques d'information.

Et enfin, moins grave mais je signale quand même. Evite le void main(), utilise plutôt int main() ;)

Allez, voici mon code :
#include<stdio.h>

int main (void){
    char code[][20] = {"ain","aisne","allier"};
    int dept;
    int choix;

    do{
        do{
            printf("\nnuméro du département : ");
            scanf("%d",&dept);
        }while(dept<1 || dept>sizeof(code)/sizeof(*code));
        printf("Le nom du département (%d) est : %s\n",dept,code[dept-1]);
        
        do{
            printf("\nrecommencer ? Taper 1 pour Oui, 0 pour Non : ");
            scanf("%d",&choix);
        }while(choix!=0 && choix!=1);
    }while(choix==1);

    puts("Bonne journée");
    return 0;
}


Si t'as des questions n'hésite pas.
Cdlt
0
Merci de ta réponse rapide, je sais pas si ca vient de ma prof ou quoi mais ce soir je vous montrerais un exemple que l'on a traité en cours (résolution d'équation du second degré) et tu verras la manière dont elle procède.
0
benjamin71 > benjamin71
24 nov. 2008 à 12:53
Voila le début d'un programme fait en cours :
#include<stdio.h>
#include<math.h>
void main ()

{float A, B, C, delta, x1, x2;

printf("Entrer A : ");
scanf("%f", &A);

printf("Entrer B : ");
scanf("%f", &B);

printf("Entrer C : ");
scanf("%f", &C);


if(A==0)
{
if(B==0)
{if(C==0)
printf("Infinite de solution \n");

else printf ("impossible \n");
}

else { printf("Equiation de degré 1 \n");
x1=-C/B;

printf("Solution x=%6.1f \n", x1);
}
}

else {delta=B*B-4*A*C;
if(delta<0)
printf("racines complexes \n");

else if(delta==0)
{x1=-B/2/A;
printf("solution double x=%6.2f, \n", x1);
}

else {x1=(-B+sqrt(delta)/2/A);
printf("deux solutions , x1=%6.2f, \n", x1);
x2=(-B-sqrt(delta)/2/A);

printf("x2=%6.2f, \`n",x2);

}
}
}


Voila le programme que l'on a fait pour la résolution d'une équation du second degré;, mais comme tu peux le constater, ca ne ressemble pas tellement au programme que tu as modifié, non ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
24 nov. 2008 à 13:16
Salut,
Non le programme que j'ai modifié était sur ta version qui contenait des fautes.
Là, le programme que tu as donné est parfait. Un seul truc à dire (oui, il faut bien :d),
void main() n'est pas top. Il faut utiliser int main() et de faire return 0; en dernière ligne.
Remarque : si tu postes un nouveau programme, n'oublie pas de l'encapsuler entre deux balises code (bouton à droite de souligner), c'est plus lisible ;)

PS : dans le dernier printf, il y a un backquote qui s'est immiscé entre le backslash et le n. Ca doit être une erreur d'inattention ;)
Cdlt
0
Ok Fiddy, je te remercie beaucoup pour l'aide que tu m'as apporté, ca m'a permis de voir les erreurs que j'ai faite et je comprends mieux.



Merci d'avoir passé de ton temps pour moi.


Cordialement.
Benjamin
0