Probleme de C

Fermé
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010 - 6 déc. 2008 à 16:34
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010 - 19 janv. 2009 à 20:17
Bonjour,
Bonjour,
G un problem avec un programme et dont je n'arrive pas a trouver la solution, je suis debutant en C, et notre prof nous a donné un assignmenta faire, le prob est comme suit: " "write a program that reads an integer and determines and prints how many digits in the integer are 7s."
le probleme en francais est: ecrivez en language C un programme qui scanne un nombre entré, et determine combien de 7 sont dans ce nombre, 127737 a trois 7, 122756 en a 1, 1377 en a deux. le probleme c que je ne sait pas exactement comment savoir le nombre de chiffre dans le nombre entré, est ce un 10 chiffre, 9, 8; ou moins ou plus. aidez moi et merci:). voici ce que g pu faire pour 5 chiffre dans le nombre. j'attend vos reponses et merci

#include <stdio.h>
int main()
{
int number, numCopy, factor = 10000, digit, sevens = 0;;

printf( "Enter a 5-digit number: " );
scanf( "%d", &number );

numCopy = number;

while ( factor >= 1 )
{
digit = numCopy / factor;
if ( digit == 7 )
++sevens;
numCopy %= factor;
factor /= 10;
}

printf( "The number %ld has %d seven(s) in it\n", number, sevens );

return 0;
}

Configuration: Windows XP
Firefox 3.0.4

9 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
6 déc. 2008 à 16:43
Salut,
Tu devrais inverser l'algorithme.
Je veux dire que tu fais modulo 10 pour récupérer les unités (si c'est un 7, t'augmentes le compteur). Ensuite tu divises le nombre par facteur, et tu divises le nombre par 10 pour la prochaine itération. Et tu fais ceci tant que le nombre est supérieur à 1.
Cdlt
0
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010
6 déc. 2008 à 16:46
mais comment savoir si le num est comosé de 1à chiffres, ou de deux chiffres ou meme de 15 chiffres. j'arriverai pas a l'inclure dans le loop:S.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
6 déc. 2008 à 16:50
Comme je t'ai dit, tu n'as pas besoin de savoir si tu inverses ton algorithme.
Tu divises par 10 le nombre défini par l'utilisateur tant qu'il est supérieur à 1. Et pour récupérer le dernier chiffre, tu utilises le modulo 10.
0
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010
6 déc. 2008 à 16:53
mm d'accord :), je crois que j'ai compris, je devrais pas aussi faire un while avec le facteur > num, comme ça s'arrete une fois c plus grand n'est ce as:). merc mon ami.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010
6 déc. 2008 à 17:00
est ce que tu peux m'aider en m'ecrivant le prog, car j'ai rien compris dans tout ca:s. et mon algorithme foire sur ce que tu as dit:S. je veux dire la partie du while:S
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
6 déc. 2008 à 17:03
Je t'écris la partie algorithmique :
input(nb);
compteur<- 0;
TantQue(nb>0) Faire
    Si nb % 10  == 7 Alors 
        compteur=compteur+1 
    FinSi
    nb = nb/10;
FinTantQue

Cdlt
0
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010
6 déc. 2008 à 17:22
Merci mon ami, tu es vraiment fort :). tu m'as sauvé la vie :D
0
Voilà une version qui cherche l'apparition d'un nombre saisi au clavier :


#include<stdio.h>
main()
{
      int nb,i=0,c;
      printf("saisir le nombre ");
      scanf("%d",&nb);
      printf("saisir le nombre a rechercher ");
      scanf("%d",&c);
      while(nb>0)
      {
      if(nb%10==c)
      i++;
      nb=nb/10;
      }
      printf("le nombre de %d sont %d",c,i);
      getchar();
      getchar();
      }
0
MrMan2009 Messages postés 28 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 15 février 2010
19 janv. 2009 à 20:17
Bonjour j'ai un probleme avec des exercices de C, voila on me demande d'utiliser un array de 2à nombre, j'entre moi meme les nombre, et le program devrait m'imprimer les chiffres qui n'ont pas ete entré deux fois. pour monsieur Lamij, je n'offense personne, j'ai juste dit ce que je pensais, et ce que je crois me parler plutot gentiment aurai ete siympa de ta part:). on ne se chamaille pas ici. je vien juste demander de l'aide. et c comme ça qu'on m'aide.
le deuxieme program me demande de changer la forme de la date de de 12/12/2009 a 12 decembre 2009, je pense que je devrai utiliser strings mais j'en ai aucune idée apropos des strings. alors s'il vous plait aidez moi. j'en ai vraiment besoin.
0