Remplir un gros tableau rapidement
Fermé
RedSkidy
-
23 mars 2014 à 22:53
RedSkidy Messages postés 196 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 22 octobre 2015 - 27 mars 2014 à 02:18
RedSkidy Messages postés 196 Date d'inscription jeudi 30 janvier 2014 Statut Membre Dernière intervention 22 octobre 2015 - 27 mars 2014 à 02:18
A voir également:
- Remplir un gros tableau rapidement
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Organigramme a remplir word - Guide
- Trier un tableau excel - Guide
8 réponses
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
24 mars 2014 à 00:08
24 mars 2014 à 00:08
up
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
24 mars 2014 à 12:43
24 mars 2014 à 12:43
Bonjours
C'est une peu normale que ta boucle de remplissage mette autant de temps car il doit faire chaque boucle pour remplir tes cellules ou colonne, bref je ne sais pas si tu as quelques notions d'algorithmes mais si tu remarques bien, deux de tes boucles ont une même constante max d'incrémentation "16" et il n'a n'y a qu'une seul boucle qui a une constante max de "256" de ce fait, pour rendre un peu plus rapide ta boucle de remplissage du doit revoir ton algorithme pour utiliser tout la potentielle de la boucle. Ceci dit-il te faut juste implémenter ton code de cette façon par exemple :
C'est une peu normale que ta boucle de remplissage mette autant de temps car il doit faire chaque boucle pour remplir tes cellules ou colonne, bref je ne sais pas si tu as quelques notions d'algorithmes mais si tu remarques bien, deux de tes boucles ont une même constante max d'incrémentation "16" et il n'a n'y a qu'une seul boucle qui a une constante max de "256" de ce fait, pour rendre un peu plus rapide ta boucle de remplissage du doit revoir ton algorithme pour utiliser tout la potentielle de la boucle. Ceci dit-il te faut juste implémenter ton code de cette façon par exemple :
static int i; static int j; static int k; for(i = 0, j = 0; i < 16; i++, j++){ for(k = 0; k < 256 ; k++) std::cout << i << "\n" << j << "\n" << k << std::endl; }
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
24 mars 2014 à 15:23
24 mars 2014 à 15:23
merci je ne savais pas qu'on pouvait faire sa mais c'est bon j'ai trouvé ce qui ne vas pas c'est cout c'est extrêmement lent sans cout le programme se finit en 0.04 secondes
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
Modifié par RedSkidy le 24/03/2014 à 17:14
Modifié par RedSkidy le 24/03/2014 à 17:14
sinon j'ai une autre question j'ai complété ma classe chunk mais elle le code crash quand j'appelle une fonction (le code compile)
chunk.h :
chunk.cpp :
je sens que j'ai fait une énorme erreur pour laquelle je vais me faire insulter par tous les programmeurs du coin
quelqu'un pourrait m'aider ?
chunk.h :
#ifndef CHUNK_H #define CHUNK_H #include <fstream> typedef float (*Array)[16][256][16]; class chunk { public: chunk(); ~chunk(); Array load(const std::string &file); void save(const std::string &file); void generate(); private: Array ptr; }; #endif // CHUNK_H
chunk.cpp :
#include "chunk.h" #include <iostream> #include <fstream> typedef float (*Array)[16][256][16]; chunk::chunk() { ptr = (Array) new float[16][256][16]; } chunk::~chunk() { delete ptr; } Array chunk::load(std::string const& file) { std::ifstream flux(file.c_str()); for(int X(0); X<16; ++X) { for (int Y(0); Y<256; ++Y) { for (int Z(0); Z<16; ++Z) { flux >> *ptr[X][Y][Z]; } } } return ptr; } void chunk::save(std::string const& file) { std::ofstream flux(file.c_str()); for(int X(0); X<16; ++X) { for (int Y(0); Y<256; ++Y) { for (int Z(0); Z<16; ++Z) { flux << *ptr[X][Y][Z] << std::endl; } } } } void chunk::generate() { for(int X(0); X<16; ++X) { for (int Y(0); Y<256; ++Y) { for (int Z(0); Z<16; ++Z) { *ptr[X][Y][Z] = 1; } } } }
je sens que j'ai fait une énorme erreur pour laquelle je vais me faire insulter par tous les programmeurs du coin
quelqu'un pourrait m'aider ?
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
25 mars 2014 à 10:39
25 mars 2014 à 10:39
Bonjour
sait tu juste à quoi sert Array ? et les pointeurs ?? avant de te répondre
sait tu juste à quoi sert Array ? et les pointeurs ?? avant de te répondre
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
Modifié par RedSkidy le 26/03/2014 à 13:01
Modifié par RedSkidy le 26/03/2014 à 13:01
Array est le nom que j'ai donné a mon typedef qui représente un pointeur sur un tableau et les pointeurs sont des variables qui contiennent l'adresse d'autres variables
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
26 mars 2014 à 20:29
26 mars 2014 à 20:29
tu initialise comment tes tableaux de float ??
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
Modifié par RedSkidy le 27/03/2014 à 02:24
Modifié par RedSkidy le 27/03/2014 à 02:24
avec un typedef :
typedef float (*Array)[16][256][16]; //Array est un pointeur sur un tableau statique de float tri-dimentionels de 16x2256x16
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
24 mars 2014 à 17:18
24 mars 2014 à 17:18
et sambia je veut remplir un rectangle en 3D virtuel (oui sa veut rien dire) donc c'est comme si je voulais placer un par un tous les blocs qui composent ce cube or est-ce que sa marcherait avec ton code vu que les positions X et Z sont incrémentés en meme temps ?
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
25 mars 2014 à 10:35
25 mars 2014 à 10:35
Bonjour
à ce que je connais de mes études élémentaire ,un cube est un parallélépipède rectangle particulier dont la longueur, la largeur et la hauteur sont de même longueur. et dont son volume est
volume = Largeur x Longueur x Hauteur = C x C x C = c³ donc si je te dit que j'ai un un cube dont la longueur d'un côté vaut 5 donc mon volume est égale à ?? ( :) si tu trouve la solution tu trouve l'algorithme et ça répondra à ta question)
à ce que je connais de mes études élémentaire ,un cube est un parallélépipède rectangle particulier dont la longueur, la largeur et la hauteur sont de même longueur. et dont son volume est
volume = Largeur x Longueur x Hauteur = C x C x C = c³ donc si je te dit que j'ai un un cube dont la longueur d'un côté vaut 5 donc mon volume est égale à ?? ( :) si tu trouve la solution tu trouve l'algorithme et ça répondra à ta question)
RedSkidy
Messages postés
196
Date d'inscription
jeudi 30 janvier 2014
Statut
Membre
Dernière intervention
22 octobre 2015
6
Modifié par RedSkidy le 26/03/2014 à 13:04
Modifié par RedSkidy le 26/03/2014 à 13:04
c'est pas vraiment un cube j'ai marqué plus haut que c'était un volume (j'avais oublié le nom) de 16x256x16
et la réponse est 125 cm3 mais ce n'était pas ma question ma question est par exemple si j'avais un cube de 5cm, ils serait composé de 125 cube de 1cm et l'algorithme que je veut doit placer tout ces cubes de 1cm un par un
et la réponse est 125 cm3 mais ce n'était pas ma question ma question est par exemple si j'avais un cube de 5cm, ils serait composé de 125 cube de 1cm et l'algorithme que je veut doit placer tout ces cubes de 1cm un par un
sambia39
Messages postés
610
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
9 février 2023
49
Modifié par sambia39 le 26/03/2014 à 20:27
Modifié par sambia39 le 26/03/2014 à 20:27
bonsoir
utilise un tableau pour stocker les valeurs de ton cube ou volume ainsi tu auras tout les donner d'un volume ou cube dans un tableau et voir mieux encore pour ne pas te prendre la tête à tout mettre en mémoire tu peux bien enregistrer les données de ton tableau dans un fichier texte et importer exporter comme tu veux je ne vois pas ou est le problème sauf peut-être si j'ai mal compris
à bientôt
utilise un tableau pour stocker les valeurs de ton cube ou volume ainsi tu auras tout les donner d'un volume ou cube dans un tableau et voir mieux encore pour ne pas te prendre la tête à tout mettre en mémoire tu peux bien enregistrer les données de ton tableau dans un fichier texte et importer exporter comme tu veux je ne vois pas ou est le problème sauf peut-être si j'ai mal compris
à bientôt
24 mars 2014 à 17:13