Problème de débutant :p.

Problème de débutant :p. - C - Programmation

Marsh Posté le 29-08-2007 à 01:38:22    

Salut !, je suis nouveau sur ce forum et je débute en programmation c/c++ (j'ai commencer aujourd'hui),
j'ai appris vite fait quelque base par le site du zero mais voila je viens de tenter un programme moi même il compile sans erreur il se lance mais dés que je veut choisir ce que je veut faire il plante je ne sais pas pourquoi pourtant je pense avoir tout bien fait dans les rêgle.
Voila merci d'aider un pov débutant^^ lol.
 
Le code source en C fait sous Dev C++ :
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
    long choixMenu, resultat = 0, nombreA = 0, nombreB = 0;
    double nombre1 = 0, nombre2 = 0;
     
    printf("\n\n***** Choisissez le type de calcul que vous souhaitez faire *****\n\n\n" );
    printf("1. l'Addition\n" );
    printf("2. la Soustraction\n" );
    printf("3. la Multiplication\n" );
    printf("4. la Division\n" );
    printf("\nVotre choix ? " );
    scanf("%ld", choixMenu);
     
    printf("\n" );
     
    switch (choixMenu)
    {
           case 1:
                printf("Entrez le nombre A : " );
                scanf("%ld", &nombreA);
                printf("Entrez le nombre B : " );
                scanf("%ld", &nombreB);
                resultat = nombreA + nombreB;
                printf("%ld + %ld = %ld\n", nombreA, nombreB, resultat);
                break;
           case 2:
                printf("Entrez le nombre A : " );
                scanf("%ld", &nombreA);
                printf("Entrez le nombre B : " );
                scanf("%ld", &nombreB);
                resultat = nombreA + nombreB;
                printf("%ld - %ld = %ld\n", nombreA, nombreB, resultat);
                break;
           case 3:
                printf("Entrez le nombre A : " );
                scanf("%ld", &nombreA);
                printf("Entrez le nombre B : " );
                scanf("%ld", &nombreB);
                resultat = nombreA + nombreB;
                printf("%ld * %ld = %ld\n", nombreA, nombreB, resultat);
                break;
           case 4:
                printf("Entrez le nombre A EX 5.0 : " );
                scanf("%lf", &nombre1);
                printf("Entrez le nombre B EX 2.0 : " );
                scanf("%lf", &nombre2);
                resultat = nombre1 + nombre2;
                printf("%lf / %lf = %lf\n", nombre1, nombre2, resultat);
                break;
                default:
                        printf("Vous avez entrer un nombre incorrect. Veuillez recommencez\n\n" );
                        break;
                        }
   
  system("PAUSE" );  
  return 0;
}
 
Voila sa vole pas haut bien sur mais c'est un très bon exercice je pense. ( j'ai lu les 6 premiers chapitre du site du zero j'ai eux 20/20 a tout les chapitres sauf a celui avec les if...else switch etc j'ai eu 7/20 lol j'étais totale embrouillé mais j'comprend que avec le switch if...else c'est le trou ^^'.

Reply

Marsh Posté le 29-08-2007 à 01:38:22   

Reply

Marsh Posté le 29-08-2007 à 01:44:40    

deglingo85 a écrit :

Salut !, je suis nouveau sur ce forum et je débute en programmation c/c++ (j'ai commencer aujourd'hui),


Il n'y a pas de "programmation C/C++".
 
Il y a la programmation, le langage C et le langage C++. Ce sont 3 choses différentes.
 

Citation :

j'ai appris vite fait quelque base par le site du zero mais voila je viens de tenter un programme moi même il compile sans erreur


Non. Ton compilateur est mal réglé :  
 
http://mapage.noos.fr/emdel/codage.htm#cfg_compilo
 

Citation :

Le code source en C fait sous Dev C++ :
 
#include <stdio.h>


Merci de lire les règles du forum et d'apprendre à utiliser les balises de code...
 
