|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : j'arrive pas a l'expliquer en un mot... [ Divers / Débutant(e) ] (Titof301)
Informations & options pour cette discussion
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
|
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
|
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
|
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é 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
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
Besoin d'aide [ par mayapour ]
Bonjour,Novice en C sous Linux, j'ai besoin de conseil, bout de codes ou tout suggestions.Description: Pseudo remplassant de passwd utilisant un fichi
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|