Boucle infini pas normale

salut

mon probleme c’est que quand je rentre une lettre il fait une boucle infinie alors que normalement il devrait faire sortir et afficher oups.
que faire
ps: je debute

#include <conio.h>
#include <stdio.h>

void main (void){

int nbr;

printf("entrer un caractere chiffre");
scanf ("%d",&nbr);

while ((nbr<‘a’) || (nbr>‘z’)){

printf("test");
scanf ("%d",&nbr); }

printf("oups");
getch();}


int nbr;

    printf("entrer un caractere chiffre");
    scanf ("%d",&nbr);
    while ( (nbr < 'a') && (nbr>'z') )
    {
       printf("test");
       scanf ("%d",&nbr); 
    }
    printf("oups");

:neutre:

euh

désolé mais chez moi ca ne marche pas
il met oups a tout les coup j’ai changé tes && par des || mais alros ca fait des boucle infinie

Tu veux juste savoir s’il a tapé une lettre de a à z, c’est ça ?

je veux quand je tape des chiffre il mete test
et que quand je tape des lettre de a à z il mette oupss

Dans ce cas :


unsigned char nbr;

    printf("entrer un caractere chiffre");
    scanf ("%c",&nbr);
    printf("\n");
    printf("%s", isalpha(nbr) ? "lettre" : "chiffre");

isalpha il ne reconnait pas je travail avec borland

mais ca m’a l’air bien complexe peut etre que je n’ai asp encore vu cette chose.

merci quand meme

pour isalpha il faut inclure ctype.h

c’est une fonction qui te renvoie qqch, après karlkox nous a pondu un code de qualité mais peu lisible pour un débutant. il utilise l’opérateur ternaire ‘?’ pour traiter la valeur de retour de la fonction isalpha().
ex : condition ? valeur retourné si vrai : valeur retourné si fausse

euh ué mais là je comprend pas grand chose.
a partir de ce que j’ai ecrit moi meme n’y a t’il moyen d’arriver a ce que je veux faire??

merci


int my_isdigit(const int c)
{
    return ((unsigned)c - '0') <= 9; 
}

int my_isalpha(const int c)
{
  return ( (c>=97) && (c<=122) || (c>=65) && (c<=90) );
}

int main(void)
{

unsigned char nbr;

   printf("entrer un caractere chiffre");
   scanf ("%c",&nbr);
   printf("\n");
   printf("%s", my_isalpha(nbr) ? "lettre" : "chiffre"); 

Devrait être assez explicite :slight_smile:

ok merci

c sympas de te donenr tout se mal mais je ne comprend pas grand chose.
je suis debutant. mais en parament c ptet moi qui veux essayer de fair un truc compliqué. je ne sais pas. on c ptet pas metre des codition facilement alphabétique quand on gere du numérique.

merci quand meme

ah si je comprend bien tu lui dit d’aller voir dans le code ascii

quand tu ecrits

nt my_isalpha(const int c)
{
return ( (c>=97) && (c<=122) || (c>=65) && (c<=90) );

enfin bon c pas grave

youpie j’ai trouvé mon erreur.

#include <conio.h>
#include <stdio.h>

void main (void){

char nbr;

printf(“entrer un caractere chiffre “);
scanf (”%c”,&nbr);
fflush(stdin);
while (nbr<‘a’ || nbr>‘z’)
{
printf(“test :”);
scanf ("%c",&nbr);
fflush(stdin);
}
printf(“oups”);
getch();}

n’empeche je vois pas pourquoi tu as a fais tout ce que tu faisais alors que moi comme ca, ca fonctionne. ptet que tu n’avais pas compris ce que je voulais. il

En effet, j’avais mal compris ton problème, je ne savais pas qu’il s’agissait plus d’un problème d’affichage qu’autre chose.
A noter que ton code ne devrait pas retourner vraie si la lettre est en majuscule :wink:

oui je le sais

merci quand meme d’avoir penser a me le dire