maxou224
Messages postés5Date d'inscriptionlundi 6 octobre 2008StatutMembreDernière intervention 2 juin 2010
-
26 mars 2009 à 21:19
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
27 mars 2009 à 19:56
Bonjour, je suis en DUT informatique et je dois rendre en fin d'année un programme de bataille navale en C, seulement je suis coincé sur un drôle de problème ! La plupart des gens de ma promo ne comprennent pas aussi ( on est en 1er année aussi ) j'espère que vous pourrez m'aider.
J'aimerais initialiser mon tableau "jeu1[10][10]" à '#' mais il m'indique une erreur quand je le lance :
void Raz(char jeu1[10][10]) //remise à zéro
{
int i,j;
for (i=0;i<=10;i++)
{
for (j=0;j<=10;j++)
{
jeu1[i][j]='#';
}
}
}
Pourtant tout est bon non ? Le bug vient de la ligne de commande " jeu1[i][j]='#'; "
en version rapide (100 octets = 25*4)
on fera 25 tours au lieu de 100:
unsigned int *puint;
int n;
n = 24; // tendre vers 0 pour supprimer la comparaison à chaque tour
puint = (unsigned int*) jeu1;
do {
puint[n] = '####';
} while(--n >= 0);
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 27 mars 2009 à 15:47
memset étant une fonction de bas niveau, on peut raisonablement supposer que son code est optimisé.
Pour en être certain on peut exécuter N fois mon code et le tien et voir le temps que ça prend. N étant suffisament grand pour observer une différence significative.
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 27 mars 2009 à 19:24
Tu es bien agressif, c'est une caractéristique des personnages qui prétendent avoir la science infuse ! Je n'ai pas de temps à perdre pour faire le test de performance dont je parlais plus haut, je te laisse donc le faire si ça t'amuses.
Il reste que tu n'as pas répondu à mon deuxième argument que je reformule pour que tu le comprennes bien : Ton code est totalement illisible et non maintenable. Si c'est ainsi que tu travailles, je souhaite bien du plaisir à tes collaborateurs...
maxou224
Messages postés5Date d'inscriptionlundi 6 octobre 2008StatutMembreDernière intervention 2 juin 2010 27 mars 2009 à 19:37
Je vous remerci de vos réponses :D
J'ai réussi à résoudre mon problème, c'était simplement un mauvais passage de paramètre...
Mais j'ai encore besoin de votre aide , j'aimerais afficher deux tableaux côte à côte de manière pour l'utilisateur à voir sa grille de bateau et celle où il doit attaquer
Doive-je créer encore des for imbriqué ? ou bien faire comme si il s'agissait d'un tableau de 20 cases ???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 mars 2009 à 19:53
Je ne me voulais pas aggressif du tout.
Sur des boucles aussi basiques, il n'y a rien à mesurer, vérifier le listing du compilo est beaucoup plus sur.
Quand on code en vue d'optimisation des perfs, c'est qu'on est sur la version finale, il n'est pls question de maintenir. Je ne pense pas que montrer ce genre de chose puisse nuire et ça change un peu de ce qu'on voit habituellement sur cppfrance.
T'inquiète pas pour mes collaborateurs, je suis le seul dans la boite à produire du binaire dont au moins 70% est en ASM.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 27 mars 2009 à 19:56
pour maxou224,
NON il n'y avait pas qu'un prob de params, il faut aussi corriger tes boucles comme je l'ai dit au début, soit utiliser memset, sinon tu auras un plantage à un moment ou à un autre.