Pair / impair / ascii
eliot
-
lami20j Messages postés 21506 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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
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
-
euh je n'ai pas très bien saisi , peux tu me donner un exemple avec putchar(a) , car je ne comprends vraiment pas...
-
[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]$ -
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 -
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? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
tu as quel âge et quel niveau scolaire? -
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... -
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 ... -
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. -
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? -
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 ?
-
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. -
#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?-
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/
-
-
#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... -