Tu devrais commencer par corriger ces erreurs :  


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `main':
main.c:16: warning: format argument is not a pointer (arg 2)
main.c:52: warning: double format, different type arg (arg 4)
main.c: At top level:
main.c:4: warning: unused parameter 'argc'
main.c:4: warning: unused parameter 'argv'
main.c: In function `main':
main.c:6: warning: 'choixMenu' might be used uninitialized in this function
Linking console executable: console.exe
Process terminated with status 0 (0 minutes, 1 seconds)
0 errors, 5 warnings



---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-08-2007 à 02:01:05    

Je viens d'ajouter ->-Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes
 
dans outil -> option du compilateur
 
j'ai recompilé et il y a eux 5 warnings...
Merci pour la réponse rapide mais le problème c'est que je comprend pas comment rêgler le problème même si je sais d'ou sa viens...je serait peut-être quand j'aurais fini tout les chapitres sur le C...
 
EDIT: Je viens de rêgler le problème de la ligne 51.... mais les autres.....


Message édité par deglingo85 le 29-08-2007 à 02:09:04
Reply

Marsh Posté le 29-08-2007 à 02:18:37    

Je viens de modifier quelque peu mon code source....Et les voicis dans les fameuses balises lol.

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. {
  5.     long choixMenu, resultat = 0, nombreA = 0, nombreB = 0;
  6.     double nombre1 = 0, nombre2 = 0, resultat1 = 0;
  7.    
  8.     printf("\n\n***** Choisissez le type de calcul que vous souhaitez faire *****\n\n\n" );
  9.     printf("1. l'Addition\n" );
  10.     printf("2. la Soustraction\n" );
  11.     printf("3. la Multiplication\n" );
  12.     printf("4. la Division\n" );
  13.     printf("\nVotre choix ? " );
  14.     scanf("%ld", choixMenu);
  15.    
  16.     printf("\n" );
  17.    
  18.     switch (choixMenu)
  19.     {
  20.            case 1:
  21.                 printf("Entrez le nombre A : " );
  22.                 scanf("%ld", &nombreA);
  23.                 printf("Entrez le nombre B : " );
  24.                 scanf("%ld", &nombreB);
  25.                 resultat = nombreA + nombreB;
  26.                 printf("%ld + %ld = %ld\n", nombreA, nombreB, resultat);
  27.                 break;
  28.            case 2:
  29.                 printf("Entrez le nombre A : " );
  30.                 scanf("%ld", &nombreA);
  31.                 printf("Entrez le nombre B : " );
  32.                 scanf("%ld", &nombreB);
  33.                 resultat = nombreA + nombreB;
  34.                 printf("%ld - %ld = %ld\n", nombreA, nombreB, resultat);
  35.                 break;
  36.            case 3:
  37.                 printf("Entrez le nombre A : " );
  38.                 scanf("%ld", &nombreA);
  39.                 printf("Entrez le nombre B : " );
  40.                 scanf("%ld", &nombreB);
  41.                 resultat = nombreA + nombreB;
  42.                 printf("%ld * %ld = %ld\n", nombreA, nombreB, resultat);
  43.                 break;
  44.            case 4:
  45.                 printf("Entrez le nombre A EX 5.0 : " );
  46.                 scanf("%lf", &nombre1);
  47.                 printf("Entrez le nombre B EX 2.0 : " );
  48.                 scanf("%lf", &nombre2);
  49.                 resultat = nombre1 + nombre2;
  50.                 printf("%lf / %lf = %lf\n", nombre1, nombre2, resultat1);
  51.                 break;
  52.                 default:
  53.                         printf("Vous avez entrer un nombre incorrect. Veuillez recommencez\n\n" );
  54.                         break;
  55.                         }
  56.  
  57.   system("PAUSE" );
  58.   return 0;
  59. }


Message édité par deglingo85 le 29-08-2007 à 02:19:02
Reply

Marsh Posté le 29-08-2007 à 05:03:04    

