Aide pour realiser un programme

djnerak Messages postés 17 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 2 novembre 2009 - 29 oct. 2009 à 18:46
cs_petitwistiti Messages postés 3 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 8 novembre 2009 - 8 nov. 2009 à 15:19
bonjour j'ai un petit problème je ne vois pas comment je pourrais faire sa , si quelqu'un sait m'aider

entre une suite de caractère comprenant lettre et chiffre la saisie s'arrête après un point , avec cette suite on en affiche une nouvelle en prenant les chiffres comme coefficient de répétition du caractère suivant ex : abc3e ---> abc3eee , fgh23ij-->fgh233iiij. si quelqu'un serait m'aider pour réaliser sa merci d'avance .

24 réponses

cs_petitwistiti Messages postés 3 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 8 novembre 2009
8 nov. 2009 à 10:19
coucou cher confrère lol

je bloque sur la boucle; elle est infinie

pour le moment ça donne ça:

#include <stdio.h>
#include <ctype.h>

int main()
{
char lettre;
int valeur=0, count=1;

printf("\nles entrées se termineront par un point!\n");

lettre=getchar(); /*lettre est ce qu'on frappe au clavier*/

while(lettre!='.')
{
if(isdigit(lettre)) /*si lettre est un chiffre*/
{
putchar(lettre);
valeur=(lettre-'0');
if (lettre==0)
{
lettre=getchar(); /*passe à la lettre suivante*/
lettre=getchar();
}
while(count<valeur)
{
count++;
putchar(lettre); /* Affiche la lettre*/
}
}
else /*si c'est un autre caractère*/
{
putchar(lettre);
lettre=getchar();
}
}


return 0;
}


seulement ca bloque dès le premier chiffre qui est répété ad vitam eternam :(
0
cs_petitwistiti Messages postés 3 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 8 novembre 2009
8 nov. 2009 à 10:22
#include <stdio.h>
#include <ctype.h>

int main()
{
char lettre;
int valeur=0, count=1;

printf("\nles entrées se termineront par un point!\n");

lettre=getchar();           /*lettre est ce qu'on frappe au clavier*/

while(lettre!='.')
{
    if(isdigit(lettre))     /*si lettre est un chiffre*/
        {
        putchar(lettre);
        valeur=(lettre-'0');
            if (lettre==0)
            {
            lettre=getchar();       /*passe à la lettre suivante*/
            lettre=getchar();
            }
        while(count<valeur)
        {
        count++;
        putchar(lettre);    /* Affiche la lettre*/
        }
        }
    else                /*si c'est un autre caractère*/
    {
    putchar(lettre);
    lettre=getchar();
    }
}


return 0;
}


plus lisible comme ça sorry ;)
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 nov. 2009 à 12:11
C'est très inélégant comme solution au problème ! (Inutilement compliqué).
J'ai expliqué la méthode, et ça prend moins de 10 lignes à faire.
(Voir le code en haut de cette page posté par djnerak, il ne manque que la boucle à la place du commentaire).

Sinon dans ton code, si la variable "lettre" est un nombre et qu'elle n'est pas égale à 0, et si count est supérieur à valeur, alors tu ne feras jamais de "getchar()", d'où la boucle infinie.
0
cs_petitwistiti Messages postés 3 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 8 novembre 2009
8 nov. 2009 à 15:19
merci, on va essayer de s'en sortir, le problème c'est qu'on a jamais touché à c'est fonction et que pour notre travail, on nous les a imposer; alors forcement c'est pas facile de s'y retrouver.

Merci pour le coup de main.
0
Rejoignez-nous