IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Fonctions en C


Sujet :

C

  1. #1
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut Fonctions en C
    Bonsoir,

    L'énoncé de mon devoir précise qu'il faut définir une fonction C F11 qui prendra en entrées un entier n et un entier x et retournera comme résultat *le nombre de multiples de x compris entre 1 et n* ! Voici ce que j'ai fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int F11(int n, int x)
    {
    int y=1; /* y va de 1 à n*/ 
    int i=0; /*mon compteur de multiples*/ 
    for (y=1;y<=n;y++)
    {
    While (i%x==0) // multiples de x ?
    i++;
     
    }
    return i;
    }
    Qu'en pensez-vous s'il vous plait ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Pourquoi while plutôt que if?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Pourquoi while plutôt que if?
    Cela donnerait quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    int F11(int n, int x)
    {
    int y=1;       /* y va de 1 à n*/ 
    int i=0;       /*mon compteur de multiples*/ 
    for (y=1;y<=n;y++)
     
    {
     
    if (y%x==0)    /*multiples de x ?*/
    i++;
     
    else 
     
         là je mettrais quoi par exemple
     
    }
    return i;
    }
    Merci d'avance

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Dans le cas présent, tu peux ne pas mettre de else du tout, ou bien mettre un else contenant juste un bloc vide {}.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Dans le cas présent, tu peux ne pas mettre de else du tout, ou bien mettre un else contenant juste un bloc vide {}.
    Et que font les {} dans ce cas ? Aussi s'affiche le nombre des multiples de x compris entre 1 et n à la fin du programme ?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Tu n'affiches rien dans la fonction F11, tu comptes juste, puis tu retournes le compte.

    Breaking news: En C, on a le droit d'avoir des variables de plus d'une lettre.
    Voici un code plus compréhensible:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int CompteMultiples(int valeurMax, int x)
    {
    	int possibleMultiple=1; /* y va de 1 à n*/
    	int nbMultiples=0; /*mon compteur de multiples*/
    	for (possibleMultiple=1 ; possibleMultiple<=valeurMax ; possibleMultiple++)
    	{
    		if (possibleMultiple%x == 0) /*multiples de x ?*/
    			nbMultiples++;
     
    	}
    	return nbMultiples;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Sinon il y a encore plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int f11(int x, int max) {
      return max / x;
    }
    :-)

  8. #8
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Tu n'affiches rien dans la fonction F11, tu comptes juste, puis tu retournes le compte.

    Breaking news: En C, on a le droit d'avoir des variables de plus d'une lettre.
    Voici un code plus compréhensible:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int CompteMultiples(int valeurMax, int x)
    {
    	int possibleMultiple=1; /* y va de 1 à n*/
    	int nbMultiples=0; /*mon compteur de multiples*/
    	for (possibleMultiple=1 ; possibleMultiple<=valeurMax ; possibleMultiple++)
    	{
    		if (possibleMultiple%x == 0) /*multiples de x ?*/
    			nbMultiples++;
     
    	}
    	return nbMultiples;
    }

    Merci infiniment

  9. #9
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    c'est que tu ai trouver une correction.....je vais apporter une correction a ton programme initiale pour le rendre correcte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int F11(int n, int x)
    {
    int y=1;       /* y va de 1 à n*/ 
    int i=0;       /*mon compteur de multiples*/ 
    for (y=1;y<=n;y++)
        if (y%x==0)    /*multiples de x ?*/
         i++;
    return i;
    }
    les accolades après le for ne sont pas nécessaire par ce que il y a une seul instruction qui est if qui aussi a son na une seul instruction qui est l’incrémentation de i

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Sauf que lorsque la "une seule instruction" fait plusieurs lignes, omettre les accolades ne fait que nuire à la lisibilité du code!
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Membre habitué Avatar de Abacar94
    Homme Profil pro
    L2 Math-informatique
    Inscrit en
    Novembre 2015
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Niger

    Informations professionnelles :
    Activité : L2 Math-informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 103
    Points : 133
    Points
    133
    Par défaut
    c'est vrais mais par ailleurs......l’intéresser est en L1 ce genre de remarque c'est juste pour lui permettre d’avoir une appréhension sur les recommandation et les obligation

  12. #12
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Tu n'affiches rien dans la fonction F11, tu comptes juste, puis tu retournes le compte.

    Breaking news: En C, on a le droit d'avoir des variables de plus d'une lettre.
    Voici un code plus compréhensible:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int CompteMultiples(int valeurMax, int x)
    {
    	int possibleMultiple=1; /* y va de 1 à n*/
    	int nbMultiples=0; /*mon compteur de multiples*/
    	for (possibleMultiple=1 ; possibleMultiple<=valeurMax ; possibleMultiple++)
    	{
    		if (possibleMultiple%x == 0) /*multiples de x ?*/
    			nbMultiples++;
     
    	}
    	return nbMultiples;
    }
    Bonjour,


    De nouveau sur ce sujet ! J'aimerais attirer votre attention sur le fait que l'on déclare au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int possibleMultiple=1;
    et qu'ensuite on re-déclare
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (possibleMultiple=1 ;...)
    Est-il indispensable dans ce cas de préciser au départ que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int possibleMultiple=1;
    ?

    Merci d'avance

  13. #13
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    non tu n'es pas obligé d'initialiser cette variable.

    NB : qu'est-ce qui ne te convient pas dans la solution de stendhal666 (hormis le test sur 0) ?
    Plus je connais de langages, plus j'aime le C.

  14. #14
    Membre à l'essai Avatar de MayaKobayashi
    Femme Profil pro
    Etudiante en 1ère année Licence mention Informatique
    Inscrit en
    Novembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Etudiante en 1ère année Licence mention Informatique

    Informations forums :
    Inscription : Novembre 2015
    Messages : 26
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Salut,

    non tu n'es pas obligé d'initialiser cette variable.

    NB : qu'est-ce qui ne te convient pas dans la solution de stendhal666 (hormis le test sur 0) ?
    Je n'y avait pas prêté attention jusqu'à maintenant ! En effet, c'est la solution la plus simple... !

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo