A voir également:
- Nombre parfait
- Nombre facile - Télécharger - Outils professionnels
- Gto nombre episode ✓ - Forum Cinéma / Télé
- Nombre de combinaison possible avec 4 chiffres - Forum Programmation
- GTO saison 2 ? - Forum Cinéma / Télé
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? - Forum VB / VBA
6 réponses
Bonjour,
#include<stdio.h> // appel des librairies entrées/sortie standart dc le printf et le scanf
void main (void) // le premier void =ce que va retourner ton cade à la fin de son execution dc rien et le 2nd void= les
parametres d'entrée de ton programme: rien.
{ int nombre,i, sdiv; // declaration de tes variables que des entiers
//maintenant on passe à la saisie et à l'interface avec l'utilisateur. On veut que l'utilisateur saisisse un nombre entier
printf("\ntapez votre nombrer:");
scanf("%d",&nombre); //le nombre saisie va etre enregistré sous la variable : nombre
.
.
.
jusque là c'est ce que tu as fait donc je t'aprend rien.
je te propose de découper ton programme en 2 idées:
1) faire la boucle pour savoir si ton nombre est premier ou pas.
2) faire la boucle pour la saisie utilisateur
NOMBRE PARFAIT ?
sdiv=0; // unitialisation de la variable sdiv
for (i=(nombre -1);i>0; i--) //permet de verifier tous les multiples de nombre
{
if (nombre%i ==0)
{ sdiv=sdiv+i;} // somme des multiples}
if (nombre==sdiv)
{printf ("%d est un nombre parfait",nombre);}
}
ceci nous dit si le nombre saisie est parfait ou pas mais cela s'applique que pour une seule entrée pour faire ce test sur différent nombre il faut faire une boucle qui engloge la fonction nombre parfait.
2) SAISIE UTILISATEUR
on demande un nombre tanque la valeur saisie est <=500. si tu tape 501 la saisie du nombre s'arrète.
pour celà il suffit de faire une boucle sur la saisie .
while (nombre <= 500)
{
printf("\ntapez votre nombre:");
scanf("%d",&nombre);
}
ok celà marche mais ne nous avance pas plus. Il faut plutot ecrire les choses de cette manière:
printf("\ntapez votre nombre:"); //session d'amorçage initialle du programme
scanf("%d",&nombre);
while (nombre <= 500) //si le premier nombre saisie est inferieur à 500 alors je rentre dans la boucle
{
sdiv=0;
for (i=(nombre -1);i>0; i--)
{
if (nombre%i ==0)
{ sdiv=sdiv+i;}
} //fermeture du FOR
if (nombre==sdiv)
{
printf ("%d est un nombre parfait",nombre);
else
printf ("%d n'est pas un nombre parfait",nombre);
} //fermeture du IF
printf("\ntapez votre nombre:"); //session d'amorçage pour les autres valeurs que va prendre nombre si >500 le
programme prendra fin sinon on calcule de nouveau le sdiv et on verifie si nbr est
parfait ou pas.
scanf("%d",&nombre);
} fermeture du WHILE
printf("\n FIN DU PROGRAMME\n);
}fermeture du MAIN
#include<stdio.h> // appel des librairies entrées/sortie standart dc le printf et le scanf
void main (void) // le premier void =ce que va retourner ton cade à la fin de son execution dc rien et le 2nd void= les
parametres d'entrée de ton programme: rien.
{ int nombre,i, sdiv; // declaration de tes variables que des entiers
//maintenant on passe à la saisie et à l'interface avec l'utilisateur. On veut que l'utilisateur saisisse un nombre entier
printf("\ntapez votre nombrer:");
scanf("%d",&nombre); //le nombre saisie va etre enregistré sous la variable : nombre
.
.
.
jusque là c'est ce que tu as fait donc je t'aprend rien.
je te propose de découper ton programme en 2 idées:
1) faire la boucle pour savoir si ton nombre est premier ou pas.
2) faire la boucle pour la saisie utilisateur
NOMBRE PARFAIT ?
sdiv=0; // unitialisation de la variable sdiv
for (i=(nombre -1);i>0; i--) //permet de verifier tous les multiples de nombre
{
if (nombre%i ==0)
{ sdiv=sdiv+i;} // somme des multiples}
if (nombre==sdiv)
{printf ("%d est un nombre parfait",nombre);}
}
ceci nous dit si le nombre saisie est parfait ou pas mais cela s'applique que pour une seule entrée pour faire ce test sur différent nombre il faut faire une boucle qui engloge la fonction nombre parfait.
2) SAISIE UTILISATEUR
on demande un nombre tanque la valeur saisie est <=500. si tu tape 501 la saisie du nombre s'arrète.
pour celà il suffit de faire une boucle sur la saisie .
while (nombre <= 500)
{
printf("\ntapez votre nombre:");
scanf("%d",&nombre);
}
ok celà marche mais ne nous avance pas plus. Il faut plutot ecrire les choses de cette manière:
printf("\ntapez votre nombre:"); //session d'amorçage initialle du programme
scanf("%d",&nombre);
while (nombre <= 500) //si le premier nombre saisie est inferieur à 500 alors je rentre dans la boucle
{
sdiv=0;
for (i=(nombre -1);i>0; i--)
{
if (nombre%i ==0)
{ sdiv=sdiv+i;}
} //fermeture du FOR
if (nombre==sdiv)
{
printf ("%d est un nombre parfait",nombre);
else
printf ("%d n'est pas un nombre parfait",nombre);
} //fermeture du IF
printf("\ntapez votre nombre:"); //session d'amorçage pour les autres valeurs que va prendre nombre si >500 le
programme prendra fin sinon on calcule de nouveau le sdiv et on verifie si nbr est
parfait ou pas.
scanf("%d",&nombre);
} fermeture du WHILE
printf("\n FIN DU PROGRAMME\n);
}fermeture du MAIN
Bonjour,
tout d'abord mettre un #include<stdlib.h> n'est absolument pas utile puisque les seules fonctions dont tu fais appel sont les fonction standard d'entrée sortie printf et scanf.
Tu as un probleme dans ta boucle de départ. Si tu regarde bien tu demandes à ton programme de faire une boucle tanque nombre<= à 500.
mais peux tu me dires ou vont tous tes chiffres tappés?
ils sont à chaque fois écrasés par la nouvelle valeur que tu entres pour ton nombre.
il n'y a donc pas raison pour l'instant d'y avoir une boucle.
while(div%nombre == 0) fourni aucune information à ton programme car la seule information que prend en compte ton compilateur est l'inscription qui viens après : s=0;
non mais les accolades ça sert à quelque chose quand même§§§
Ton script doit te retourner plains d'erreur il faut le reprendre.
Si tu veux bien je peux te proposer un raisonnement pour savoir ce que doit faire ton programme avant de le créer et tu veras qu'après c'est pure question de syntaxe et un vrai jeu d'enfant.
JE PEUX T'AIDER SI TU VEUX
ps: je pense que si je te donne la réponse sans t'expliqué celà servirais à rien et tu aura rien compris à la programmation en C.
si tu veux que la correction de ton pb fait moi le savoir.
tout d'abord mettre un #include<stdlib.h> n'est absolument pas utile puisque les seules fonctions dont tu fais appel sont les fonction standard d'entrée sortie printf et scanf.
Tu as un probleme dans ta boucle de départ. Si tu regarde bien tu demandes à ton programme de faire une boucle tanque nombre<= à 500.
mais peux tu me dires ou vont tous tes chiffres tappés?
ils sont à chaque fois écrasés par la nouvelle valeur que tu entres pour ton nombre.
il n'y a donc pas raison pour l'instant d'y avoir une boucle.
while(div%nombre == 0) fourni aucune information à ton programme car la seule information que prend en compte ton compilateur est l'inscription qui viens après : s=0;
non mais les accolades ça sert à quelque chose quand même§§§
Ton script doit te retourner plains d'erreur il faut le reprendre.
Si tu veux bien je peux te proposer un raisonnement pour savoir ce que doit faire ton programme avant de le créer et tu veras qu'après c'est pure question de syntaxe et un vrai jeu d'enfant.
JE PEUX T'AIDER SI TU VEUX
ps: je pense que si je te donne la réponse sans t'expliqué celà servirais à rien et tu aura rien compris à la programmation en C.
si tu veux que la correction de ton pb fait moi le savoir.
tarek_dotzero
Messages postés
817
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
12 avril 2022
121
3 nov. 2007 à 10:19
3 nov. 2007 à 10:19
Bonjour,
Si je ne me trompe pas: un nombre parfait = la somme de ses diviseurs (sauf lui même) 6 = 1 + 2 + 3, autrement ce n'est pas la peine de lire la suite:
Comme j'ai dit, si je ne me trompe pas: l'objectif est d'afficher non pas de sauvegarder: donc tu peux:
1. creer une fonction qui cherche tous les diviseurs et les met dans un tableau, et au même temps elle calcule leur somme.
C'est la seule fonction nécessaire: ton programme sera:
Une boucle allant de 1 à 500
pour chaque i: appliquer la fonction
Si i = la_somme
ecrire "%d =",i
une boucle qui ecrit à chaque fois un element de la table et +
L'essentiel, c'est ça le raisonnemment, si tu veux une aide sur le code, il suffit de le demander.
Si je ne me trompe pas: un nombre parfait = la somme de ses diviseurs (sauf lui même) 6 = 1 + 2 + 3, autrement ce n'est pas la peine de lire la suite:
Comme j'ai dit, si je ne me trompe pas: l'objectif est d'afficher non pas de sauvegarder: donc tu peux:
1. creer une fonction qui cherche tous les diviseurs et les met dans un tableau, et au même temps elle calcule leur somme.
C'est la seule fonction nécessaire: ton programme sera:
Une boucle allant de 1 à 500
pour chaque i: appliquer la fonction
Si i = la_somme
ecrire "%d =",i
une boucle qui ecrit à chaque fois un element de la table et +
L'essentiel, c'est ça le raisonnemment, si tu veux une aide sur le code, il suffit de le demander.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
j'essaie de faire qqchose de similaire ds le sens ou je ne verifie pas un seul nombre comme ici
on nous demande de saisir un nombre d'entier... celui ci est pour creer un tableau ou l'usager entrera des nombres pour combler le tableau. ensuite une boucle est necessaire pour calculer si les cases du tableau (une a une) sont des nombres parfaits.
j'ai ce code mais je me suis plante et sais plus quoi faire
#include <stdio.h>
main()
{
// initialisation des variables
int nbrMax; // Nbr d'entiers à saisir
int tableauNbr[nbrMax]; // Tableau pour contenir les nombres entrés par l'usager
int i; // Compteur boucle
int j, k, somme; // variables pour calcul nbr parfait
char condition; // Oui ou Non
// Boucle do ... while, pour ne pas devoir repartir le programme pour chaque calcul
do
{
printf ("Entrez le nombre d'entier (Max 10):\n");
scanf ("%d", &nbrMax);
// boucle pour la saisie des nombres et remplissage le tableau.
for (i = 0; i < nbrMax; i++)
{
scanf ("%d", &tableauNbr[i]);
}
// Calculs pour trouver les nombres parfaits
somme = 0;
for (j = 0; j < nbrMax; j++)
{
for (k = 1; k < tableauNbr[j]; k++)
{
if(tableauNbr[j]%k==0)
{
somme += k;
}
}
// Affichage des resultats
if (somme = tableauNbr[j])
printf("%d est un nombre parfait\n", tableauNbr[j]);
else
printf("%d n'est pas un nombre parfait\n", tableauNbr[j]);
}
// Condition requise pour repartir du début
printf ("\nVoulez vous faire un autre calcul, (o/n)?");
fflush (stdin); // Fonction pour vider stdin
condition = toupper(getchar()); // Capitaliser la letter et soumettre à condition
}
while ( condition == 'O'); // Repartir du début si O
system("pause") ;
}
merci pour l'aide
on nous demande de saisir un nombre d'entier... celui ci est pour creer un tableau ou l'usager entrera des nombres pour combler le tableau. ensuite une boucle est necessaire pour calculer si les cases du tableau (une a une) sont des nombres parfaits.
j'ai ce code mais je me suis plante et sais plus quoi faire
#include <stdio.h>
main()
{
// initialisation des variables
int nbrMax; // Nbr d'entiers à saisir
int tableauNbr[nbrMax]; // Tableau pour contenir les nombres entrés par l'usager
int i; // Compteur boucle
int j, k, somme; // variables pour calcul nbr parfait
char condition; // Oui ou Non
// Boucle do ... while, pour ne pas devoir repartir le programme pour chaque calcul
do
{
printf ("Entrez le nombre d'entier (Max 10):\n");
scanf ("%d", &nbrMax);
// boucle pour la saisie des nombres et remplissage le tableau.
for (i = 0; i < nbrMax; i++)
{
scanf ("%d", &tableauNbr[i]);
}
// Calculs pour trouver les nombres parfaits
somme = 0;
for (j = 0; j < nbrMax; j++)
{
for (k = 1; k < tableauNbr[j]; k++)
{
if(tableauNbr[j]%k==0)
{
somme += k;
}
}
// Affichage des resultats
if (somme = tableauNbr[j])
printf("%d est un nombre parfait\n", tableauNbr[j]);
else
printf("%d n'est pas un nombre parfait\n", tableauNbr[j]);
}
// Condition requise pour repartir du début
printf ("\nVoulez vous faire un autre calcul, (o/n)?");
fflush (stdin); // Fonction pour vider stdin
condition = toupper(getchar()); // Capitaliser la letter et soumettre à condition
}
while ( condition == 'O'); // Repartir du début si O
system("pause") ;
}
merci pour l'aide