Tom's Guide > Forum > Programmation > Est Ce Que Ce Programme est Juste?

Est Ce Que Ce Programme est Juste?

Forum Programmation : Est Ce Que Ce Programme est Juste?

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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??

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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é).

------------------------------ 6800A007B81300CD10B00131C989CF26880541
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
------------------------------ Ahmed Fadhil
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).

Répondre à CRicky

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??

------------------------------ Ahmed Fadhil
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. :)

Répondre à CRicky

ah bon et comment faut il faire alors?

------------------------------ Ahmed Fadhil
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;

------------------------------ 6800A007B81300CD10B00131C989CF26880541
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;

------------------------------ Ahmed Fadhil
Répondre à fadhil_bueno1

Enlève le & dans le printf.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
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?

------------------------------ Ahmed Fadhil
Répondre à fadhil_bueno1

Dev-C++, codeblock, Vicsal C++

------------------------------ 6800A007B81300CD10B00131C989CF26880541
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.

------------------------------ il ne faut jamais juger un livre a sa couverture
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.

Répondre à CRicky

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
------------------------------ Ahmed Fadhil
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.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
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...

------------------------------ Ahmed Fadhil
Répondre à fadhil_bueno1

Montre l'erreur exacte. :)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

dev a ces propre bibliotech nan ? peut etre qu'il faut lui indiquer si il ne les conai pas

------------------------------ il ne faut jamais juger un livre a sa couverture
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
------------------------------ Ahmed Fadhil
Répondre à fadhil_bueno1
Tom's Guide > Forum > Programmation > Est Ce Que Ce Programme est Juste?
Aller à :

Il y a 254 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens