Ils n'ont pas de noms, pas de num�ros, ils sont exactement comme je l'ai pr�sent� quelques posts au dessus, les ";" �tant les s�parateurs.Envoy� par Trap D
Ils n'ont pas de noms, pas de num�ros, ils sont exactement comme je l'ai pr�sent� quelques posts au dessus, les ";" �tant les s�parateurs.Envoy� par Trap D
C'est pas beauEnvoy� par ronan99999
Je pr�f�re:
Et un switch est une bonne solution je pense...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 piVar = (int*) calloc(SIZE,sizeof(int)); if(!piVar ) return -1; /*traitement*/ return 0;
Si tu as un d�but de code � nous montrer (un bout � traiter et un bout de code impl�menter sur le traitement...)
ce que je ferais (mais bon en soft il existe n solutions pour le mm pb) :
Une fonction de traitement qui prend en parametres l'indice du champ, et qui applique le formatage d�sir� :
Et une fonction qui d�termine l'indice du champ (en supposant que taille = nb max de champ):
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 <....> switch (indice) { case 1 : traitement 1 case 2 : traitement 2 .... }
La difficult� �tant comment je sais que je r�alise indice++ ou indice+=2...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 indice = 0; while (indice<taille) { /*on détermine si indice est incrémenté de 1 ou de plus (si champ =2) */ traitement(indice) }
Mais ca tu dois savoir le faire, m�me pour les goto.
Ta base de donn�es est bien organis�e en articles (des "lignes") comportant des champs s�par�s par des ";" non ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
"Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, �a vous changera les id�es !
Ma page Prolog
Mes codes sources comment�s
Mon avatar : La Madeleine � la veilleuse de Georges de La Tour
Ben voil� une id�e qu'elle est bonne, je crois que je vais partir l� dessus... (mince j'ai presque honte, c'est idiot en fait... pourquoi j'ai dit "presque"?). Au temps pour moi. Je m'en vais dormir un peu ce soir, on dirait que plusieurs mois de suite � r�cup�rer des fichiers �a me r�ussit pas. bon ben merci � tous pour votre participation active, et � jack69 qui a la palme de la pertinence.Envoy� par jack69
Pour faire �cho, ils peuvent (et pas doivent, attention !) �tre carr�ment cruciaux, notamment lorsque le langage ne supporte pas le concept d'exceptions !!!Envoy� par gege2061
C'est imp�ratif, par exemple, pour r�aliser une simili-clause "Try..Finally" en C.
Apr�s, c'est comme tout : c'est "dangereux" � utiliser parceque l'on peut arriver � peu pr�s n'importe o�, que l'on ne peut pas "transf�rer" de variables au passage (sauf "globales" au bloc courant), et que le source est assez illisible. Ce n'est pas plus risqu� que d'utiliser malloc ou fopen sans tester le r�sultat, mais je d�conseille formellement aux d�butants de s'amuser � tripatouiller le goto sans auparavant ma�triser les structures habituelles.
Le probl�me r�el du goto en C n'est pas le nommage des �tiquettes (because la port�e est r�duite), mais plut�t le fait de se planter sur la position de l'�tiquette elle-m�me... En g�n�ral, une ligne trop bas ou une ligne trop haut...
ulukahio : J'ai rarement vu un algorithme requ�rir imp�rativement des sauts inconditionnels, m�me � bas niveau (ASM), � l'exception notable de la gestion des erreurs. Et le source n'a jamais �t� significativement plus court (ni le code plus rapide) avec des goto...
Je suis plus enclin � penser que tu as un probl�me de conception, �ventuellement au cran imm�diatement sup�rieur de ton programme. Au vu de l'exemple que tu as fourni, �a me semble �tre un b�te analyseur lexical plut�t simple � impl�menter (parser + machine � �tat), j'avoue ne m�me pas comprendre o� tu pourrais bien mettre des "goto" l�-dedans... Mais tu ne nous as pas tout dit non plus, comme ce qu'il faut faire ensuite de ces champs (stockage en structure ? Texte ? Requ�te SQL ?)...
Toutefois, si tu n'as pas de notions de syntaxe/s�mantique/traduction, alors effectivement, c'est normal que tu "patauges" un peu sur l'algo � choisir...
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
Oui mais le probl�me �tait qu'il n'y avait pas le m�me nombre de ";" � chaque ligne, vu que si les champs n'�taient pas remplis, dans la bse on ne retrouvait pas un champ vide, mais pas de champ du tout.Envoy� par Trap D
Euh, ne t'emballe pas trop au sujet de ma pertinence. Ma solution est certainement une usine � gaz.
Mais bon, elle est surement mieux que des goto.
N'oublies pas le tag r�solu si tu es satisfait....
Je crois que tu viens de mettre le doigt sur quelque chose d'important, En gros je n'en ai jamais entendu parler, et on m'a balanc� des fichiers � r�cup�rerToutefois, si tu n'as pas de notions de syntaxe/s�mantique/traduction, alors effectivement, c'est normal que tu "patauges" un peu sur l'algo � choisir...
Et c'est fait pour le tag, mais jack, ta solution est effectivement plus claire que la mienne, m�me si c'est �galement une usine � gaz. ( de toutes fa�on, vu le nombre de champ �a v a �tre difficile pour un d�butant de faire un truc tip top et qui marche)
Une simple remarque, tu n'as pas �t� tr�s gat� par la personne qui t'a donn� les fichiers � r�cup�rer, car ne rien mettre du tout quand les champs sont vides c'est un peu dur pour un traitement de base de donn�es![]()
Je ne suis pas du tout expert en la mati�re mais �a me parait fort.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
"Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, �a vous changera les id�es !
Ma page Prolog
Mes codes sources comment�s
Mon avatar : La Madeleine � la veilleuse de Georges de La Tour
Tu peux faire une fonction de traitement pour chaque champ et les regrouper dans un tableau et ensuite appeler la fonction correspondantes au num�ro du champ, �a �vite le switch :
par exemple :
Appel par TabFonc[numero_champ - 1]();
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int fn_champ1(void) { puts("champ 1"); return 1; } int fn_champ2(void) { puts("champ 2"); return 2; } typedef int (*MyFonc)(void); MyFonc TabFonc[] = {fn_champ1, fn_champ2, ......};
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
"Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, �a vous changera les id�es !
Ma page Prolog
Mes codes sources comment�s
Mon avatar : La Madeleine � la veilleuse de Georges de La Tour
C'est ce que je me dis �galementEnvoy� par Trap D
. Quand j'ai dis � mon patron que certains champs n'�taient pas l�, il voulait que j'arr�te de travailler dessus.. Mais bon j'aime pas rester sur un �chec alors j'ai continu� comme un mulet
. Mais je pense que je vais y arriver, et je pense que gr�ce � vous des gens pourront comprendre ce que j'ai �crit
.
Mais bon c'est pas pire que la premiere base de donn�es que j'ai du analyser, (la premi�re fois que je voyais une base de donn�es de ma vie haha), avec des champs crypt�s, pas de s�parateurs, des champs de taille variable... Une vraie horreur celle l� aussi. Enfin on s'�gare.
Sinon Mac LAK est ce que tu aurais par hasard un site ou je pourrai trouver des infos sur les analyseurs lexicaux? Pour l'instant sur google je trouve que des trucs pas terribles.
� tous les "Pros" du goto !!![]()
1 - Je vous souhaite de ne pas avoir � debugger un programme truff� de ces petites betes![]()
2 - personnellement je n'ai jamais eu , plus pr�cisement , j'ai toujours pris soint d'�viter le moindre goto dans mes programmes .
3 - Avec l'experience , je peux vous assurer que cette fa�on de proceder est la meilleur qui soit.
Pour en terminer avec �a, je pense que l'organisation de ton prog doit �tre � peu pr�s comme �a :
Pas besoin de goto
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 while ((ligne = obtention_prochain_article()) != NULL) { init_traitement_article(); while ((num_champ = obtention_prochain_champ()) != -1) traitement_champ(num_champ); }![]()
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
"Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, �a vous changera les id�es !
Ma page Prolog
Mes codes sources comment�s
Mon avatar : La Madeleine � la veilleuse de Georges de La Tour
En principe, on utilise pas de goto. Il y a des exceptions, comme �ventuellement le cas que tu d�cris, mais il fait tomber dans le raisonnement 'par saut' (if goto) qui s'oppose au raisonnement par 'action conditionelle' (if else) qui est la base de programmation structur�e. C'est donc la porte ouverte � la spaghettisation du code, et franchement je ne le conseille pas. Montre un exemple de ce que tu veux faire.Envoy� par ulukahio
Si tu dois vraiment utiliser des goto, il est une regle absolue � ne pas briser (je ne sais plus si elle est de Knuth ou de Dijskra) : un goto est toujours descendant (autrement dit, on ne fait pas de boucles avec un goto).
En tout cas, c'est toujours un sujet passion�...
http://www.acm.org/classics/oct95/
http://www.fortranlib.com/gotoless.htm
etc.
Un goto remontant ? Tu as m�rit� le double trempage :Envoy� par calogerogigante
- Dans un bain de miel liquide
- Dans une bassine de fourmis rouges.
Bonne nuit.
Que penser de l'instruction continue alors?Si tu dois vraiment utiliser des goto, il est une regle absolue � ne pas briser (je ne sais plus si elle est de Knuth ou de Dijskra) : un goto est toujours descendant (autrement dit, on ne fait pas de boucles avec un goto).
(et qu'est ce que vous entendez par spaghettisation?)
Tu veux dire 'rapidement', parce que '�l�gamment', si, un flag suffit en g�n�ral (genre "j'ai trouv�", ou pointeur NULL etc.). Il suffit d'ajouter le testbdans la condition de sortie de la boucle. Comme �a, au moins c'est centralis�...Envoy� par HRS
Les courts circuits sauvages qui oublient de lib�rer les ressources, je pr�f�re �viter dans le code courant.
Par contre, je veux bien utiliser des goto dans du code extr�mement critique en temps d'ex�cution, en prenant d'extr�mes pr�cautions...
Envoy� par mat.M
Voir ici, l'article est d'ailleurs tr�s int�ressant.Dijkstra observed that the quality of a programmer's code was inversely proportional to the number of gotos the programmer used
Derni�re trouvaille :
trouv�e iciin 1974.B�hm and Jacopini first proved theoretically that GOTO was unnecessary
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
"Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, �a vous changera les id�es !
Ma page Prolog
Mes codes sources comment�s
Mon avatar : La Madeleine � la veilleuse de Georges de La Tour
Meuh ?Envoy� par ronan99999
2 returns, c'est un de trop...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 { int ret = 0; int *piVar = calloc (SIZE, sizeof *piVar); if (piVar != NULL ) { /* traitement */ } else { ret = -1; } return ret; }
Partager