Est Ce Que Ce Programme est Juste?
Forum Programmation : Est Ce Que Ce Programme est Juste?
Salut,
dans un controle que j'ai passé il n'ya pas mal de temps j'ai eu comme question: Ecrivez un programme qui calcule et affiche le code ASCII de 3 lettres alphabetiques alors jai ecrit le programme suivant:
#include<stdio.h>
#include<conio.h>
main()
{
int a,b,c;
char X,Y,Z;
printf("entrez la valeur de a:" );
scanf("%d",&a);
printf("entrez la valeur de b:" );
scanf("%d",&b);
printf("entrez la valeur de c:" );
scanf("%d",&c);
X='a';
Y='b';
Z='c';
printf("Le Code ASCII de a est %c\n:",&X);
printf("Le Code ASCII de b est %c\n:",&Y);
printf("Le Code ASCII de c est %c\n:",&Z);
getch();
clrscr();
return 0;
}
Ma Question Est : Est ce que mon programme est juste??
Tu as mis X='a' est équivalent à X=97 puisque 'a'=97.
En fait il fallait mettre X=(char)a; (cast explicite pour éviter le warning, même si ce n'est pas normé).
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
merci d'abord pour ta réponse donc d'aprés toi le programme est injuste c'est ca ,incomplet peut être?
mais il ya un probléme c'est que quand je l'execute et que je rentre une valeur pour a par exemple z il me donne les deux resultats suivants sans que je rentre une valeur pour eu et avec un code ASCII incorrect.
peu etre que le probléme vient du compilateur j'utilise Turbo C++ 1.01
B.S: j'ai un probléme avec ce logiciel il ne reconnais pas mon clavier par exemple j'appuie sur effacer il me donne 8 ou j'appuis sur e j'ai ^D c'est du a quoi??
Message édité par fadhil_bueno1 le 01-12-2008 à 20:34:48
Répondre à fadhil_bueno1
Pour moi il n'est pas juste, car tu ne prend spas en compte ce que l'utilisateur écrit.
Je viens de remarquer que dans le printf, tu as donné l'adresse de la variable, au lieu de la valeur de la variable (il faut enlever le & ). Dans le scanf, il faut mettre le & car comme c'est une variable à modifier, on ne peut pas la modifier en donnant juste une copie de la valeur (avec une copie de l'adresse mémoire, on peut écrire au bon endroit dans la mémoire, c'est-à-dire dans la variable).
ok... je vois l'utilité du é commercial(& ) mais tu sais meme sans il me donne des codes ASCII identiques a chaque reprise peut etre que ca vient de mon compilateur il marche pas bien mais autrement le probléme viens du & si je l'enléve le programme deviendra juste??
Répondre à fadhil_bueno1
Non, ce n'est pas ton compilateur.
C'est ce que j'ai indiqué à mon premier post, c'est dans ton programme que tu mets toujours la même valeur dans X, Y et Z.
ah bon et comment faut il faire alors?
Répondre à fadhil_bueno1
char est un nombre, il te suffit de convertir un nombre entré sur 4 octets (int) en un nombre sur 1 octet (char), donc: X=(char)a;
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ok merci donc c'est bon comme cela:
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a,b,c;
char X,Y,Z;
printf("entrez la valeur de a:" );
scanf("%d",&a);
printf("entrez la valeur de b:" );
scanf("%d",&b);
printf("entrez la valeur de c:" );
scanf("%d",&c);
X=(char)a;
Y=(char)b;
Z=(char)c
printf("Le Code ASCII de a est %c\n:",&X);
printf("Le Code ASCII de b est %c\n:",&Y);
printf("Le Code ASCII de c est %c\n:",&Z);
getch();
return 0;
Répondre à fadhil_bueno1
Enlève le & dans le printf.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ok alors c comme ca:
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a,b,c;
char X,Y,Z;
printf("entrez la valeur de a:" );
scanf("%d",&a);
printf("entrez la valeur de b:" );
scanf("%d",&b);
printf("entrez la valeur de c:" );
scanf("%d",&c);
X=(char)a;
Y=(char)b;
Z=(char)c
printf("Le Code ASCII de a est %c\n:",X);
printf("Le Code ASCII de b est %c\n:",Y);
printf("Le Code ASCII de c est %c\n:",Z);
getch();
return 0;
Ok Merci mais comment l'executer je suis sous Vista Edition Familiale Premium?
Répondre à fadhil_bueno1
Dev-C++, codeblock, Vicsal C++
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
il existe aussi la fonction itoa (integer to ASCII ) enfin elle exite dans lotre sens mais je supose que dans ce sens aussi ca marche.
Répondre à alexandre958
itoa() n'est pas C ANSI (puisqu'un sprintf suffit).
L'inverse est atoi() qui est, lui, C ANSI.
Ces fonctions ne servent pas à l'encodage ASCII, elles servent juste à convertir une valeur binaire en chaine ASCII représentant la valeur, et inversement. Donc ça ne convient pas à ce qu'il fait.
avec DEV C++ j'arrive pas a compiler parcequ'il faut mettre [] au lieu de {} plus autres choses, notre prof nous l'a deconseillé mais est ce que Vicsal C++ est compatible avec vista? si oui,est ce qu'il marche comme TURBO C++ j'aurais besoin d'un compilateur identique
Message édité par fadhil_bueno1 le 15-12-2008 à 22:37:58
Répondre à fadhil_bueno1
non dev-C++ ce sont bien des accolades, et tous ces compilateurs respectent plus ou moins la norme, donc tu ne peux pas avoir de problème de portage pour tes exercices.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
ah bon? pourtant il ne reconnait pas mes accolades il me signale que c'est une erreur, quand je change{ en [ j'ai une erreur et maintenant il ne veut plus rien compiler;un ami m'avait envoyé un programme dont il m'avait affirmé le bon fonctionnement chez moi sous vista avec dev C++ j'ai du mal a le compiler mais alors je n'y arrive pas...
Répondre à fadhil_bueno1
Montre l'erreur exacte.
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
dev a ces propre bibliotech nan ? peut etre qu'il faut lui indiquer si il ne les conai pas
Répondre à alexandre958
#include<stdio.h>
#include<conio.h>
main()
{
int a,b,c;
char X,Y,Z;
printf("entrez la valeur de a:" );
scanf("%d",&a);
printf("entrez la valeur de b:" );
scanf("%d",&b);
printf("entrez la valeur de c:" );
scanf("%d",&c);
X=(char)a;
Y=(char)b;
Z=(char)c;
printf("Le Code ASCII de a est %c\n",X);
printf("Le Code ASCII de b est %c\n",Y);
printf("Le Code ASCII de c est %c\n",Z);
getch();
return 0;
}
tu as raison crickee le programme est juste merci beaucoup, je concluerais alors que ce topic est résolu!
Message édité par fadhil_bueno1 le 21-12-2008 à 20:38:55
Répondre à fadhil_bueno1
Il y a 254 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
