begin process at 2012 02 12 23:48:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

j'arrive pas a l'expliquer en un mot...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

j'arrive pas a l'expliquer en un mot...

vendredi 4 mai 2007 à 23:21:26 | j'arrive pas a l'expliquer en un mot...

Titof301

Bonjour a tous, j'ai une question probablement bête mais bon (  ). Est-il possible d'utiliser le contenu d'une variable int par exemple à l'intérieur d'un programme pour... hum un exemple serait plus simple...

bool V_0(char[][16], char[][12]), V_1(char[][16], char[][12]), V_2(char[][16], char[][12]),
        V_3(char[][16], char[][12]), V_4(char[][16], char[][12]), V_5(char[][16], char[][12]),
        V_6(char[][16], char[][12]), V_7(char[][16], char[][12]), V_8(char[][16], char[][12]), V_9(char[][16],  char[][12]);
 int extract[10][3] = {{1,10},{12,15},{29,3},{33,5},{39,2},{42,1},{44,3},{48,2},{51,4},{56,7}}, i=0, j=0;
 char donnees[10][16]={'\0'}, temp[16];
 
 for (i=0; i<10; i++)
 {
    extraire_chaine(chaine,extract[i][j],extract[i][j+1],donnees, i);
    cout << donnees[i] << "voir" << endl;
    V_i (donnees, tab_marques);  <======
}

Donc bon j'était en pleine recherche pour raccourcir mon programme, et j'ai penser à sa (et qui pourrais me servir plus tard). En gros, j'ai plusieurs fonction qui ont un nom de type V_0, V_1, V_2, etc, ET à l'intérieur de mon FOR j'utilise le i pour des fonctions. Je voulais savoir si il était possible de faire un seul appel de fonction dans le FOR en se servant de la valeur de mon i (0 à 9) pour qu'elle soit appeler à chaque passage, dans les différentes fonctions? J'ai essayer quelques trucs mais j'arrive pas... alors est-ce possible?

merci d'avance

samedi 5 mai 2007 à 00:08:30 | Re : j'arrive pas a l'expliquer en un mot...

BruNews

Administrateur CodeS-SourceS
Nenni, après compilation une fonction est simplement une adresse donc plus de nom à donner.
Peut se résoudre par un tableau de pointeurs de fonction.

ciao...
BruNews, MVP VC++
samedi 5 mai 2007 à 03:33:33 | Re : j'arrive pas a l'expliquer en un mot...

Titof301

merci beaucoup!!! effectivement avec un tableau de pointeur sa fonctionne nickel

Par contre, j'ai un petit probleme d'un autre ordre.
Je ne comprends pas vraiment pourquoi (ptete la fatigue... lol)... Je veux par exemple convertir un char en int :

