Tableau suite...

cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004 - 5 déc. 2003 à 17:20
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 6 déc. 2003 à 02:10
Alors voila ma 2ème question de la journée :-P

J'ai un tableau de caractères 64 position: char Tab[64], un compteur: int inCompter et un tableau de 1 position: char chTemp[1].

Je rentre un nombre, qui peut aller de 1 à 64 positions, dans mon tableau Tab et ensuite en faisant: Tab[inCompter++], je sorts le premier nombre de ce tableau. Ex: je rentre 25 dans mon tableau et j'extrais 2. En suite je veux stocker ce 2 dans mon tableau chTemp de 1 caractère. Mais c'est la que sa coince... Comment faire?

D'avance merci pour vos réponses.

Niníel

22 réponses

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 déc. 2003 à 17:29
Salut,
Chaque octet contient un nombre ?
Pour stocker ton 2 dans ton tableau chTemp:
chTemp[0] = 2;
En remplacement 2 par tab[] avec le bon index.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 17:42
pourqui se compliquer la vie avec:
char chTemp[1];
alors que:
char chTemp; revient rigoureusement au meme.
BruNews, ciao...
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 18:05
C'est vrai que chTemp et chTemp[1] sont égales... Donc vais pas mettre de 1.

Cependant pour la suite je comprends toujours pas! Si je dis: chTemp=Tab[inCompter++]. Tab[inCompter++] va bien me donner le nombre qui est stocké à la première position du tableau (sur 64). Mais cette valaeur ne sera pas transmise à chTemp... Et pourtant c'est ce que je veux faire.

Et pour répondre à la question de aardman, oui j'ai un nombre par position.

Niníel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 18:08
int inCompter = 0;
chTemp = Tab[inCompter++];
mintenant chTemp VAUT Tab[0] et inCompter VAUT 1.
C'est une certitude.
BruNews, ciao...
0

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

Posez votre question
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 18:18
Ok merci.

Niníel
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 21:51
Alors j'ai mon
chTemp = Tab[inCompter++];
Donc si je rentre 789 dans Tab, avec la déclaration ci-dessus chTemp vaut 7. Jusque là, OK.

Maintenant, pour pas faire chier, je veux mettre chTemp dans une variable int qui s'appelle int inNombre. Donc j'ai mis la chose suivante:
inNombre = atoi (chTemp);
Mais le compilateur il est méchant avec moi et il me dis qu'il ne trouve pas la correspondance pout mon truc...

Comme d'hab, je peux que vous remercier d'avance... ;-P

Niníel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 22:02
atoi (char*); un POINTEUR !!! pour atoi et non 8 bits.
BruNews, ciao...
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 22:21
Bon premièrement, une réponse vaut bien un remerciement, donc merci :-D

Alors la sa ce passe mieux avec le pointeur. Cependant, mon compilateur n'est toujours pas contant (quel naze)...

Voila une partie de mon code (si on peut dire...);

int inCompteur;
char Tab[64];
char* chTemp;
int inNombre;
chTemp = Tab[inCompter++];
inNombre = atoi (chTemp);

Bon comme je l'ai déjà dit, j'ai mis un nombre, dison 789 dans Tab. Il est claire que si je met un pointeur sur chTemp, il faudra que je corrige
chTemp = Tab[inCompter++];
en
*chTemp = Tab[inCompter++];
Tout ce passe bien saufe quand je fait un run du prog et qu'il arrive sur ce "truc". Là je reçois une erreur comme quoi sa a provoqué une classe d'exception, violation de l'adresse machin chose (peux importe)...

Pas cool, non!?

Niníel
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 déc. 2003 à 22:24
Salut,
inNombre = (int) chTemp;
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 22:24
Le "truc, c'est *chTemp = Tab[inCompter++];

Niníel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 22:34
au plaisir !!!
que veux tu mettre a l'adresse referencee par un char (8 bits), ne peut pas etre une adresse.
BruNews, ciao...
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 22:36
Oui, oui! De mieux, en mieux! Mais bon comme je suis encore et toujours chiant, ben désolé, mais c'est pas encore ça...

