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 :

Multiples et non multiple


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Multiples et non multiple
    Bonsoir,
    ça fait 4h que je penche sur un exercice. J'en peux plus les amis!!!

    Exo : afficher les multiples de d1 non multiple de d2 sur un intervalle [a,b]

    ex : d1 = 3 d2 = 2 [4,30]

    réponse : 9, 15, 21, 27

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Montres nous tout de même un début de code qu'on puisse voir la réflexion que t'as concernant le problème...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je n'ai pas de code mais j'ai des supposition,

    si d1 et d2 sont(pair et impaire) alors il suffit donc d'afficher les multiples impaire de d1
    si d1 et d2 sont (paire et paire) c'est plus compliquer.

    Je pensais à faire une boucle for

    Tout d'abord je calcule les multiples




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        for(i = 0; d1 * n <= 100; m++) {
            printf("%d\n", n * d1);
    }
     
        for(i = 0; d2 * n <= 100; m++) {
            printf("%d\n", n * d2);
    }
    Ce qui me pose problème c'est le code qu'il faut mettre pour avoir les multiples de d1 non multiple de d2.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    C'est quoi la difficulté
    Ou alors je n'ai pas compris l'énoncé

    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
    tmp_int: entier
    list_multiples: tableau d'entiers
     
    tmp_int = d1;
     
    tant que (tmp_int <= borne_min) faire
        tmp_int = (tmp_int + d1)
    fin tant que
     
     
    tant que (tmp_int <= borne_max) faire
        si ((tmp_int % d2) != 0) faire // Modulo
            list_multiples.ajouter(tmp_int);
        fin si
     
        tmp_int = (tmp_int + d1)
    fin tant que

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse.
    En fait j'aimerais afficher le résultat dans une fonction sans utiliser de tableaux
    Je n'arrive pas à faire en sorte de"afficher les multiples de d1 non multiples de d2"
    Je sais afficher les multiples de 2 nombres certes mais combiner avec la condition du non multiple je galère

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    si d1 et d2 sont(pair et impaire) alors il suffit donc d'afficher les multiples impaire de d1
    si d1 et d2 sont (paire et paire) c'est plus compliquer.
    what ???

    d1 et d2 représente chacun un entier, en l'occurrence dans ton cas, 3 et 2...

    Ton énoncé demande donc sur un ensemble d'entiers entre 4 et 30 de renvoyer tous les éléments multiples de 3 mais non multiples de 2.

    Est-ce plus clair pour toi ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Oui c'est clair, je comprend parfaitement l'exercice mais je n'arrive pas du tout à coder, depuis 16h je fais des exo mais celui la me rend fou

  8. #8
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    En 4h ne pas sortir un minimum de code, ça paraît tout de même surprenant,

    En 5 lignes c'est bâclé !

    La condition est simple pourtant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (n%3 == 0 && n%2 != 0)
        /* suite du code */
    Fait un petit effort !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je travail vraiment, j'ai même des feuilles de brouillons pleins de code si tu veux des preuves lol
    Dans mon printf final comment puis-je isoler les valeurs qui m'intéressent d'une manière générale ?

  10. #10
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Bonjour,

    Citation Envoyé par sounsoun Voir le message
    Je travail vraiment, j'ai même des feuilles de brouillons pleins de code si tu veux des preuves lol
    Dans mon printf final comment puis-je isoler les valeurs qui m'intéressent d'une manière générale ?
    Fred1599 t'a donné la solution, en réalité : l'opérateur « % » est l'opérateur « modulo », c'est-à-dire celui qui te donne le reste de la division. Et les multiples d'un nombre n sont les nombres qui peuvent être divisés par n en conservant un reste nul. De là, tu écris une boucle for, utilisant un indice i, et qui compte de a à b. À chaque tour, tu vérifies si « modulo d1 » est nul et « modulo d2 » est non nul. Si les deux conditions sont vérifiées en même temps, tu écris la valeur de i à l'écran.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    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
    #include <stdio.h>
     
    	int main () {
    	int d1=3,d2=2, i;
     
    	for(i=0; 5<i<=31; i++) {
     
    		if (d1%i == 0 && d2%i != 0) {
     
    			printf("%d\n", i);
     
    			}
    		}
     
     
    return 0;
    }
    J'ai essayer de faire cela mais en message j'ai Exception en point flottant (core dumped)

  12. #12
    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
    Citation Envoyé par sounsoun Voir le message
    Bonsoir,
    ça fait 4h que je penche sur un exercice. J'en peux plus les amis!!!

    Exo : afficher les multiples de d1 non multiple de d2 sur un intervalle [a,b]

    ex : d1 = 3 d2 = 2 [4,30]

    réponse : 9, 15, 21, 27
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <stdio.h>
    main()
    {
    int d1 =3,d2 =2,a=4,b=30,i; /* [a,b] */ 
    for(i = a; i<=b ;i++ ) 
      { if(i%d1==0)
        {if(i%d2!=0)
         printf("%d;",i);
    	}
      }
    }
    J'espère que le code est assez claire mais si ta des question je suis entièrement disposer a répondre

  13. #13
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Il faut revoir le cours sur la boucle for...



    #include <stdio.h>
    main()
    {
    int d1 =3,d2 =2,a=4,b=30,i; /* [a,b] */
    for(i = a; i<=b ;i++ )
    { if(i%d1==0)
    {if(i%d2!=0)
    printf("%d;",i);
    }
    }
    }

    1. Code trop compact
    2. Imbrication des conditions if
    3. Pas d'indication sur le type de retour (voir norme)
    4. Indentation mal choisie


    Tout cela n'aide pas au débutant, donne de mauvaises habitudes et rend le code difficile à lire... Et en plus tu lui donnes la réponse ! La totale.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je ne comprend pas la différence entre if (i%d1 == 0 && i%d2 != 0) et if(d1%i==0 && d2%i==0);

    je sais que a modulo b c'est a = bq+r

    d1 = iq+r
    d2 = iq'+r

    et

    i = qd1+r si r = 0 i = qd1
    i = q'd2r si r = 0 i = q'd2

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci pour vos aide c'est super sympa, j'essaye de faire vos code sur un papier pour comprendre la mécanique

  16. #16
    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
    Citation Envoyé par fred1599 Voir le message
    1. Code trop compact
    2. Imbrication des conditions if
    3. Pas d'indication sur le type de retour (voir norme)
    4. Indentation mal choisie


    Tout cela n'aide pas au débutant, donne de mauvaises habitudes et rend le code difficile à lire... Et en plus tu lui donnes la réponse ! La totale.
    1) & 2) je l'accepte je pouvais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ((i%d1 == 0 )&& (i%d2 != 0))
    3) l’énoncer dit de me stocker les valeur dans un tableau ce qui veut dire que c'est l'affichage qui est demander
    4)c'est un chois libre

  17. #17
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    3) l’énoncer dit de me stocker les valeur dans un tableau ce qui veut dire que c'est l'affichage qui est demander
    J'ai parlé de norme, il n'y a pas le choix, la fonction main renvoie en général un code (0) permettant d'exprimer la bonne fonctionnalité du programme.
    Utilise l'option -Wall de ton compilateur...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Après avoir entrer mes diviseurs d1 et d2 mon programme n'affiche pas les multiples de d1 non multiples de d2

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    #include <stdio.h>
     
    	void bornes(int *a, int *b) {
     
     
    		printf("Fournir un enter a ? ");
    		scanf("%d", a);
     
    	do {
    		printf("Fournir un entier b > %d ", *a);
    		scanf("%d", b);
     
    	} while(*b<=*a);
     
    	printf("\n");	
     
    }
     
     
    	int lire_diviseur(int a, int b) {
    	int c;
     
     
    	do {
    		printf("Fournir un entier d1 <= %d\n", b);
    		scanf(" %d", &c);
     
     
    	} while(c>b);
     
    	do {
    		printf("Fournir un entier d2 <= %d\n", b);
    		scanf(" %d", &c);
     
    	} while(c>b);
     
    	return c;
     
     
    }
     
     
    	void affiche_multiples(int a, int b, int d1, int d2) {
    	int i;
     
    		for(i=a; i<b; i++) {
     
    		if (i%d1 == 0 && i%d2 != 0) {
     
    			printf("%d ", i);
     
    			}
    		}
     
     
    }
     
    int main () {
    int a=0,b=0,d1=0,d2=0;
     
     
    	bornes(&a,&b);
    	d1 = lire_diviseur(a,b);
    	d2 = lire_diviseur(a,b);
    	affiche_multiples(a,b,d1,d2);
     
     
     
     
    return 0;
    }

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    J'ai un problème d'affichage, lorsque j'entre d1, d1 est bien mis dans la variable d1 et mon main.
    Puis lorsque j'entre d2, j'ai toujours " printf("Fournir un entier d1 <= %d\n", b);" j'aimerais remplacer d1 par d2 mais je n'y arrive pas

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Voici une ptit MAJ du programme

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    	#include <stdio.h>
     
    	void bornes(int *a, int *b) {
     
     
    		printf("Fournir un enter a ? ");
    		scanf("%d", a);
     
    	do {
    		printf("Fournir un entier b > %d ", *a);
    		scanf("%d", b);
     
    	} while(*b<=*a);
     
    	printf("\n");	
     
    }
     
     
    	int lire_diviseur(int b) {
    	int c;
     
     
    	do {
    		if(b>0) {
    			printf("Fournir un entier d1 <= %d\n", b);
    			scanf(" %d", &c);
     
    			}
     
    		else  {
     
    			printf("Fournir un entier d2 <= %d\n", b);
    			scanf(" %d", &c);
     
    			}
     
    	} while(c>b);
     
    	return c;
     
     
    }
     
     
    	void affiche_multiples(int a, int b, int d1, int d2) {
    	int i;
     
    		for(i=a; i<=b; i++) {
     
    		if (i%d1 == 0 && i%d2 != 0) {
     
    			printf("%d ", i);
     
    			}
    		}
     
     
    }
     
    int main () {
    int a=0,b=0,d1=0,d2=0;
     
     
    	bornes(&a,&b);
    	d1 = lire_diviseur(b);
    	d2 = lire_diviseur(b);
    	printf("Les multiples de %d non multiples de %d compris entre %d et %d sont : \n", d1,d2,a,b);
    	affiche_multiples(a,b,d1,d2);
     
     
     
     
    return 0;
    }

Discussions similaires

  1. Peut-on rendre des éléments d'une liste multiple déroulante non sélectionnables ?
    Par Florian_mbf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 22/05/2013, 11h53
  2. Split sur une image non multiple de 2
    Par byakuichi dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 29/03/2011, 15h56
  3. Réponses: 6
    Dernier message: 22/08/2008, 16h20
  4. [Performance] Pages multiples ou non ?
    Par Wasrack dans le forum Silverlight
    Réponses: 7
    Dernier message: 18/07/2008, 09h55
  5. Pointeur long et adresse non multiple de 4
    Par _Michel dans le forum C
    Réponses: 5
    Dernier message: 10/12/2007, 13h54

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