bool V_2(char donnees[10][16], int a)
{
if (atoi(donnees[a][0]) == 2)
    return true;
else
    return false;

et il me donne cette erreur :
error C2664: 'atoi' : cannot convert parameter 1 from 'char' to 'const char *'

j'ai déjà utiliser cette fonction (atoi) d'une manière un peu différente, mais là, où est le probleme?
Merci d'avance!
samedi 5 mai 2007 à 08:42:12 | Re : j'arrive pas a l'expliquer en un mot...

gagah1

Membre Club
Si tu veux convertir un char en int , utilises l'operateur cast: (int)donnees[a][0];
La fonction atoi convertit une chaine de caractère càd un tableau de char terminer par un caractère NULL. Si tu veux utiliser atoi , castes comme ceci:
atoi((const char*)donnees[a][0]);
samedi 5 mai 2007 à 10:34:11 | Re : j'arrive pas a l'expliquer en un mot...

emmatopiak

Salut,
Tu peux pas appeler directement V_i comme tu pourrais le faire dans des langages interprétés.

Ce que tu peux faire en C par contre, c'est un tableau de fonctions. La syntaxe va être complètement pourrie par contre.

Tu as des fonctions :
bool V_0(char **, char **);
Un pointeur sur cette fonction s'écrit :
bool (* V)(char **, char **);
Un tableau de pointeurs devrait s'écrire :
bool (* V[10])(char **, char **);

Au pire tu mets deux étoiles avant V plutôt que *V[10], je n'ai pas pu tester. Une fois que c'est fait, il faut initialiser ce tableau en mettant :
V[0] = V_0; V[1] = V_1; ...

Mais je me demandais si le plus simple est pas de faire passer le paramètre i en paramètre aux fonctions V_i ? Parce que le traitement de V_i doit etre dépendant du paramètres i plutot.
Ca devrait être plus simple à faire.

--

atoi ca convertit un char * en int et la tu lui passes un char
 Le plus simple est de faire
 (c-'0') qui va te renvoyer la valeur entière correspondant au chiffre

@++

 

Une autruche ne se cuit pas aux petits lardons.

samedi 5 mai 2007 à 16:37:07 | Re : j'arrive pas a l'expliquer en un mot...

ncoder

Tu n'as qu'à faire
if (atoi(donnees[a]) == 2)

A+
Bonne programmation

                                         Site
samedi 5 mai 2007 à 23:44:59 | Re : j'arrive pas a l'expliquer en un mot...

Titof301

Merci a tous pour votre aide!!
pour le probleme no1 avec les V_i, j'ai réussi grace au tableau de pointeur de fonction.
Ca me donne en gros:
bool (*ptrFonction[])(char[][16], int, char [][12]) = { V_0, V_1, V_2, V_3, V_4, V_5, V_6, V_7, V_8, V_9 };

for (i=0; i<10; i++)
 {
  extraire_chaine(chaine,extract[i][j],extract[i][j+1],donnees, i);
  if (!ptrFonction[i](donnees, i, tab_marques)) cout << donnees[i] << " n'est pas valide!!!" << endl;
 }

Pour le prob no2, bah en ce moment j'ai tester ces 2 la qui marchent :
if ((donnees[a][0] - '0') == 2)      (j'ai lu à quelque part le principe, je crois comprendre en gros...)
if (atoi(donnees[a]) == 2)           (ca marche aussi, mais pourtant donnees[a] contient par exemple 2HN ...comment sa se fait que sa marche quand meme?)

et pour le cast, quand je fait test=int(donnees[a][0]); test contient 53 au lieu de 5 par exemple, je l'utilise mal? Je sais que les autres marchent mais le cast pourrait surement me servir un jour ou l'autre.

samedi 5 mai 2007 à 23:55:29 | Re : j'arrive pas a l'expliquer en un mot...

Titof301

ah pendant que j'y pense, je me demande sa depuis un bout, est-ce qu'il y a un moyen de faire plusieurs comparaisons dans un if par exemple sans devoir retaper l'argument de gauche a chaque fois? du style :

if (atoi(donnees[a]) == 2 || 4 || 5 || 9)

au lieu de : if (atoi(donnees[a]) 2 || atoi(donnees[a]) == 4 || atoi(donnees[a]) == 5 || atoi(donnees[a]) == 9)
dimanche 6 mai 2007 à 00:08:30 | Re : j'arrive pas a l'expliquer en un mot...

emmatopiak

Salut,

Le seul moyen c'est de faire un switch.

switch (atoi(donnees[a])) {
  case 2: case 4: case 5: case 9: printf("truc\n");
}

Une autruche ne se cuit pas aux petits lardons.
dimanche 6 mai 2007 à 00:18:08 | Re : j'arrive pas a l'expliquer en un mot...

BruNews

Administrateur CodeS-SourceS
Si tu es certain qu'il n'y a qu'un chiffre comme dans "2HN" alors la version: octet - '0' est nettement plus performante que atoi().

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : donnees, arrive, possible, char, extract


Répondre à ce message

Sujets en rapport avec ce message

modifier un fichier [ par XorCo ] Voilà le but est que je puisse modifier un fichier .. donc le lire et dès que j'arrive à un char spécifique je dois écrire qqchose.Je suppose que je d prog en C, ecriture puis lecture de donnees de donnees dans un fichier fichier txt [ par 01472583690 ] Salut a tous ! voici mon probleme : Dans mon programme l'utilisateur doit entrer des donnees ( des char (nom, ville .....) , ainsi que des int ( age, cast c++ [ par mnaulet ] Bonjour,Est-il possible de supprimer les erreurs du compilateur sur les cast en c++.J'ai l'erreur suivante lors de l'appel à la fonction suivante :get passage d'un char[] par reference [ par tibob51 ] Bonsoir a tous, j'ai un problème que je n'arrive pas à comprendre.Je programme depuis peu sous dev c++, et j'ai une syntaxe que j'utilisai sous borlan Version de programme sous Visual 97 [ par themaste ] Salut a tous!Voila, je viens de récupérer un vieux programme dont je dois faire des mise à jour. Je dois bosser sous visual studio 97, et je n'arrive envoyer un entier avec send() [ par nostalgius ] Salut tout le monde.. Voilà, tout est dans le titre du poste, j'ai bon cherché, j'arrive pas à envoyer un simple int par la fonction send(), c'est dû Modifier les propriétés des controles boutons (image, texte, couleur, ...) [ par skirby ] Bonjour tout le monde,J'aurais voulu savoir si il était possible de créer des boutons sur lesquels on pourrait :- afficher une icone (depuis un fichie structure [ par logant83 ] bonjoir, enfaite voila j'aimerai pouvoir exploiter une structure mais voila j'i arrive pas. struct connect_nick { //ma structure char pseudo[1000 Pb fichier en C [ par lenneth666 ] alors voilà j'aimerais récupérer les lignes d'un fichier pour les mettre dans un char **pour ensuite trier les lignes de ce fichier. Dc je récupere d conversion [ par nathdiscaz ] Bonjour je voudrais convertir du int en unsigned char tel ke : <span style="color: rgb(1


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,666 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales