Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1958 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Suivante
Auteur Sujet :

Je ne comprends pas trop...

n°1586408
MEI
|DarthPingoo(tm)|
Posté le 13-07-2007 à 20:49:04  profilanswer
 

Reprise du message précédent :
le C++ fait les deux ca tombe bien. :o


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
mood
Publicité
Posté le 13-07-2007 à 20:49:04  profilanswer
 

n°1586497
deadalnix
Posté le 14-07-2007 à 02:37:19  profilanswer
 

oui et non, du fait de certainnes de ses proprietées, des optimisation ne sont plus possibles.
 
Qui plus est, il gere pas la memoire tout seul de facon autonome sans passer par des astuces genre pointeurs intelligents.

n°1586544
MagicBuzz
Posté le 14-07-2007 à 14:35:48  profilanswer
 

Désolé de venir repolluer ce topic...
 
Vous avez parlé l'autre jour des transtypages automatiques en C vers le type le plus gros (ce qui est contradictoire avec d'autres langages comme le C# où ce n'est pas toujours le cas).
 
Ici, je suis en C++ (à moins que la partie du code ne soit pas encore modifiée, et du coup c'est encore du C, désolé si je me plante, je sais pas faire la différence ;))
 
Est-ce que j'ai le droit de faire ça ?
 

Code :
  1. byte val1 = <une valeur>;
  2. byte val2 = <une valeur>;
  3. uint16 val3 = val1 * val2; // cas 1 = calculs
  4.  
  5. if (val3 > val1 && val2 == val2) // cas 2 = comparaison (je veux que ça se comporte comme si les variables avaient le même type)
  6. {
  7. ...
  8. }


 
=> Est-ce que val3 va prendre la valeur sur 16 bits de la multiplication de val1 et val2 sur 16 bits, ou si je vais me retrouver avec une valeur tronquée, ou pire, une exception ?
 
Voici le code en question :

Code :
  1. Money GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, CargoID cargo_type)
  2. {
  3.     const CargoSpec *cs = GetCargo(cargo_type);
  4.     byte f;
  5.     /* If playing with daylength correction, then take in account the real transit_days */
  6.     uint16 new_transit_days = (_patches.daylength_correction) ? transit_days * _patches.daylength_multiplier : transit_days;
  7.  
  8.     /* Use callback to calculate cargo profit, if available */
  9.     if (HASBIT(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) {
  10.         uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (new_transit_days << 24);
  11.         uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs);
  12.         if (callback != CALLBACK_FAILED) {
  13.             int result = GB(callback, 0, 14);
  14.  
  15.             /* Simulate a 15 bit signed value */
  16.             if (HASBIT(callback, 14)) result = 0x4000 - result;
  17.  
  18.             /* "The result should be a signed multiplier that gets multiplied
  19.              * by the amount of cargo moved and the price factor, then gets
  20.              * divided by 8192." */
  21.             return result * num_pieces * _cargo_payment_rates[cargo_type] / 8192;
  22.         }
  23.     }
  24.  
  25.     /* zero the distance if it's the bank and very short transport. */
  26.     if (_opt.landscape == LT_TEMPERATE && cs->label == 'VALU' && dist < 10)
  27.         dist = 0;
  28.  
  29.     f = 255;
  30.     if (new_transit_days > cs->transit_days[0]) {
  31.         new_transit_days -= cs->transit_days[0];
  32.         f -= new_transit_days;
  33.  
  34.         if (new_transit_days > cs->transit_days[1]) {
  35.             new_transit_days -= cs->transit_days[1];
  36.  
  37.             if (f < new_transit_days) {
  38.                 f = 0;
  39.             } else {
  40.                 f -= new_transit_days;
  41.             }
  42.         }
  43.     }
  44.     if (f < 31) f = 31;
  45.  
  46.     /* If playing with daylength correction, then take in account the fact we do more transports */
  47.     int64 new_value;
  48.     if (_patches.daylength_correction)
  49.         new_value = BIGMULSS(dist * f * num_pieces, _cargo_payment_rates[cargo_type], 21) / _patches.daylength_multiplier;
  50.     else
  51.         new_value = BIGMULSS(dist * f * num_pieces, _cargo_payment_rates[cargo_type], 21);
  52.     return new_value;
  53. }


 
J'ai rajouté le "new_transit_days" (afin de remplacer l'ancienne valeur de "transit_days", ainsi que le "new_value";
 
_patches.daylength_multiplier est de type byte
 
Est-ce que ça va marcher comme escompter ?
 
Sinon, comment faire un transtypage implicite ?
 
uint16 val3 = (uint16)val1 * (unit16)val2; ??


Message édité par MagicBuzz le 14-07-2007 à 14:38:16
n°1586547
MagicBuzz
Posté le 14-07-2007 à 14:47:17  profilanswer
 

D'après mes tests, y'a une couille qui flotte dans la soupe, parceque si j'active le patch, j'ai plus de revenus :D
 
A moins que ça ne me retroune 0, mais ça m'étonne... Avec un daylength_multiplier = 30 si les revenus sont de 30 ou plus en mode "normal", je devrais avoir 1... Mais là j'ai 0 on dirait :(
 
Hmmm... Etrange en fait.
 
Si je colle un daylength de 10, alors j'ai bien 90 qui devient 10 (en plus il fait ça... ha ! pigé, je suis en FF, et les FF c'est Money * 10 à l'affichage :) 9/10 = 1 mais 9/30 = 0 :ange:
 
Bon, ben en fait je suis débile (on n'en doutait plus).
 
Pas besoin de passer par un unit16, puisque si mes journées durent 30 fois plus de temps, alors mes trajets durerons 30 fois moins de temps. Donc aucun problème pour multiplier la durée par 30...
 
A une exception près : en réalité, le jeu arrête de compter les journées lorsque la durée dépasse 255, qui correspond à la fois à la taille de byte, mais aussi au paiement minimum des transports. Du coup, je peux quand même avoir un dépassement... Corrigé simplement en collant un "min(255, val1 * val2)".
 
J'aime bien faire des posts totalement inutiles et réfléchir après la compilation -qui prend 3 plombes en plus :o- :D

Message cité 1 fois
Message édité par MagicBuzz le 14-07-2007 à 15:28:33
n°1586596
Trap D
Posté le 14-07-2007 à 18:20:46  profilanswer
 

MagicBuzz a écrit :

J'aime bien faire des posts totalement inutiles et réfléchir après la compilation -qui prend 3 plombes en plus :o- :D

Ben si t'es content [:beckaman007]

n°1586632
bjone
Insert booze to continue
Posté le 14-07-2007 à 22:07:35  profilanswer
 

pourquoi uint16 ? tu bosses sur un 286 ?
 
reste en int tout le long, sauf quand tu lis depuis un buffer.

n°1586702
++fab
victime du syndrome IH
Posté le 15-07-2007 à 14:03:07  profilanswer
 

deadalnix a écrit :

oui et non, du fait de certainnes de ses proprietées, des optimisation ne sont plus possibles.


Comme ?
 

deadalnix a écrit :

Qui plus est, il gere pas la memoire tout seul de facon autonome sans passer par des astuces genre pointeurs intelligents.


?

n°1586705
deadalnix
Posté le 15-07-2007 à 14:40:47  profilanswer
 

++fab a écrit :


Comme ?
 


 
La surcharge des operateurs par exemple. Le compilo peut plus prevoir ses optimisation habituelles sur les operations.
 


 
malloc et free ca se pratique toujours en C++ . Pour avoir une gestion de la memoire automatique, il faut biaser.
 
Qui plus est, melanger du haut et du bas niveau dans le meme code, c'est vraiment pas conseillé.Plus on a d'outils, plus on a de chances de ne pas utiliser le bon outils. C'est ca le revers de C++ .
 
Pour les pointeurs intelligents : http://c.developpez.com/faq/cpp/?p [...] telligents

n°1586760
bjone
Insert booze to continue
Posté le 15-07-2007 à 20:36:34  profilanswer
 

oui mais tout avoir d'automatique sans contrôle c'est pas toujours un avantage.
 
l'avantage c'est d'avoir le choix, et le C++ est pas mal pour ça.

n°1586810
MagicBuzz
Posté le 16-07-2007 à 00:29:08  profilanswer
 

bjone a écrit :

pourquoi uint16 ? tu bosses sur un 286 ?
 
reste en int tout le long, sauf quand tu lis depuis un buffer.


Effectivement, ici le uint16 n'avait aucun intérêt.
A la base j'étais parti sur ce type car je pensais avoir besoin de le stocker ensuite en mémoire dans une struct donc le nombre d'occurence peut atteindre plusieurs centaines de milliers (5000 véhicules de chacun des 4 types, et pour chacun des types de cargaisons -actuellement limité à 8, mais dont la limite va sauter avec un patch à venir permettant d'utiliser de nouveaux types d'industries, donc potentiellement au moins 256 types de cargo différents puisque j'imagine que le type de cargo sera stocké dans un byte -contre actuellement 3 bits d'un flag partagé-)
 
Mais bon, finalement je suis retourné au type byte, puisque de toute façon les valeurs > 255 ne m'intéressent pas, car le jeu ne fait pas de différence dans le prix de transport des cargaisons dépassé cette valeur :)
 


Index: src/economy.cpp
===================================================================
--- src/economy.cpp (revision 10550)
+++ src/economy.cpp (working copy)
@@ -1169,10 +1177,12 @@
 {
  const CargoSpec *cs = GetCargo(cargo_type);
  byte f;
+ /* If playing with daylength correction, then take in account the real transit_days */
+ byte new_transit_days = min(transit_days * EconomyMultiplier(), 0xFF);
 
  /* Use callback to calculate cargo profit, if available */
  if (HASBIT(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) {
-  uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (transit_days << 24);
+  uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (new_transit_days << 24);
   uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs);
   if (callback != CALLBACK_FAILED) {
    int result = GB(callback, 0, 14);
@@ -1192,23 +1202,29 @@
   dist = 0;
 
  f = 255;
- if (transit_days > cs->transit_days[0]) {
-  transit_days -= cs->transit_days[0];
-  f -= transit_days;
+ if (new_transit_days > cs->transit_days[0]) {
+  new_transit_days -= cs->transit_days[0];
+  f -= new_transit_days;
 
-  if (transit_days > cs->transit_days[1]) {
-   transit_days -= cs->transit_days[1];
+  if (new_transit_days > cs->transit_days[1]) {
+   new_transit_days -= cs->transit_days[1];
 
-   if (f < transit_days) {
+   if (f < new_transit_days) {
     f = 0;
    } else {
-    f -= transit_days;
+    f -= new_transit_days;
    }
   }
  }
  if (f < 31) f = 31;
 
+ /* If playing with daylength correction, then take in account the fact we do more transports */
+ return BIGMULSS(dist * f * num_pieces, _cargo_payment_rates[cargo_type], 21) / EconomyMultiplier();
 }
 
 static void DeliverGoodsToIndustry(TileIndex xy, CargoID cargo_type, int num_pieces)


 
Anyway :) De toute façon comme expliqué ici http://www.tt-forums.net/viewtopic [...] 54#p607654 et http://www.tt-forums.net/viewtopic [...] 73#p607773 mon approche est foireuse lorsqu'on a un grand coeff multiplicateur de temps :
-> Avec un temps multiplié par 30 (valeur maximale du patch que je tentais de corriger) si un véhicule met en temps normal 31 jours pour faire le trajet, alors le patch va me dire "2 jours" puisqu'il ne va incrémenter le jour que tous les 30 DayTicks. Du coup, avec mon calcul, je me retrouve avec 60 jours. Hors, entre 60 et 31 jours, l'écart de tarif peut être monstrueux, ce qui fait que le jeu se comporte vraiment très différement, et devient vraiment plus difficile. Il faudrait donc baser mon calcul non pas sur le nombre de jours, mais le nombre de ticks. Hors, après étude du code, deux choses ressortent : 1/ cela nécessiterait la réécriture de pas mal de code -trop pour moi, je suis une merde en C++, donc y'a pas moyen que je passe 10 jours à me rendre compte que je ne m'en sors pas- 2/ en plus, vu que je suis une quiche en C++, j'arrive même pas à trouver un point d'entrée pour l'appel de cette fonction : impossible de trouver où le calcul du nombre de jours de transport des cargaisons se fait... plus exactement j'ai plus ou moins trouvé, mais j'ai rien pigé, ils sont chiant à utiliser sans arrêt une fonction "DoCmd()", qui prend en paramètre un certain nombre de constantes qui font déterminer quelle fonction lancer... moi je suis paumé et j'arrive pas à suivre. Vu que mon VC++ refuse de tourner en mode débug pas à pas, je suis baisé pour trouver à coup sûr toutes les parties du code à modifier :/
 
Du coup le patch est mis de côté, et c'est le owner de la version "integrated" -version contenant tous les patchs intéressants candidats au tronc- qui va s'en occuper ;)

Message cité 2 fois
Message édité par MagicBuzz le 16-07-2007 à 00:41:47
mood
Publicité
Posté le 16-07-2007 à 00:29:08  profilanswer
 

n°1586813
0x90
Posté le 16-07-2007 à 00:45:15  profilanswer
 

MagicBuzz a écrit :


Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed euismod lobortis sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis facilisis cursus urna. Morbi pulvinar sodales mi. Aliquam et massa in ipsum placerat eleifend. Nulla facilisi. Sed mollis, leo sed vestibulum interdum, felis nulla adipiscing arcu, ut vestibulum urna nisl sed nulla. Sed ut orci quis odio euismod imperdiet. Nulla ornare eleifend justo. Aenean at nunc non nisi euismod venenatis. Morbi imperdiet lacus a nulla.
 
Donec dapibus, mauris at dignissim mollis, justo mauris sodales sapien, id fermentum mi tortor eget lectus. Maecenas vestibulum urna in elit. Praesent dolor elit, tincidunt ac, feugiat at, porttitor quis, nisl. Pellentesque laoreet dui. Mauris congue pede id leo. Praesent sed neque. Maecenas consectetuer. Fusce nonummy, enim eu tincidunt luctus, quam mi congue arcu, nec ultrices lorem dolor id leo. Praesent vel justo. Ut et risus. Phasellus placerat leo in felis. Nulla iaculis convallis eros. Sed tempor. Aliquam purus libero, tincidunt ac, lobortis in, ullamcorper id, dolor. Aliquam convallis consectetuer ligula. Etiam sed risus et nulla scelerisque interdum. Suspendisse sit amet lacus eget orci eleifend cursus. Aliquam diam urna, dictum id, porta ac, luctus vitae, nunc. Curabitur commodo suscipit ipsum. Suspendisse potenti.
 
Mauris eu elit a ipsum aliquet dictum. Mauris vitae sapien. Sed eget magna. Suspendisse convallis varius libero. Pellentesque quis sem. Aliquam iaculis, ante nec condimentum elementum, turpis orci gravida magna, a dignissim sem velit vel ipsum. Pellentesque turpis. Duis quis quam. Nam fringilla interdum purus. Donec eleifend, neque ac tincidunt blandit, nibh dui ultricies magna, nec semper orci eros vel odio. Nam eleifend, quam non blandit sagittis, nisi felis pellentesque odio, in bibendum massa quam at tellus. Suspendisse dapibus, ipsum vel interdum gravida, dolor est varius lorem, a lobortis elit lectus eget purus. Nunc eget orci. Proin a felis sit amet ante sodales mattis. Nullam faucibus orci scelerisque magna. Sed mauris. Vestibulum auctor.  


 
Est-ce que t'es au courant que tes posts, et ta vie en général, sont aussi intéressants que la liste des ingrédients d'une boite de raviolis en conserve ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1586831
floboss07
Posté le 16-07-2007 à 02:04:40  profilanswer
 

Zapetti Cannelloni Pur Boeuf 800 g :
 
 
Sauce : eau, purée de tomate mi réduite, viande de boeuf, carottes, oignons, vin blanc, sucre, amidon transformé de maïs, huile de tournesol, sel, arômes.
 
Pâte : semoule de blé dur, eau, blanc d'oeuf.  
 
Farce : viande de boeuf, chapelure, semoule de blé dur, carottes, oignons, aromates, blanc d'oeuf, poudre de lait écrémé, fécule de manioc, sel, huile de tournesol, arômes naturels. Viande de boeuf mise en oeuvre : 13% du poids net total.

n°1586843
Taz
bisounours-codeur
Posté le 16-07-2007 à 08:42:45  profilanswer
 

si tu veux des checked int, y a plein d'implé pour faire ça tranquillement

n°1587036
Joel F
Real men use unique_ptr
Posté le 16-07-2007 à 12:42:39  profilanswer
 

deadalnix a écrit :


La surcharge des operateurs par exemple. Le compilo peut plus prevoir ses optimisation habituelles sur les operations.


ça , ça peut s'arranger ;)
 

deadalnix a écrit :


malloc et free ca se pratique toujours en C++ . Pour avoir une gestion de la memoire automatique, il faut biaser.


Oui par les gens incompétents. vector,list et consoeur font leur boulot d'abstraction de manière très correct.  
 
 

n°1587182
bjone
Insert booze to continue
Posté le 16-07-2007 à 16:15:57  profilanswer
 

MagicBuzz a écrit :


Effectivement, ici le uint16 n'avait aucun intérêt.
A la base j'étais parti sur ce type car je pensais avoir besoin de le stocker ensuite en mémoire dans une struct donc le nombre d'occurence peut atteindre plusieurs centaines de milliers (5000 véhicules de chacun des 4 types, et pour chacun des types de cargaisons -actuellement limité à 8, mais dont la limite va sauter avec un patch à venir permettant d'utiliser de nouveaux types d'industries, donc potentiellement au moins 256 types de cargo différents puisque j'imagine que le type de cargo sera stocké dans un byte -contre actuellement 3 bits d'un flag partagé-)
 
Mais bon, finalement je suis retourné au type byte, puisque de toute façon les valeurs > 255 ne m'intéressent pas, car le jeu ne fait pas de différence dans le prix de transport des cargaisons dépassé cette valeur :)
 


Index: src/economy.cpp
===================================================================
--- src/economy.cpp (revision 10550)
+++ src/economy.cpp (working copy)
@@ -1169,10 +1177,12 @@
 {
  const CargoSpec *cs = GetCargo(cargo_type);
  byte f;
+ /* If playing with daylength correction, then take in account the real transit_days */
+ byte new_transit_days = min(transit_days * EconomyMultiplier(), 0xFF);
 
  /* Use callback to calculate cargo profit, if available */
  if (HASBIT(cs->callback_mask, CBM_CARGO_PROFIT_CALC)) {
-  uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (transit_days << 24);
+  uint32 var18 = min(dist, 0xFFFF) | (min(num_pieces, 0xFF) << 16) | (new_transit_days << 24);
   uint16 callback = GetCargoCallback(CBID_CARGO_PROFIT_CALC, 0, var18, cs);
   if (callback != CALLBACK_FAILED) {
    int result = GB(callback, 0, 14);
@@ -1192,23 +1202,29 @@
   dist = 0;
 
  f = 255;
- if (transit_days > cs->transit_days[0]) {
-  transit_days -= cs->transit_days[0];
-  f -= transit_days;
+ if (new_transit_days > cs->transit_days[0]) {
+  new_transit_days -= cs->transit_days[0];
+  f -= new_transit_days;
 
-  if (transit_days > cs->transit_days[1]) {
-   transit_days -= cs->transit_days[1];
+  if (new_transit_days > cs->transit_days[1]) {
+   new_transit_days -= cs->transit_days[1];
 
-   if (f < transit_days) {
+   if (f < new_transit_days) {
     f = 0;
    } else {
-    f -= transit_days;
+    f -= new_transit_days;
    }
   }
  }
  if (f < 31) f = 31;
 
+ /* If playing with daylength correction, then take in account the fact we do more transports */
+ return BIGMULSS(dist * f * num_pieces, _cargo_payment_rates[cargo_type], 21) / EconomyMultiplier();
 }
 
 static void DeliverGoodsToIndustry(TileIndex xy, CargoID cargo_type, int num_pieces)


 
Anyway :) De toute façon comme expliqué ici http://www.tt-forums.net/viewtopic [...] 54#p607654 et http://www.tt-forums.net/viewtopic [...] 73#p607773 mon approche est foireuse lorsqu'on a un grand coeff multiplicateur de temps :
-> Avec un temps multiplié par 30 (valeur maximale du patch que je tentais de corriger) si un véhicule met en temps normal 31 jours pour faire le trajet, alors le patch va me dire "2 jours" puisqu'il ne va incrémenter le jour que tous les 30 DayTicks. Du coup, avec mon calcul, je me retrouve avec 60 jours. Hors, entre 60 et 31 jours, l'écart de tarif peut être monstrueux, ce qui fait que le jeu se comporte vraiment très différement, et devient vraiment plus difficile. Il faudrait donc baser mon calcul non pas sur le nombre de jours, mais le nombre de ticks. Hors, après étude du code, deux choses ressortent : 1/ cela nécessiterait la réécriture de pas mal de code -trop pour moi, je suis une merde en C++, donc y'a pas moyen que je passe 10 jours à me rendre compte que je ne m'en sors pas- 2/ en plus, vu que je suis une quiche en C++, j'arrive même pas à trouver un point d'entrée pour l'appel de cette fonction : impossible de trouver où le calcul du nombre de jours de transport des cargaisons se fait... plus exactement j'ai plus ou moins trouvé, mais j'ai rien pigé, ils sont chiant à utiliser sans arrêt une fonction "DoCmd()", qui prend en paramètre un certain nombre de constantes qui font déterminer quelle fonction lancer... moi je suis paumé et j'arrive pas à suivre. Vu que mon VC++ refuse de tourner en mode débug pas à pas, je suis baisé pour trouver à coup sûr toutes les parties du code à modifier :/
 
Du coup le patch est mis de côté, et c'est le owner de la version "integrated" -version contenant tous les patchs intéressants candidats au tronc- qui va s'en occuper ;)


 
la règle générale, c'est de conserver les types "naturels" (int/float/bool).
des fois être trop précis nuit à l'évolutitivité de l'application et aux performances.
au niveau mémoire, même si prendre des type peut être trop "larges" augmente la taille des structures et la conso de cache, c'est plus la manière de balayer et lier les structures/objets qui joue sur l'efficacité globale.  
essayer d'avoir des algos avec la complexité la plus proche du constant possible...
avoir des système d'indexation et de liaison sioux.... (ça a un coût mémoire, mais ça paut éliminer drastiquement des masses de tests dans le vent... des fois il faut pas hésiter de créer des graphes/arbres/tables aller directement à ce qui est pertinent)

n°1587393
++fab
victime du syndrome IH
Posté le 17-07-2007 à 00:49:46  profilanswer
 

deadalnix a écrit :


La surcharge des operateurs par exemple. Le compilo peut plus prevoir ses optimisation habituelles sur les operations.


L'exemple n'est pas bon.
L'opération est en fait un appel de fonction pour le cas de la surcharge d'opérateurs. Généralement, une opération impliquant une ou plusieurs opérandes de type fondamental n'est pas traduite en appel de fontion par le compilateur -- quoique ça puisse arriver.
 
 

deadalnix a écrit :

malloc et free ca se pratique toujours en C++ .


Rarement dans le code que je lis.
 

deadalnix a écrit :

Pour avoir une gestion de la memoire automatique, il faut biaser.
Qui plus est, melanger du haut et du bas niveau dans le meme code, c'est vraiment pas conseillé.Plus on a d'outils, plus on a de chances de ne pas utiliser le bon outils. C'est ca le revers de C++ .


 
Je n'irai pas contreduire les saintes écritures, par peur de finir sur le buchet.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[python] erreur que je ne comprends passyntaxe C++ que je ne comprends pas
Je comprends pas d'où vient mon erreurImbrication de template avec PHPLib... je ne comprends pas !
validation W3C de ma CSS: des alertes que je ne comprends pas...je ne comprends pas comment marche ce fla ....
[Résolu] Erreur w3c que je ne comprends pashtml ? comprends rien ?!
Boucle avec chaine vide : je comprends pasc'est un vrai mystère !!! comprends pas !!
Plus de sujets relatifs à : Je ne comprends pas trop...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)