DUT-Informatique

Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
DUT-Informatique

Forum d'entraide: DUT informatique de Blagnac

Le Deal du moment : -14%
Apple MacBook Air (2020) 13,3″ Puce Apple M1 ...
Voir le deal
799 €

3 participants

    TP 10 Code Source

    daemon31245
    daemon31245
    Administrateur


    Messages : 67
    Date d'inscription : 14/11/2010

    TP 10 Code Source Empty TP 10 Code Source

    Message  daemon31245 Ven 19 Nov - 21:35

    factSomPrem.cpp
    Code:
    // Ajouter les include nécessaires éventuels



    // Include des fonctions définies dans ce fichier :
    #include "factSomPrem.h"


    /*
        N :    factorielle
        D :    calcul de la factorielle du nombre pNb
        E :    pNb
        S : -
        R :    retourne la factorielle de pN
        Prec :    pNb >= 0
    */

    int factorielle (int pNb)
    {
        int i, result;
       
        result = 1;
        for (i = 1; i <= pNb; i++)
            result = result * i;
        return result ;
    }

    /*
        N :    somNPremiersEntiers
        D :    calcul de la somme des pNbre premiers entiers
        E :    pNbre
        S : -
        R :    retourne la somme des pNbre premiers entiers
        Prec :    pNbre > 0
    */

    int somNPremiersEntiers (int pNbre)
    {
        int i, result;
       
        result = 0;
        for (i = 1; i <= pNbre; i++)
            result = result + i;
        return result ;
    }

    /*
        N : estDiviseur
        D : dit si le nombre pNb1 est diviseur de pNb2
        E : pNb1 pNb2
        S : -
        R : retourne vrai si pNb1 est un diviseur
        Prec : pNb1>0 et pNb2>=0
    */

    bool estDiviseur(int pNb1,int pNb2)
    {
        bool result;
        int reste;
       
        reste = pNb1%pNb2;
        result=true;
    if (reste != 0)
    {
        result=false;
    }   
        return result;
    }

    /*
        N : estPremier
        D : dit si le nombre pNb est premier
        E : pNb
        S : -
        R : retourne vrai si pNb1 est un nombre premier
        Prec : pNb>0
    */

    bool estPremier(int pNb)
    {
        int i;
        bool result,div;
            result=true;
            i=2;
            while((i<=pNb-1) && (result==true))
            {
                div=estDiviseur(pNb,i);
                result= !div;
                i=i+1;
            }
       
            if((pNb==1) || (pNb==0))
        {
            result=false;
        }
        return result;
    }
    // DEFINIR ici les autres fonctions du TP
    factSomPrem.h
    Code:
    // Ces deux lignes sont à conserver
    #ifndef _FACTSOMPREM_H
    #define _FACTSOMPREM_H


    /*
        N :    factorielle
        D :    calcul de la factorielle du nombre pNb
        E :    pNb
        S : -
        R :    retourne la factorielle de pN
        Prec :    pNb >= 0
    */

    int factorielle (int pNb);

    /*
        N :    somNPremiersEntiers
        D :    calcul de la somme des pNbre premiers entiers
        E :    pNbre
        S : -
        R :    retourne la somme des pNbre premiers entiers
        Prec :    pNbre > 0
    */

    int somNPremiersEntiers (int pNbre);


    // DECLARER ici les fonctions du TP
    // (avant le #endif)


    // Template de commentaire de fonction :

    /*
        N : estDiviseur
        D : dit si le nombre pNb1 est diviseur de pNb2
        E : pNb1 pNb2
        S : -
        R : retourne vrai si pNb1 est un diviseur
        Prec : pNb1>0 et pNb2>=0
    */
    bool estDiviseur(int pNb1,int pNb2);
    /*
        N : estPremier
        D : dit si le nombre pNb est premier
        E : pNb
        S : -
        R : retourne vrai si pNb1 est un nombre premier
        Prec : pNb>0
    */
    bool estPremier(int pNb);

    // Cette ligne est à conserver
    #endif
    progPrincipal.cpp
    Code:
    /**************************************
    * Description: Saisie d'un l'intervale
    * et calcule la somme la factorielle pour chaque
    * entier de cette intervalle.
    * Indique si le nombre est premier ou non
    * si il est divisible par 5 ou non.
    **************************************/

    /****************
    Jeux d'essais
    pour [0,7]
    saisir la borne [min] de n
    0
    saisir la borne [max] de n
    7

    Factorielle et somme de 0 : fact: 1, somme: 0
    0 est divisible par : 5
    0 n'est pas premier
    Factorielle et somme de 1 : fact: 1, somme: 1
    1 n'est pas divisible par : 5
    1 n'est pas premier
    Factorielle et somme de 2 : fact: 2, somme: 3
    2 n'est pas divisible par : 5
    2 est premier
    Factorielle et somme de 3 : fact: 6, somme: 6
    3 n'est pas divisible par : 5
    3 est premier
    Factorielle et somme de 4 : fact: 24, somme: 10
    4 n'est pas divisible par : 5
    4 n'est pas premier
    Factorielle et somme de 5 : fact: 120, somme: 15
    5 est divisible par : 5
    5 est premier
    Factorielle et somme de 6 : fact: 720, somme: 21
    6 n'est pas divisible par : 5
    6 n'est pas premier
    Factorielle et somme de 7 : fact: 5040, somme: 28
    7 n'est pas divisible par : 5
    7 est premier Appuyez sur une touche pour continuer...
    **/

    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>


    // Pour utiliser les fonctions du TP
    #include "factSomPrem.h"


    // Commentaire sur l'utilité du programme

    int main(void)
    {
        int nbmin,nb,nbmax,nbf,nbs;
        bool divisible, prem;
        printf("saisir la borne [min] de n \n");
        scanf("%d",&nbmin);
        printf("saisir la borne [max] de n \n");
        scanf("%d",&nbmax);
        if(nbmin>nbmax)
        {
            nb=nbmin;
            nbmin=nbmax;
            nbmax=nb;
        }
        for(nb=nbmin;nb<=nbmax;nb++)
        {
           
            nbf=factorielle(nb);
            nbs=somNPremiersEntiers(nb);
            divisible=estDiviseur(nb,5);
            prem=estPremier(nb);
            printf("\nFactorielle et somme de %d : fact: %d, somme: %d",nb,nbf,nbs);
           
            if (divisible==1)
            {
                printf("\n%d est divisible par : 5 ",nb);
            }
            else
            {
                printf("\n%d n'est pas divisible par : 5 ",nb);
            }   
           
            if (prem==1)
            {
                printf("\n%d est premier ",nb);
            }
            else
            {
                printf("\n%d n'est pas premier ",nb);
            }
        }
       
       
       
        system("PAUSE");
        return 0;
    }
    Cleminou
    Cleminou


    Messages : 14
    Date d'inscription : 15/11/2010

    TP 10 Code Source Empty Re: TP 10 Code Source

    Message  Cleminou Ven 19 Nov - 22:22

    Du coup c'était bien le "&&" du TQ qui merdait elephant
    daemon31245
    daemon31245
    Administrateur


    Messages : 67
    Date d'inscription : 14/11/2010

    TP 10 Code Source Empty Re: TP 10 Code Source

    Message  daemon31245 Ven 19 Nov - 23:18

    Ouép maintenant ça marche impec' par contre pour le tp d'asm c'est bien chaud ^^
    Mathieu
    Mathieu


    Messages : 14
    Date d'inscription : 15/11/2010
    Age : 31

    TP 10 Code Source Empty Re: TP 10 Code Source

    Message  Mathieu Sam 20 Nov - 0:20

    affraid Merci beaucoup !!! cheers
    (j'vais essayer de le faire seul quand même ^^')

    Contenu sponsorisé


    TP 10 Code Source Empty Re: TP 10 Code Source

    Message  Contenu sponsorisé


      La date/heure actuelle est Dim 19 Mai - 18:13