bloqué sur un petit programme en C

bloqué sur un petit programme en C - C - Programmation

Marsh Posté le 04-10-2005 à 10:37:46    

Bonjour à tous j'ai un petit programme à faire pour les cours mais je n'arrive pas à trouver ce qui déconne dans mon prog alors j'espère qu'un oeil extèrieur pourra m'aider, voici le source:
 
/*BTS IRIS 1er année*/
/*21/09/05*/
/*lasommedesnpremiersentiers*/
/*Affiche la somme des n premiers entiers lu au clavier*/
/*vr: somme, n, i*/
 
#include <stdio.h>
#include <dos.h>
#define TITRE "\t\t***Affiche la somme des n premiers entiers lu au clavier***\n"
 
 
void main (void)
 
   {
      int sommen, n, i;
      printf(TITRE);
      printf("\nEntrez la valeur de n different de zéro:" );
      scanf("%d",&n);
      i=1;
      sommen=0;
 
      while (i<n)
      {
       i=sommen+i;        
        i=i+1;        
      }
      printf("\nLa somme des n premiers entiers est:%d",&sommen);
      sleep(5);
   }
 
 
Il est censé calculer la somme des n premiers d'un nombre n mais j'obtient tjrs le même résultat qui est: 1245064
Merci d'avance pour votre aide...
 

Reply

Marsh Posté le 04-10-2005 à 10:37:46   

Reply

Marsh Posté le 04-10-2005 à 10:40:34    

Remplacer i par sommen pour avoir

sommen = sommen + i

:)

Reply

Marsh Posté le 04-10-2005 à 10:44:34    

Déja essayer et ca ne marche pas non plus, tjrs le même problème.

Reply

Marsh Posté le 04-10-2005 à 10:48:24    

Oui, excuse-moi, il y a, en plus, une autre erreur que je n'avais pas vue :

     printf("\nLa somme des n premiers entiers est:%d",sommen);  

(pas de "et commercial" (ampersand) devant sommen, car là il s'agit de la valeur et non pas du pointeur sur l'entier).

Reply

Marsh Posté le 04-10-2005 à 10:50:49    

yyyeesss!! ca marche lol!! Merci bien, ca fais 1 plombe que je cherche et j'avais pas vu ca...
En tt cas merci encore, bonne journée a toi je retourne bosser...

Reply

Marsh Posté le 04-10-2005 à 11:01:09    

un autre probléme, je dois créer aussi un petit menu mais je n'arrive pas a incorporé cette satané de fonction:
 
/*menu.c*/
/*03/10/05*/
/*Windows Xp*/
/*E114-POSTE-08*/
/*D:\BTSiris2005\MOLINIE\Langage C\TP1\Problemen°4\menu*/
/*Affiche le menu qui propose divers traitements pour un nombre n*/
/*var:nsomNPremierEntier, prodNPremierEntier:entier lettre:caractère NPremier, NParfait:booleen*/
 
 
#include <stdio.h>
#include <conio.h>
#define VRAI 1
#define FAUX 0
int lasommedesnpremiersentiers (int);
 
void menu (void);
 
void main (void)
 
   {
      int nsomNPremierEntier,n;
      char lettre;
      menu();
      printf("\nVeuillez entrez la valeur n souhaité:" );
      scanf("%d",&n);
      printf("\nVeuillez choisir a, b, c, d:" );
      scanf("%s",&lettre);
      switch (lettre)
        {
               case 'a':
               nsomNPremierEntier=lasommedesnpremiersentiers;
               printf("\nLa somme des n premiers entiers est:%d",nsomNPremierEntier);
               break;
         }
      getch();
   }
 
 
/*fonction lasommedesnpremiersentiers*/
/*Entrées:*/
/*Sorties:*/
/*E/S:*/
/*Description:*/
 
int lasommedesnpremiersentiers (int nsomNPremierEntier)
   {
      int n, i;
      i=1;
      nsomNPremierEntier=0;
      while(i<n)
          {
              nsomNPremierEntier=nsomNPremierEntier+i;
              i=i+1;
          }
      return(nsomNPremierEntier);
   }
 
 
 
/*fonction afficher menu*/
/*Entrées:*/
/*Sorties:*/
/*E/S:*/
/*Description:*/
 
void menu(void)
   {
      printf("\nProgramme de calcul sur un nombre entier n" );
      printf("\nTaper a pour faire la somme des n premier entiers:" );
      printf("\nquitter" );
   }
 
Mon prog se lance sans probléme mais j'obtient tjrs le même resultat...

Message cité 1 fois
Message édité par enhancer38 le 04-10-2005 à 11:04:07
Reply

Marsh Posté le 04-10-2005 à 13:55:03    

