Rechercher : dans
Par :

Exercice c (divisible)

Dernière réponse le 15 oct 2007 à 23:07:25 léo, le 14 oct 2007 à 13:57:04 
 Signaler ce message aux modérateurs

Bonjour,
comment faire pour écrire un programme qui affiche si un nombre est divisible par 2,3,4,5,6,7,8,9.
merci

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « exercice c (divisible) » dans :
Vérifier si un nombre entier est un nombre premier en C VoirDéfinition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Langage C++ - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Instructions arithmétiques et logiques en assembleur VoirLes instructions arithmétiques et logiques sont effectuées par l'unité arithmétique et logique. Il s'agit d'opérations directement effectuées sur les bits de la donnée que l'on traite. Sont comprises dans cette appellation : les instructions...

1

arth, le 14 oct 2007 à 14:00:54
  • +2

Tous les nombres sont divisibles par 2,3,4,5,6,7,8,9 enfin sauf si tu parles en nombre divisible sans reste.

Il y a un truc tout bête en C, mais ca fait longtemps que j'ai plus fait, qui te permet de récupérer le reste de la division, et si il est nul c'est que c'est divisible sinon c'est que ca ne l'est pas. Le loup, solitaire et mystérieux.

Répondre à arth

2

Papou93, le 14 oct 2007 à 15:01:06

Bonjour,

En VisualBasic, VBA, et d'autres langages probablement, la méthode est :

Dividende Mod Diviseur

Cette méthode donne le reste de la division de Dividende par Diviseur. Si ce reste est égal à 0, on considère alors que le nombre représenté par Dividende est divisible par le nombre représenté par diviseur. Il suffit donc d'insérer ce test dans le programme.

Ex : If 10 Mod 2 = 0 then ....

Cordialement.

Répondre à Papou93

3

dubcek, le 14 oct 2007 à 15:03:53

Utiliser le modulo (%) :

Répondre à dubcek

4

arth, le 14 oct 2007 à 15:13:01

C'est ca le modulo !!! Merci dub :) Le loup, solitaire et mystérieux.

Répondre à arth

5

léo, le 14 oct 2007 à 18:04:51

Voila ce que j'ai fait mais ça ne marche toujours pas aidez moi svp

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

void main (void)


{

int a;
printf("entrez le nombre:");
scanf("%d",&a);

if (2%a == 0) && (3%a == 0)

{ printf("le nombre est divisible par deux et trois");
}
else

if (4%a == 0)
{ printf("le nombre est divisible par quatre");
}
else

if (5%a == 0)
{ printf("le nombre est divisible par cinq");
}

else

if (6%a == 0)
{ printf("le nombre est divisible par six");
}

else


if (7%a == 0)
{ printf("le nombre est divisible par sept");
}

else

if (8%a == 0)
{ printf("le nombre est divisible par huit");
}

else

if (9%a == 0)
{ printf("le nombre est divisible par neuf");
}

else
{ printf("il n'est pas divisible par les nombre de 1 a 9");
}






}

Répondre à léo

6

arth, le 14 oct 2007 à 18:47:51

Déjà ce que tu souhaites récupérer, c'est si le nombre rentré, donc a, est divisible par 2,3,4,etc.

Prenons ce que tu as fait :

if(8%a ==0) ==>ici le reste qui sortira du modulo viendra de la division de 8 par a, et non pas de a par 8.

donc déjà pour tout nombre par lequel tu veux diviser a, il te faut mettre a%x où x représnte le nombre que tu veux, 2 ,3,4,5, etc...

Ensuite le deuxième problème vient de ta boucle else : lorsque tu fais le if, si la condition placée entre parenthèses est fausse, il passe à la suivante avec le else nous sommes d'accord.

Cependant, si la condition du else if est vrai, il ne continuera pas plus loin !!! par exemple si on rentre comme nombre 24, qui est divisible par deux, trois et quatre,6 et 8, lorsqu'il fera la boucle "else if (a%4==0)" et comme cela est vrai, alors il ne continuera pas à tester avec 5,6,7,8,9. Donc tu vas louper des nombres !!!

Voici le code que je te propose :

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

int main (void)
{
int a;
bool existe=false;

printf("entrez le nombre:");
scanf("%d",&a);

while(a==0)
{
printf("veuillez entrez un nombre superieur a 0\n");
scanf("%d",&a);
}

if (((a%2) == 0) && ((3%a) == 0))
{
printf("le nombre est divisible par deux et trois");
existe = true;
}

if (a%2 == 0)
{ printf("le nombre est divisible par deux\n");
existe = true;
}

if (a%3 == 0)
{ printf("le nombre est divisible par trois\n");
existe = true;
}

if (a%4 == 0)
{ printf("le nombre est divisible par quatre\n");
existe = true;
}

if (a%5 == 0)
{ printf("le nombre est divisible par cinq\n");
existe = true;
}

if (a%6 == 0)
{ printf("le nombre est divisible par six\n");
existe = true;
}

if (a%7 == 0)
{ printf("le nombre est divisible par sept\n");
existe = true;
}

if (a%8 == 0)
{ printf("le nombre est divisible par huit\n");
existe = true;
}

if (a%9 == 0)
{ printf("le nombre est divisible par neuf\n");
existe = true;
}

if(!existe)
{ printf("il n'est pas divisible par les nombre de 2 a 9\n");
}
system("PAUSE");
}


Dans ce code j'ai donc inversé les nombres et a dans le modulo, pour qu'un premier problème soit résolu, que 'lon ait le reste de la division de a par le nombre et pas l'inverse.

Ensuite au départ j'ai rajouté une boucle while, que tu peux supprimé bien sur, mais cela évite que lutilisateur qui rentre 0 fasse planter le programme.

A la fin du programme j'ai rajouté system("PAUSE"); pour que celui-ci se mette en pause jusqu'a ce que tu appuies sur une touche.

La nouveauté vient de la variable "existe", que j'ai rajouté, car le "else" à la fin de ton code pour dire que ce n'est pas divisible n'était plus bon.

Cette variable est par défaut mise à "faux" (false). Ensuite, lorsque le programme test le nombre "a" avec chaque nombre à diviser, si la division est bonne alors il met la variable "existe" à "vrai" (existe=true).

Ensuite toute à la fin tu as la boucle (if(!existe)) qui te dira si le nombre "a" n'est pas divisible. En effet le "if(!existe)" signifie que si "existe" est à "faux" et donc que le nombre a entré est non divisible, la boucle s'exécute.

Note : Par opposition,si le test était if(existe), cela signifierait que si la variable existe était placée à "vraie", alors la boucle s'exécuterait.

Dis moi si tu as un truc que tu ne comprends pas.

Loup.
Le loup, solitaire et mystérieux.

Répondre à arth

33

 nissrine21, le 15 oct 2007 à 23:07:25

Bonjour,pleaze vous pouvez me donner la solution de cet éxercice.
voila le problème,
écrire une fonction qui calcul la somme S de 2 entiers positifs a et b

en utilisant la formule d addition donné par S = a+b

en utilisant un algorithme récursif basé sur les faits suivants:si a = 0,alors S =b:sib=0 alors S = a:si a et b sont tous les deux nn nuls.alors S =un ajouté à la somme de a avec (b-1)

en utilisant un algorithme récusif basé sur les faits suivants :si a =0 ,alors S =b;si b=0;alors S=a: si aet b sont tous les deux nn nuls ,alors S= un ajouté à la somme de max (a,b) avec min (a,b)-1. Ici min (a,b) désigne le minimum entre a et b et max(a,b)le maximum entre aet b.

la question est la suivante:
Tester cette fonction en écrivant un programme qui lit les valeurs de a et b,puis calcul leur sommeS. merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii­iiiiiiiiiiiiiiii beaucoupppppppppppppppppppppppppppppp ,je t attendddddddd ok impatiemment

Répondre à nissrine21

7

just1xpa2, le 14 oct 2007 à 19:09:13

Bonjour,
81 divisible par 2 3 4 5 6 7 8 9
oui oui
1 0 1 1 1 1 1 0

cellule a1 saisie du nombre a verifie ici "81"
cellule B1" divisible par" C1 "2" D1 "3" jusqu'a "9" en J1


cellule C2=SI(C3=1;" ";SI(C3=0;"oui";))
cellule D2=SI(D3=1;" ";SI(D3=0;"oui";)) aindsi de suite jusqu'a cellule J2
cellule C3=(NBCAR((A1/2))-NBCAR(SUBSTITUE((A1/2);",";)))/NBCAR(",")
cellule D3=(NBCAR((A1/3))-NBCAR(SUBSTITUE((A1/3);",";)))/NBCAR(",")
cellule E3=(NBCAR((A1/4))-NBCAR(SUBSTITUE((A1/4);",";)))/NBCAR(",")
cellule F3=(NBCAR((A1/5))-NBCAR(SUBSTITUE((A1/5);",";)))/NBCAR(",")
cellule G3=(NBCAR((A1/6))-NBCAR(SUBSTITUE((A1/6);",";)))/NBCAR(",")
cellule H3=(NBCAR((A1/7))-NBCAR(SUBSTITUE((A1/7);",";)))/NBCAR(",")
cellule I3=(NBCAR((A1/8))-NBCAR(SUBSTITUE((A1/8);",";)))/NBCAR(",")
cellule J3=(NBCAR((A1/9))-NBCAR(SUBSTITUE((A1/9);",";)))/NBCAR(",")

tu peux mettre en blanc l'ecriture de la ligne 3 afin de ne rien voir

et voila en base d'excel tu mets n'importe quel chiffre en A1 et tu a le resultat voulue,
Quand la base est saine, ceux qui interviennent derrière toi sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

8

arth, le 14 oct 2007 à 19:12:04

"81 divisible par 2 3 4 5 6 7 8 9 " => euh tusors ca d'ou toi? Le loup, solitaire et mystérieux.

Répondre à arth

9

just1xpa2, le 14 oct 2007 à 19:25:53

81 divisible par 3 et 9 , tout le monde le sait
bonsoir arth je harengs saur cela de mon ordinateur bien sur, c'est un tableau excel en copie coller ,donc ici tout se decale, mais pas grave, il suffit de lire la suite et de faire des copier coller des formules dans les bonnes cases, et voila, simple, un peu tordu , mais dont on comprend le fonctionnement bien expliquer ici,
on peut même ameliorer un affichant le resultat entier des cellules valides, si on le desire... mais non demandé ici
bonne amusement ...
Quand la base est saine, ceux qui interviennent derrière toi­ sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

10

sfel, le 14 oct 2007 à 19:52:26
  • +1

Bonsoir

vous aimez ecrire vous

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

int main (void)
{
int a, i;
bool existe=false;

printf("entrez le nombre:");
scanf("%d",&a);

while(a<0)
{
	printf("veuillez entrez un nombre superieur a 0\n");
	scanf("%d",&a);
}

if (((a%2) == 0) && ((3%a) == 0))
{
	printf("le nombre est divisible par deux et trois");
	existe = true;
}

for(i=2 ; i<=9 ; i++)
	if (a%i == 0)
	{
		printf("le nombre est divisible par %d \n", i);
		existe = true;
	}

if(!existe)
	printf("il n'est pas divisible par les nombre de 2 a 9\n");

system("PAUSE");
}
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

11

just1xpa2, le 14 oct 2007 à 19:56:43

Mais ca ,je sais pas encore faire, donc....je propose ce que je sais qui fonctionne, a coup sur, tout le monde, n'a pas le niveau de certain, qui le pratique toute la journée, et ce depuis leur plus tendre enfance, c'est comme le vélo, tout s'apprend dans l'ordre, se tenir debout, marcher,ensuite apprendre a monter sur un velo, tenir l'equilibre , pedaler, ... etc Quand la base est saine, ceux qui interviennent derrière toi­ sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

12

arth, le 14 oct 2007 à 20:07:47

Non Just1xpa2 tu fais bien de proposer :)

oui oui jaime bien me voir écrire y en a bien qui aime s'écouter parler :) Le loup, solitaire et mystérieux.

Répondre à arth

13

just1xpa2, le 14 oct 2007 à 20:11:01

Tu vois , ton charabia, eh bien ,j'ai rien compris, a l'inverse, le mien tu peux le realiser sur le logiciel.;; bonne soirée, c'est pour me passer le temps, comme je suis seul, et le temps passe plus vitte ainsi, on aide et on fait plaisir en plus Quand la base est saine, ceux qui interviennent derrière toi­ sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

14

arth, le 14 oct 2007 à 20:13:30

Bah figure toi que j'ai relu j'ai rrien compris non plus mdrrrr :) Le loup, solitaire et mystérieux.

Répondre à arth

17

just1xpa2, le 14 oct 2007 à 20:29:23

Bonjour,
TABLEAU OBTENU PAR LA MANIPULATION DECRITE CI-DESSOUS
81 divisible par 2 3 4 5 6 7 8 9
oui oui
1 0 1 1 1 1 1 0

MANIPULATION A FAIRE DANS LES CELLULES

cellule a1 saisie du nombre a verifie ici "81"
cellule B1" divisible par" C1 "2" D1 "3" jusqu'a "9" en J1
cellule C2=SI(C3=1;" ";SI(C3=0;"oui";))
cellule D2=SI(D3=1;" ";SI(D3=0;"oui";)) aindsi de suite jusqu'a cellule J2
cellule C3=(NBCAR((A1/2))-NBCAR(SUBSTITUE((A1/2);",";)))/NBCAR(",")
cellule D3=(NBCAR((A1/3))-NBCAR(SUBSTITUE((A1/3);",";)))/NBCAR(",")
cellule E3=(NBCAR((A1/4))-NBCAR(SUBSTITUE((A1/4);",";)))/NBCAR(",")
cellule F3=(NBCAR((A1/5))-NBCAR(SUBSTITUE((A1/5);",";)))/NBCAR(",")
cellule G3=(NBCAR((A1/6))-NBCAR(SUBSTITUE((A1/6);",";)))/NBCAR(",")
cellule H3=(NBCAR((A1/7))-NBCAR(SUBSTITUE((A1/7);",";)))/NBCAR(",")
cellule I3=(NBCAR((A1/8))-NBCAR(SUBSTITUE((A1/8);",";)))/NBCAR(",")
cellule J3=(NBCAR((A1/9))-NBCAR(SUBSTITUE((A1/9);",";)))/NBCAR(",")

tu peux mettre en blanc l'ecriture de la ligne 3 afin de ne rien voir


CE QUI DONNE LE RESULTAT SUIVANT
81 divise par 3 oui
81divisé par 9 oui
les autres cases sont vides....

et voila en base d'excel tu mets n'importe quel chiffre en A1 et tu a le resultat voulue, Quand la base est saine, ceux qui interviennent derrière toi sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

15

sfel, le 14 oct 2007 à 20:14:08

Bon oki je m'incline sniff ^^
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

16

sfel, le 14 oct 2007 à 20:15:27

De quoi ma partie ??

j'ai juste modifier ca

for(i=2 ; i<=9 ; i++)
	if (a%i == 0)
	{
		printf("le nombre est divisible par %d \n", i);
		existe = true;
	}


ca permet de tout faire en allant de 2 à 9
L'ennemi est bête : il croît que c'est nous l'ennemi, alors que c'est lui !
GLOUGLOU ...

Répondre à sfel

18

Le Pingou, le 14 oct 2007 à 20:42:31

--
Salutations.
Jean-Pierre

Répondre à Le Pingou

19

Vaucluse, le 14 oct 2007 à 20:52:53
  • +1

Bonsoir
Bien modestement:
en A1 nombre à diviser
en B1 diviseur
En C1=ARRONDI(A1/B1;0)
En D1=A1/B1
En E1=SI(C1=D1;"OUI";"NON")
Ca n'est pas un programme amis ça donne quand même le résultat
BCRDLMNT
Science sans conscience n'est que ruine de l'Ame

Répondre à Vaucluse

20

Le Pingou, le 14 oct 2007 à 21:07:02

Bonsoir Vaucluse,
Bravo, pour moi c'est le plus simple et en plus efficace.
Cette suite de fonctions répond exactement à la demande du demandeur ormis que ce n'est pas un programme. Salutations.
Jean-Pierre

Répondre à Le Pingou

25

just1xpa2, le 15 oct 2007 à 06:51:04

Ca marche , mais ca oblige a 2 saisie et en plus, cela ne te dit que pour le diviseur choisis, et pas pour l'ensemble de la table 2,3,4,5,6,7,8,9

voulu par le demandeur le demandeur

c'est bien quand même... bonne journée Quand la base est saine, ceux qui interviennent derrière toi­ sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

26

eriiic, le 15 oct 2007 à 07:42:05

Bonjour,

Si on se soucie du demandeur c'est un exercice en C qu'il veut traiter
eric

Répondre à eriiic

21

arth, le 14 oct 2007 à 21:23:46

Donc on peut dire que ca ne répond pas à la demande du demandeur? bon ok je sors ^^ :) Le loup, solitaire et mystérieux.

Répondre à arth