Operations arithmétiques sur char en C
Tisiph0n3
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
voila ma question est il possible en C de faire des operations arithmétiques avec des variables de type char ou char *
sans les caster en int, pour etre plus précis voici un exemple schématique:
char var1;
char var2;
char *result;
var1 = '1';
var2 = '2';
*result = var1 +var2;
return (result);
result je veux bien sur que result aie 3 pour valeur et non pas le resultat de l'addition des codes ascii de '1' et de '2'.
Derniere petite precision afin d'eviter les reponses du style:
"
ben t'as qu'a faire int result;
result = (int)var1 + (int)var2;
"
C'est pour un exo je doit pondre une calculatrice a laquelle on peut passer des nombres de taille infinie en argument et ce dans plusieurs bases y compris l'alphabet donc impossible de caster en int.
Merci à vous.
voila ma question est il possible en C de faire des operations arithmétiques avec des variables de type char ou char *
sans les caster en int, pour etre plus précis voici un exemple schématique:
char var1;
char var2;
char *result;
var1 = '1';
var2 = '2';
*result = var1 +var2;
return (result);
result je veux bien sur que result aie 3 pour valeur et non pas le resultat de l'addition des codes ascii de '1' et de '2'.
Derniere petite precision afin d'eviter les reponses du style:
"
ben t'as qu'a faire int result;
result = (int)var1 + (int)var2;
"
C'est pour un exo je doit pondre une calculatrice a laquelle on peut passer des nombres de taille infinie en argument et ce dans plusieurs bases y compris l'alphabet donc impossible de caster en int.
Merci à vous.
A voir également:
- Operations arithmétiques sur char en C
- Coco char - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Opera mini se connecter sur facebook - Forum Opera
- Se connecter à facebook avec opera ✓ - Forum Facebook
- Convertir char en int c ✓ - Forum C
8 réponses
J'oubliais je n'ai le droit d'utiliser que les fonctions que j'ai recodé par exemple je n'ai pas le droit au printf ni au pustr des diverses librairies mais seulement a mon my_putstr, donc oubliez la lib maths
en fait, c est pas possible ce que tu met.
le probleme c est que quand tu vas faire ton addition, sa marchera pas :
'1'+'2' te donnera 99 en int et 63 en hexe ou 'c' en char.
le pb c est donc que tu vas additionner ta table ascii et non tes nombres.
de plus, tu peux pas faire result = (int)var1 + (int)var2, sa te donnera "99" et non '3'. et de toute facon, result est une pointeur char, donc une chaine de characteres, tu devra donc mettre du strcpy avec la librerie string.h
tu dois, je pense, faire :
int a = ((int)var2 - (int)var1);
int b = (a + (int)var1);
char* chaine = b;
strcpy(*resultat, *chaine);
return resultat;
mais je pense que sa sera pas bon au niveau de char* chaine = b...
le probleme c est que quand tu vas faire ton addition, sa marchera pas :
'1'+'2' te donnera 99 en int et 63 en hexe ou 'c' en char.
le pb c est donc que tu vas additionner ta table ascii et non tes nombres.
de plus, tu peux pas faire result = (int)var1 + (int)var2, sa te donnera "99" et non '3'. et de toute facon, result est une pointeur char, donc une chaine de characteres, tu devra donc mettre du strcpy avec la librerie string.h
tu dois, je pense, faire :
int a = ((int)var2 - (int)var1);
int b = (a + (int)var1);
char* chaine = b;
strcpy(*resultat, *chaine);
return resultat;
mais je pense que sa sera pas bon au niveau de char* chaine = b...
"en fait, c est pas possible ce que tu met.
le probleme c est que quand tu vas faire ton addition, sa marchera pas :
'1'+'2' te donnera 99 en int et 63 en hexe ou 'c' en char. "
"pour etre plus précis voici un exemple schématique: "
J'ai dit que ce bout de code était schématique je me doute bien que ça va me donner le resultat de l'addition des codes ascii.
"de plus, tu peux pas faire result = (int)var1 + (int)var2, sa te donnera "99" et non '3'. et de toute facon, result est une pointeur char, donc une chaine de characteres, tu devra donc mettre du strcpy avec la librerie string.h "
Heureusement que j'ai dit que les librairies n'éteient pas autorisées pour cet exo (ni pour aucun autre d'ailleurs).
De plus depuis quand les char * ne peuvent pas contenir qu'un seul caractère?
"
tu dois, je pense, faire :
int a = ((int)var2 - (int)var1);
int b = (a + (int)var1);
char* chaine = b;
strcpy(*resultat, *chaine);
return resultat;
mais je pense que sa sera pas bon au niveau de char* chaine = b..."
Bien sur que non je ne peux pas faire ça ce serait bien trop simple et ça fait longtemps que j'aurais arreté de chercher, je ne peux pas caster les termes de l'expression en int, ça marchera certainnement mais si l'examinateur s'amuse a lui passer une expression du style "13245644532141564653146 * 45647654564156456486" a calculer?
Ou encore s'il lui passe "a*b" (ce qui est censé renvoyer 'a').
le probleme c est que quand tu vas faire ton addition, sa marchera pas :
'1'+'2' te donnera 99 en int et 63 en hexe ou 'c' en char. "
"pour etre plus précis voici un exemple schématique: "
J'ai dit que ce bout de code était schématique je me doute bien que ça va me donner le resultat de l'addition des codes ascii.
"de plus, tu peux pas faire result = (int)var1 + (int)var2, sa te donnera "99" et non '3'. et de toute facon, result est une pointeur char, donc une chaine de characteres, tu devra donc mettre du strcpy avec la librerie string.h "
Heureusement que j'ai dit que les librairies n'éteient pas autorisées pour cet exo (ni pour aucun autre d'ailleurs).
De plus depuis quand les char * ne peuvent pas contenir qu'un seul caractère?
"
tu dois, je pense, faire :
int a = ((int)var2 - (int)var1);
int b = (a + (int)var1);
char* chaine = b;
strcpy(*resultat, *chaine);
return resultat;
mais je pense que sa sera pas bon au niveau de char* chaine = b..."
Bien sur que non je ne peux pas faire ça ce serait bien trop simple et ça fait longtemps que j'aurais arreté de chercher, je ne peux pas caster les termes de l'expression en int, ça marchera certainnement mais si l'examinateur s'amuse a lui passer une expression du style "13245644532141564653146 * 45647654564156456486" a calculer?
Ou encore s'il lui passe "a*b" (ce qui est censé renvoyer 'a').
Salut,
à toi d'adapter
à toi d'adapter
lami20j@debian:~/trash$ cat ccm.c #include <stdio.h> int main() { char var1; char var2; char result; var1 = '1'; var2 = '2'; result = var1 + var2 - 48; printf("resultat = %c\n",result); return 0; } lami20j@debian:~/trash$ gcc ccm.c lami20j@debian:~/trash$ ./a.out resultat = 3
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mmh, oui, tu passe les hexa. c est pas con, en plus je l ai fait y a une semaine.
mais tu aura besoin de strcpy car tu as une chaine de caracteres. et si l examinateur met de chiffres te que 54564135413573125416, alors var1 et var2 seront aussi des chaine de characteres.
mais tu aura besoin de strcpy car tu as une chaine de caracteres. et si l examinateur met de chiffres te que 54564135413573125416, alors var1 et var2 seront aussi des chaine de characteres.