enhancer38 a écrit :


 
/*menu.c*/
/*03/10/05*/
/*Windows Xp*/
/*E114-POSTE-08*/
/*D:\BTSiris2005\MOLINIE\Langage C\TP1\Problemen°4\menu*/
/*Affiche le menu qui propose divers traitements pour un nombre n*/
/*var:nsomNPremierEntier, prodNPremierEntier:entier lettre:caractère NPremier, NParfait:booleen*/
 
 
#include <stdio.h>
#include <conio.h>
#define VRAI 1
#define FAUX 0
int lasommedesnpremiersentiers (int);
 
void menu (void);
 
void main (void)
 
   {
      int nsomNPremierEntier,n;
      char lettre;
      menu();
      printf("\nVeuillez entrez la valeur n souhaité:" );
      scanf("%d",&n);
      printf("\nVeuillez choisir a, b, c, d:" );
      scanf("%s",&lettre);
      switch (lettre)
        {
               case 'a':
               nsomNPremierEntier=lasommedesnpremiersentiers;
               printf("\nLa somme des n premiers entiers est:%d",nsomNPremierEntier);
               break;
         }
      getch();
   }
 
 
/*fonction lasommedesnpremiersentiers*/
/*Entrées:*/
/*Sorties:*/
/*E/S:*/
/*Description:*/
 
int lasommedesnpremiersentiers (int nsomNPremierEntier)
   {
      int n, i;
      i=1;
      nsomNPremierEntier=0;
      while(i<n)
          {
              nsomNPremierEntier=nsomNPremierEntier+i;
              i=i+1;
          }
      return(nsomNPremierEntier);
   }
 
 
 
/*fonction afficher menu*/
/*Entrées:*/
/*Sorties:*/
/*E/S:*/
/*Description:*/
 
void menu(void)
   {
      printf("\nProgramme de calcul sur un nombre entier n" );
      printf("\nTaper a pour faire la somme des n premier entiers:" );
      printf("\nquitter" );
   }
 
Mon prog se lance sans probléme mais j'obtient tjrs le même resultat...


 
Ta fonction menu() sert à quoi à part afficher des strings ?  
Si j'ai bien compris pour utiliser le prog qui fait la somme des entiers il faut taper 'a' ?  
Dernière question, tu le fais où ton BTS Iris ;) (j'en ai fais un aussi et ce prog me rappelle quelque chose :p)?  

Reply

Marsh Posté le 04-10-2005 à 16:25:11    

enhancer38 a écrit :

Bonjour à tous j'ai un petit programme à faire pour les cours mais je n'arrive pas à trouver ce qui déconne dans mon prog alors j'espère qu'un oeil extèrieur pourra m'aider, voici le source:


Remarques et corrections. Pose des questions si tu ne comprends pas. Et lit bien les liens...

Citation :


/*BTS IRIS 1er année */
/*21/09/05 */
/*lasommedesnpremiersentiers */
/*Affiche la somme des n premiers entiers lu au clavier */
/*vr: somme, n, i */
 
#include <stdio.h>
#include <dos.h>
#define TITRE "\t\t***Affiche la somme des n premiers entiers lu au clavier***\n"
 
 
/* -ed-
   void main (void)
 
   main() retourne int. toujours.
 
   http://mapage.noos.fr/emdel/notes.htm#typemain
 
 */
int main (void)
{
   int sommen, n, i;
/* -ed-
   printf (TITRE);
peu recommande. Si il ya des caracteres d'echappement dans titre,
c'est la catastrophe...
*/
   printf ("%s", TITRE);
   fflush (stdout);
/* -ed-
 
http://mapage.noos.fr/emdel/notes.htm#fflush_stdout
 
*/
   
   printf ("\nEntrez la valeur de n different de zéro:" );
   
/* -ed- ajoute'. */
   fflush (stdout);
 
   scanf ("%d", &n);
/* -ed-
 
Fragile. (le code retour n'est pas teste'...)
scanf() n'est pas indique' pour ce genre de saisie...
 
http://mapage.noos.fr/emdel/notes.htm#saisie
http://mapage.noos.fr/emdel/notes.htm#fichiers
 
*/
   
   i = 1;
   sommen = 0;
 
   while (i < n)
   {
      /* -ed-
         i = sommen + i;
 
         C'est un peu n'importe quoi ca, non ?
 
       */
      sommen += i;
 
/* -ed-
   i = i + 1;
 
   Correct, mais e C on ecrit plutot
 */
      i++;
   }
 
/* -ed-
   printf ("\nLa somme des n premiers entiers est:%d", &sommen);
 
   Pourquoi '&' ?
   Manque un '\n' a la fin de la ligne...
 */
   printf ("\nLa somme des n premiers entiers est:%d\n", sommen);
 
   /* -ed-
      sleep (5);
 
      pas standard et inutile.
    */
/* -ed- parce que main() retourne int : */
   return 0;
}


NOTE aux modérateurs/gestionnaires du forum
Les formats cpp et fixed s'acharnent à supprimer les
'\'. C'est insupportable ! Idem pour n'importe quelle balise (saute quote).


Message édité par Emmanuel Delahaye le 04-10-2005 à 16:31:52

---------------
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

Sujets relatifs:

Leave a Replay

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