Pair / impair / ascii

eliot -  
lami20j Messages postés 21644 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

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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
[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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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

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

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

tu as quel âge et quel niveau scolaire?
1
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
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
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
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
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
roro
 
c koi les chifre pair et impair
-1