Tableau de caractere et d entier

Ethan75 Messages postés 2 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 15 janvier 2003 - 14 janv. 2003 à 22:37
gregotu Messages postés 6 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 août 2006 - 22 août 2006 à 16:40
Bonjour à tous,

je me heurte a un probleme en C, je prend en entrée en parametre un tableau du style ((-2,0)(4,5)(10,-34).....)
et je souhaiterais à partir de ce tableau de caractere stocker dasn un seul tableau tous mes valeurs numeriques afin d obtenir qq chose du genre tab[1]-> -2 , tab[2]->0 ,tab[3]->4 et ainsi de suite, si qq un pouvait m'aider ca serait tres gentil.Merci d 'avance, et bravo pour ce site :)

3 réponses

Ethan75 Messages postés 2 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 15 janvier 2003
15 janv. 2003 à 07:55
-------------------------------
Réponse au message :
-------------------------------

> Bonjour à tous,
>
> je me heurte a un probleme en C, je prend en entrée en parametre un tableau du style ((-2,0)(4,5)(10,-34).....)
> et je souhaiterais à partir de ce tableau de caractere stocker dasn un seul tableau tous mes valeurs numeriques afin d obtenir qq chose du genre tab[1]-> -2 , tab[2]->0 ,tab[3]->4 et ainsi de suite, si qq un pouvait m'aider ca serait tres gentil.Merci d 'avance, et bravo pour ce site :)

voilà le debut du prog, mais bcp d erreurs a la compil que je ne sais coment regler.....

char traite_tab(char tab[])
{

int longueurtab,i,j;
j=0;
longueurtab=strlen(tab);
int letab2[150];
char chaine[20]="";

for(i=0 ; i < longueurtab ; i++)
{
if (tab[i] == '1')
{
while (tab[i] != ')' && tab[i] != ',')
{
chaine=chaine+tab[i];//pb
i++;
}
letab2[j]=int(chaine);//pb
j++;

}

//a faire pour les autres valeurs numerik
if (tab[i] == '-')
{
while (tab[i] != ')' && tab[i] != ',')
{
chaine=chaine+tab[i];//pb
i++;
}
letab2[j]=int(chaine);//pb
j++;

}

}
return letab2;
}
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
26 janv. 2003 à 16:34
Ton problème concerne le langage C et non pas C# !
Je te suggère de mieux viser la prochaine fois.

voici néanmoins une réponse
Si j'ai bien compris, tu as une chaine de caractère de la forme suivante :
"((-2,0)(4,5)(10,-34).....)"
et tu veux obtenir un tableau d'entiers
tab[0]=-2, tab[1]=0, etc...

utilise la fonction strtok , par exemple comme ceci :

#include
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

int * traite_tabChar(char tab[])
{//forme (i1,i2),(i3,i4)...
int* letab2 = new int[strlen(tab)];// à peu près

char separateurs[] = ",()";
char *token;
//parser les valeurs
int i=0;
token = strtok(tab, separateurs);
while( token != NULL )
{ //convertir token en entier
letab2[i++]=atoi(token);
token = strtok( NULL, separateurs );
}
return letab2;
}

int main()
{
char tabChar[] = "(1,2),(3,4),(5,6)";
int * pTab = traite_tabChar(tabChar);
i=0;
while (i++<6)
cout<< *pTab++ << " " ;
cout << endl;
return 0;
}
0
gregotu Messages postés 6 Date d'inscription mercredi 15 mars 2006 Statut Membre Dernière intervention 22 août 2006
22 août 2006 à 16:40
Bonjour,


je suis en train de coder un logiciel de communication industrielle.


A un moment de la communication, on doit construire des trames en lisant des infos dans un buffer d'émission. Lorsqu'une trame est remplie (ce sont des trames série- limitées à 255 oct), on doit pointer sur une trame suivante. (ci-dessous, constructeur de la classe trame)


public trame(
Byte[] buffemis,
Byte[] RackT,
ushort ConnexionT,
int   numbloc)  ;                               
 //les arguments du constructeurs sont des attributs propres à la classe


Mon problème est que pour construire la trame suivante, je dois remplir le champ message, mais en lisant le "buffemis" à partir d'un offset ( "buffemis + taille_trame")



trame
nxt =

new



trame
(buffer_emission + taille_trame

, Rack_, Connexion_, num_bloc + 1);

Or la notation "buffer_emission <type Byte[ ] > + taille_trame <type int>" est incorrecte pour le C#.
Quelqu'un serait-il en mesure de m'aider pour ce petit problème de syntaxe?
D'avance merci, et bravo au webmaster.
0
Rejoignez-nous