Pair / impair / ascii

eliot -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour , j'aimerais savoir quel est le signe pair ou impair en langage c , mettons si j'ai la variable a et que je veux écrire si a est impair , en C çà donne quoi , a = '?';
autre chose , si je veux que la variable a me représente une lettre , je peux écrire a = 'b'; et ensuite putchar(a); mais j'aimerais déclarer la lettre b par son code ascci , comment faire svp?

merci

14 réponses

  1. eliot
     
    euh je n'ai pas très bien saisi , peux tu me donner un exemple avec putchar(a) , car je ne comprends vraiment pas...
    2
  2. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    [lamitest@localhost bin]$ cat ascii_char.c
    #include <stdio.h>
    
    main()
    {
     char c;
     int i=65; /*code ASCII du la lettre A */
    
     c=i; /* affectation du entier i à une variable caractère */
     putchar(c); /* affiche A */
     putchar('\n');
    }
    [lamitest@localhost bin]$ gcc -o ascii_char ascii_char.c
    [lamitest@localhost bin]$ ./ascii_char
    A
    [lamitest@localhost bin]$
    
    2
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    1.

    Un numéro impaire a la forme

    2k+1 (non divisible avec 2)

    Un numéro paire à la forme

    2k ( divisible avec 2)

    Utilise l'opérateur % (modulo) pour tester le reste de la division d'un entier avec 2

    2.

    Pour obtenir le code ASCII d'un caractère il suffit d'affecter le caractère à une variable entière.

    i=c

    Pour obtenir le caractère qui correspond à un code ASCII il suffit d'affecter l'entier à une variable caractère

    c=i
    1
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,

    Pour les Majuscules

    65 à 90

    Pour les minuscules

    97 à 122

    donc c'est bien +32

    Prenons 2 exemples:

    Code paire
    -----------------------------------------------
    On teste le code ASCII 66qui correspond à B.
    
    Donc en ce cas 66 est paire puisque 66 se divide avec 2. Ou le reste de la division 66 avec 2 égal 0.
    
    la répresentation de 66dans la forme 2k est 2 x 33
    
    En C tu teste le reste avec l'opérateur % (modulo)
    Donc que fait modulo? Il recupere le reste d'une division
    
    i=66
    j=2
    reste=i%j ( en ce cas reste égal 0)
    
    si reste égal 0
    alors paire ->putchar( code +32)   affiche minuscule
    sinon impaire ->putchar(code)  affiche majuscule


    ---------------------------------------------------------------
    Code impaire
    -----------------------------------------------
    On teste le code ASCII 65 qui correspond à A.
    
    Donc en ce cas 65 est impaire puisque 65 ne se divide pas avec 2. Ou le reste de la division 65 avec 2 égal 1.
    
    la répresentation de 65 dans la forme 2k +1 est 2 x 32 +1
    
    En C tu teste le reste avec l'opérateur % (modulo)
    Donc que fait modulo? Il recupere le reste d'une division
    
    i=65
    j=2
    reste=i%j (en ce cas reste égal 1)
    
    si reste différent de 0
    alors impaire ->putchar( code)   affiche majuscules
    sinon paire ->putchar(code+32)  affiche minuscule
    


    Tu crois que c'est clair?
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    tu as quel âge et quel niveau scolaire?
    1
  7. eliot
     
    ok , çà va mieux avec ton exemple , et pour tester si le code d'une lettre est impair ou pair , as tu un indice à me donner ? ( pas de code tout fait stp ) , car en fait moi je veux coder une fonction qui m'affiche l'alphabet en écrivant une lettre en majuscule sur 2 , donc mon algo dans ma tête c'est :

    tant que le code ascii est pair , on affiche en minuscule , si le code est impair on affiche en majuscule ( c'est +32 je crois ) , donc çà c'est clair , mais il me faut un indice pour dire en C : si le code de la lettre est pair , tu me dis 2k + 1 , reste de division différent de 2 , c'est pas clair ans mon esprit...
    0
  8. eliot
     
    je ne comprends vraiment pas "Donc en ce cas 66 est paire puisque 66 se divise avec 2. Ou le reste de la division 66 avec 2 égal 0."

    66%2 = 33 , quel rapport avec le reste = 0 , je suis un peu perdu là , c'est ce putin de pair et impair qui me bloque , et le nombre de variables à déclarer ...
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    66%2 n'est pas égal avec 33 mais avec 0

    Donc 66 % 2 donne le reste de la division du numéro 66 avec 2

    Numéro paire

    C'est un numéro qui se divide par 2. Ou qui est divisible avec 2.

    2 4 6 8

    2 divisé par 2 égal 1 reste 0 ( 2 * 1 = 2)
    4 divisé par 2 égal 2 reste 0 ....
    6 divisé par 2 égal 3 reste 0 .....
    8 divisé par 2 égal 4 reste 0 ( 2 * 4 = 8) donc la forme 2 * k

    Numéro impaire

    C'est un numéro qui ne se divise pas avec 2. Ou qui n'est pas divisible avec 2

    3 5 7 9

    3 divisé par 2 égal 1 reste 1 (2 * 1 + 1 = 3)
    5 divisé par 2 égal 2 reste 1 .......
    7 divisé par 2 égal 3 reste 1 ......
    9 divisé par 2 égal 4 reste 1 (2 * 4 +1 = 9) donc la forme 2 * k +1

    Maintenant tu comprends?

    Donc en ce cas 66 est paire puisque 66 se divise avec 2.

    Ou le reste de la division 66 avec 2 égal 0."

    Le deux affirmations sont vraies.
    0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    En fait si tu as remarqué dans mon message précedent, le reste de la division des numéros avec 2 est :

    0 pour les numéros paires
    et
    1 pour les numéros impaires

    Donc pour tester si un numéro est pair ou impair il faut tester le reste de la division du numéro avec 2.

    Si reste égal 0 alors pair
    Si reste égal 1 alors impair

    Et le reste tu l'obtiens avec l'opérateur %.

    Tu comprends maintenant?
    0
  11. eliot
     
    ben alors je crois que je ne savais pas ce que voulait dire l'opérateur modulo , quand on écrit 100 % 2 , çà donne 50 - 0 ? modulo = résultat + reste? et combien de variables faut il utiliser ?
    0
  12. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    100 % 50 égal 0

    le résultat du modulo c'est le reste de la division

    101 : 50 = 2 reste 1 donc 101 % 50 = 1

    si tu veux

    Numéro = Quotient * Diviseur + Reste

    101 = 2 * 50 + 1 = 100 + 1 = 101

    Reste = Numéro - Diviseur * Quotient

    1 = 101 - 50 * 2 = 101 - 100 = 1

    Le résultat du modulo c'est le reste. Plus clair que ça désolé mais je ne peux pas.
    0
  13. eliot
     
    #include  <stdio.h>
    
    int main()
    
    {
    
    char c = a;
    
    while ( c <= z )
    ++c;
    if ( c % 2 != 0 )
    putchar(c);
    if ( c % 2 = 0 )
    putchar(c+32);
    return 0;
    
    }
    


    qu'est ce qui ne va pas dans ce code?
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Il y a des erreur de syntaxe par exemple

      char c = a;

      il faut écrire

      char c='a';

      Pour while il faut utiliser des accolades pour le bloc d'instructions.

      Pour les tests c'égalité on utilise == et pas = qui correspond à une affectation.

      Donc il faut se documenter un peu avant de commencer la programmation.

      http://c.developpez.com/
      http://membres.lycos.fr/tonysoueid/cour_c/cour_1/
      0
  14. eliot
     
    #include  <stdio.h>
    
    int main()
    
    {
    
    char c = 'a';
    
    while ( c <= ' z' )
    {
    ++c;
    if ( c % 2 != 0 )
    putchar(c);
    if ( c % 2 == 0 )
    putchar(c+32);
    }
    return 0;
    
    }
    
    
    


    quand j'exécute ce code , j'ai cegikmoqsuwy...
    0