Hmm, ton compilo aurait du beugler à la ligne 15 ...

Reply

Marsh Posté le 30-08-2007 à 23:19:35    

tpierron a écrit :

Hmm, ton compilo aurait du beugler à la ligne 15 ...


En plus, quel que soit le choix, l'opération est toujours la même (cf lignes 26, 34, 42 et 50) mais ça, le compilo peut pas le voir...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 30-08-2007 à 23:31:24    

tpierron a écrit :

Hmm, ton compilo aurait du beugler à la ligne 15 ...


Chez moi il dit rien (juste du warning, très clair soit dit en passant). Par contre à l'exécution...

 

Edit :
Bon vite fait comme ça, un peu meieux :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. {
  5.     int choixMenu, nombreA, nombreB;
  6.     double resultat=0;
  7.    
  8.     printf("\n\n***** Choisissez le type de calcul que vous souhaitez faire *****\n\n\n" );
  9.     printf("1. l'Addition\n" );
  10.     printf("2. la Soustraction\n" );
  11.     printf("3. la Multiplication\n" );
  12.     printf("4. la Division\n" );
  13.     printf("\nVotre choix ? " );
  14.     scanf("%d", &choixMenu);
  15.    
  16.     printf("\n" );
  17.    
  18.     printf("Entrez le nombre A : " );
  19.     scanf("%d", &nombreA);
  20.     printf("Entrez le nombre B : " );
  21.     scanf("%d", &nombreB);
  22.    
  23.     switch (choixMenu)
  24.     {
  25.            case 1:
  26.                 resultat = nombreA + nombreB;
  27.                 break;
  28.            case 2:
  29.                 resultat = nombreA - nombreB;
  30.                 break;
  31.            case 3:
  32.                 resultat = nombreA * nombreB;
  33.                 break;
  34.            case 4:
  35.                 resultat = nombreA / nombreB;
  36.                 break;
  37.            default:
  38.                 printf("Vous avez entrer un nombre incorrect. Veuillez recommencez\n\n" );
  39.                 break;
  40.     }
  41.     printf("Resultat : %lf\n", resultat);
  42.    
  43.     system("PAUSE" );
  44.     return 0;
  45. }


Edit (encore) : changé deux, trois truc.

Message cité 1 fois
Message édité par dwogsi le 31-08-2007 à 15:44:58

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 31-08-2007 à 08:18:52    

dwogsi a écrit :


Bon vite fait comme ça, un peu mieux :


C'est pas terminé...


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `main':
main.c:20: warning: long int format, int arg (arg 2)
main.c:22: warning: long int format, int arg (arg 2)
main.c: At top level:
main.c:4: warning: unused parameter 'argc'
main.c:4: warning: unused parameter 'argv'
main.c: In function `main':
main.c:7: warning: 'resultat' might be used uninitialized in this function
Linking console executable: console.exe
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 5 warnings

Message cité 1 fois
Message édité par Emmanuel Delahaye le 31-08-2007 à 08:19:16

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 31-08-2007 à 15:46:44    

Emmanuel Delahaye a écrit :


C'est pas terminé...


Project   : Forums
Compiler  : GNU GCC Compiler (called directly)
Directory : C:\dev\forums\
--------------------------------------------------------------------------------
Switching to target: default
Compiling: main.c
main.c: In function `main':
main.c:20: warning: long int format, int arg (arg 2)
main.c:22: warning: long int format, int arg (arg 2)
main.c: At top level:
main.c:4: warning: unused parameter 'argc'
main.c:4: warning: unused parameter 'argv'
main.c: In function `main':
main.c:7: warning: 'resultat' might be used uninitialized in this function
Linking console executable: console.exe
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 5 warnings



 
J'ai pourtant précisé que j'avais fait ça vite fait, sans même contrôler ce que me disais le compilo.
Bon j'y ai encore modifié, 20,22,7 ça doit être réglé.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed