Fonction

Moustiquet Messages postés 254 Statut Membre -  
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   -
/*Programme utilisant des sous programmes qui permettent de decouvrir et d'afficher tous les nombres parfaits entre 2 et 500.*/

#include <stdio.h>

int estParfait(int n)

{


    int somDivPropre= 1,/* le premier diviseur de 1*/
        k;  /*est-il un diviseur de n*/
        
    /* totaliser les diviseur propre*/
    for (k=2;k<=n/2; k++)
    if (n%k== 0)
    somDivPropre+= k;
    return n== somDivPropre;
}
/*Afficher tel que demandé*/
 void afficher (int nombreParfait);
{
      int k;
(23)      printf ("%4d =1", nombreParfait);      for( k=2;k<= nombreParfait/2;k++)
      if (nombreParfait % k==0)
      printf ("+ %3d", k);
  (27)    printf("\n");}
      void main()
{
         const int BORNE1=2,
                   BORNE2=500;
         int nombre, compteur=0;
         
         printf("Voici les nombres parfaits entre %d et %d\n\n",BORNE1,BORNE2);
              for (nombre = BORNE1;nombre<=BORNE2; nombre++)
              if(estParfait(nombre)){
                        printf("%3d",++compteur);
                        afficher(nombre);
         
         }
         printf("Cliquer sur le bouton de fermeture");

21 F:\FONCTION\NombreParfait.c syntax error before '{' token
23 F:\FONCTION\NombreParfait.c syntax error before string constant
23 F:\FONCTION\NombreParfait.c conflicting types for 'printf'

21 F:\FONCTION\NombreParfait.c syntax error before '{' token 23 F:\FONCTION\NombreParfait.c a parameter list with an ellipsis can't match an empty parameter name list declaration
23 F:\FONCTION\NombreParfait.c a parameter list with an ellipsis can't match an empty parameter name list declaration
23 F:\FONCTION\NombreParfait.c [Warning] data definition has no type or storage class
27 F:\FONCTION\NombreParfait.c syntax error before string constant
27 F:\FONCTION\NombreParfait.c [Warning] data definition has no type or storage class
30 F:\FONCTION\NombreParfait.c [Warning] return type of 'main' is not `int'
Le comtilateur me renvoi ces messages, mais je comprends pas tout devrais baigner dans l'huile.
A voir également:

3 réponses

Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
1) pour coder le corps d'une fonction :
void afficher (int nombreParfait) {

et pas
void afficher (int nombreParfait); {
0
loupius Messages postés 789 Statut Membre 148
 
21 F:\FONCTION\NombreParfait.c syntax error before '{' token
Ah, il faudra prendre l'habitude de rester humble devant les remarques du compilateur; on est tous passé par là, à se dire :"mais le compilateur à tort !". Maintenant je ne le remets plus jamais en cause et m'applique à comprendre 'à la lettre' ce qu'il veut dire et, ici, sa remarque est claire: à la ligne 21, dans le fichier NombreParfait.c il y a une erreur avant {.
Ce qui est important, c'est la première erreur signalée; ensuite les autres découlent souvent, mais pas toujours, d'une erreur précédente.
Rassure-toi ce n'est pas toujours facile de comprendre ce qu'il veut dire.
Bonne journée.
0
Moustiquet Messages postés 254 Statut Membre
 
Bonne remarque, C'est deja toute une aventure l'apprentissage de la programmation, mais la compréhension du compilateur me rend souvent perplexe. Merci encore de votre aide.
0
Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
 
ça peut en effet des fois être très étrange, ce qu'il nous sort le compilo;)

Mais en général, la première erreur pointe bien là où il y a vraiment une faute (ou alors une ligne en dessus ou en dessous), et la description est très souvent correcte pour celle-ci.

Tu corriges la première, tu tentes de recompiler, tu corriges la nouvelle première, etc... : c'est une bonne méthode à avoir si tu te sens pris dans la confusion de tous ces messages :)
0