Avec la méthode
inNombre = (int) chTemp;
y'a plsu ce pointeur qui me fait chier, mais bon j'ai 7 qui ce trouve dans chTemp et pis tu sais pas pourquoi, mais il prend 55 dans inNombre...

Niníel
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 déc. 2003 à 22:48
Salut,
55 est la valeur ASCII du caractere '7'. Tout va bien donc.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 22:55
STOP Niníel, tu perds du temps. Faut ouvrir un bouquin de C a ce point. Je peux meme t'en donner si tu es sur Paris.
BruNews, ciao...
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 23:14
Il est certain que je suis bouché à fond et que je me complique surement la vie. Pour les cours de C c'est volontier, mais j'habite en Suisse à 20km de Lausanne; donc c'est rappé...

En faite, je suis un apprenti informaticien de 4ème et dernière année. Evidement vous vous dites que sa fait peur de voir un informaticien qui ne sais pas tapper du code. Ben le code j'en fait parce que je suis obligé d'en faire du fait que c'est ce qu'on nous demande de faire au cours prof. Je débute en C++ (premier contacte début sept. 03) et je n'aime pas du tout ça! Je fais un apprentissage en entreprise et dans l'entreprise ou je boss on fait pas du tout de prog. C'est plutôt intégration réseau.

Pour en revenir à mon "code", ce que je veux faire, c'est une fonction qui converti des nombres d'une basse N à une base décimale.

Ce que je pensais faire c'est prendre le nombre, par exemple 1010 binaire, et le mettre dans un tableau.

En suite lire le premier nombre de ce tableau qui est 1, faire fois la base qui est 2, ce qui donne 1*2 = 2.

Continuer avec le 2 puis ajouter la deuxième position du tableau qui est 0, ce qui donne 2+0 = 2.

Après on refais fois la la base, donc 2*2 = 4.

Et on ajoute à ce 4 la troisième position du tableau, ce qui donne 4+1= 5.
Re fois la base 5*2 10; puis ajout la quatrième position du tableau, 10+0 10!

Voila en claire le merdier que je veux faire. C'est pourquoi je vous fait chier avec mes questions à la con... Je pense que ce que je veux faire est possible, non!?

Niníel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2003 à 23:28
Alors regarde dans les sources, les conversions de bases sont traitees abondamment.
BruNews, ciao...
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
5 déc. 2003 à 23:32
Oui tout à fait; là n'est pas le problème. Le problème est que moi je dois le faire comme sa. Alors je peux pas récupérer ce qui à déjà été fait ,vu que sa n'as jamais été fait de cette manière...

Niníel
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
5 déc. 2003 à 23:56
Salut,
Voila une fonction qui converti le binaire en décimal avec ta technique (interessante et que je ne connais pas!):
Attention, aucun test n'est effectué sur la chaine binaire, donc c'est a toi de verifier qu'elle contient que des 0 et des 1.

unsigned int BinToDec(char * szBin)
{
char * p = szBin;
unsigned int total = 0;
while(*p) {
total <<= 1;
if(*p == '1') total++;
p++;
}
return total;
}
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
6 déc. 2003 à 01:23
Ben voila, c'est une heure du mat, et je viens jeter un coup d'oeil par ici, au cas ou j'aurais une réponse à ma question. Et ben j'ai bien fait. Merci pour ta fonction aardman. Le seul truc c'est que c'est pas forcément de binaire à décimale, plutôt de base N à décimale...

Merci quand même.

Niníel
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
6 déc. 2003 à 01:50
Salut,
Il suffit de changer modifier deux ou trois trucs.
La encore, aucun test sur la chaine.

unsigned int BaseToDec(char * szBase, int base)
{
char * p = szBase;
unsigned int total = 0;
while(*p) {
total *= base;
if(*p <= '9') total += *p - '0';
if(*p >= 'a') total += *p + 10 - 'a';
if(*p >= 'A' && *p <= 'Z') total += *p + 10 - 'A';
p++;
}
return total;
}
0
Rejoignez-nous