Programmation C : qui veut bien me donner un coup de pouce [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011
-
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011
-
salut à tous ...j'aimerais bien qu'on maide à corriger set exercice.
Voici mon code source
[b]
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i, nbre ;

printf("Veuiller saisir un nombre:\n");
scanf("%d",&nbre);
for (i=1 ; i <= nbre ; i++)

if (i % 2 == 0)
printf("%d est un nombre pair\n",i);
printf("-------------------------\n");
if (nbre % i == 0)
printf("%d est un diviseur de %d\n",i,nbre);
printf("-------------------------\n");
if (nbre % i != 0)
printf("%d est un nombre impair\n",nbre);
return 0;
}
/b


Voici le resultat escompté


Donner un nombre positif : 6
------------------------------------
2 est un nombre pair
4 est un nombre pair
6 est un nombre pair
------------------------------------
1 est un nombre impair
3 est un nombre impair
5 est un nombre impair
-------------------------------------
1 est un diviseur de 6
2 est un diviseur de 6
3 est un diviseur de 6
6 est un diviseur de 6


Merci davance

9 réponses

Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

Tu vois que ça n'etait pas si compliqué que ça en avait l'air

Et là, terminado les modulos:

#include <stdio.h> 

int main() 
{ 
  int i, nbre ; 

  printf("Veuiller saisir un nombre:"); 
  scanf("%d",&nbre); 

  printf("-------------------------\n");
  for (i=2 ; i <= nbre ; i+=2)
    printf("%d est un nombre pair\n", i);
 
  printf("-------------------------\n");
  for (i=1 ; i <= nbre ; i+=2)
    printf("%d est un nombre impair\n", i); 

  printf("-------------------------\n"); 
  for (i=1 ; i <= nbre ; i++) 
    if (nbre % i == 0)
      printf("%d est un diviseur de %d\n",i,nbre);

  return 0; 
}


Ton code et le mien donnerons le même résultat mais le mien sera plus rapide.

@++
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,

Voilà une technique pour tester la parité d'un nombre:

#include <stdio.h> 

int main() 
{ 
  int i, nbre ; 

  printf("Veuiller saisir un nombre:"); 
  scanf("%d",&nbre); 

  printf("-------------------------\n");
  for (i=1 ; i <= nbre ; i++)
    if (i & 1 == 0) // pareil que if (!(i&1))
      printf("%d est un nombre pair\n", i);
 
  printf("-------------------------\n");
  for (i=1 ; i <= nbre ; i++)
    if (i & 1 != 0) // pareil que if (i&1)
      printf("%d est un nombre impair\n", i); 

  printf("-------------------------\n"); 
  for (i=1 ; i <= nbre ; i++) 
    if (nbre % i == 0)
      printf("%d est un diviseur de %d\n",i,nbre);

  return 0; 
}



Plus dans l'esprit du tien mais il sera plus rapide aussi.

@++
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011

@patatalo je crois que if (i % 2 = = 0) est meilleur et plus logique que l'incrémentation for (i=2 ; i <= nbre ; i+=2) pour tester la parité !!! ca donne çà

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

int main()
{
int i, nbre ;

printf("Veuiller saisir un nombre:");
scanf("%d",&nbre);
printf("\n");
for (i =1 ; i <= nbre ; i++)
if (i % 2 == 0)
printf("%d est un nombre pair\n",i);

printf("-------------------------\n")
for (i=1 ; i <= nbre ; i++)
if (i % 2 != 0)
printf("%d est un nombre impair\n",i);

printf("-------------------------\n");
for (i=1 ; i <= nbre ; i++)
if (nbre % i == 0)
printf("%d est un diviseur de %d\n",i,nbre);

printf("---------------------------\n");

return 0;
}
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

Avec une seul boucle for, tu ne peux pas afficher:
2 est un nombre pair
avant:
1 est un nombre impair

reflechis encore un peu par toi-même, propose nous un truc plus solide et je te donnerais la solution si tu ne la trouves pas tout seul.

@++
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011

@patatalo pour la première boucle ca marche .j'arrive à afficher les nombre pairs avec nimporte quel nombre entré !mon problème c'est la suite
Messages postés
26
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
8 juillet 2011

Hum, je ne sais pas si c'est "normal" mais, 1 main, 1 boucle for et 3 conditions if pour seulement 2 accolades... C'est pas un peu léger?
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
re,

Commence par ça, déjà, tu seras dans le bon ordre:
#include <stdio.h> 

int main() 
{ 
  int i, nbre ; 

  printf("Veuiller saisir un nombre:\n"); 
  scanf("%d",&nbre); 
  for (i=2 ; i <= nbre ; i+=2) 
    printf("%d est un nombre pair\n",i);
 
  printf("-------------------------\n");
  if (nbre % i != 0)
    printf("%d est un nombre impair\n",nbre); 

  printf("-------------------------\n"); 
  if (nbre % i == 0)
    printf("%d est un diviseur de %d\n",i,nbre);

  return 0; 
}
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011

merci je vais essayer .brb
Messages postés
5
Date d'inscription
mardi 19 avril 2011
Statut
Membre
Dernière intervention
20 avril 2011

çà y est c fait...les gars merci de votre aide precieuse.voici le code

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

int main()
{
int i, nbre ;

printf("Veuiller saisir un nombre:");
scanf("%d",&nbre);
printf("\n");
for (i=2 ; i <= nbre ; i+=2)
printf("%d est un nombre pair\n",i);

printf("-------------------------\n");

for (i=1 ; i <= nbre ; i++)
if (i % 2 != 0)
printf("%d est un nombre impair\n",i);

printf("-------------------------\n");

for (i=1 ; i <= nbre ; i++)
if (nbre % i == 0)
printf("%d est un diviseur de%d\n",i,nbre);

return 0;
}