Rechercher : dans
Par :

Soucis d'allocation dynamique en Borland C++

Dernière réponse le 24 jan 2003 à 17:57:20 djoly, le 24 jan 2003 à 16:34:15 
 Signaler ce message aux modérateurs

Bonjour,
J'ai écrit des programmes en C/DOS que je souhaite traduire en Borland C++ builder 6.0.
Dans la mesure où je travaille en analyse spatiale (climatologie), j'ai besoin de mémoriser de
grosses matrices de données à 2 dimensions (MNT, images de télédétection par exemple).
J'ai un pb relatif à l'allocation dynamique de matrices à 2 dimensions. En C/DOS, voici la manière
que j'utilise pour réservezr la mémoire nécessaire dans le tas éloigné :
___________________________________________________________

#include <alloc.h>

int far **d2;
int NoL, NoC, k;

main()
{
d2=farcalloc(NoL, sizeof(int*)); /*NoL=Nombre de Lignes de la matrice */
for(k=0; k<NoL; k++)
{
d2[k]=farcalloc(NoC, sizeof(int)); /*NoL=Nombre de Colonnes de la matrice */
}
}
___________________________________________________________

Quelle pourrait etre la traduction de cela en Borland C++ ?
Merci d'avance de votre aide.
"Svissen"

Meilleures réponses pour « soucis d'allocation dynamique en Borland C++ » dans :
Caractéristiques du langage C++ VoirMatériel requis Pour être en mesure de tester les exemples fournis dans ce livre, vous devez disposer d’un éditeur de texte pour saisir le texte des fichiers source et d’un compilateur pour construire le fichier exécutable à partir de ce fichier...

1

josch83, le 24 jan 2003 à 16:55:35

/*
*
* Voici une petite fonction qui pourais t'être pratique.
*
*/



#include <stdlib.h>

short alloc_matrix(int **ptr_table, int height, int weight);

int main(){

int table **table;

alloc_matrix(table,4,5);

*(*(table+2)+2)=3; // equal to : table[2][2]=3;

return 0;
}

short alloc_matrix(int **ptr_table, int height, int weight){

int **my_table, count1, count2;

my_table=malloc(sizeod(int)*height);

for(count1=0;count1<height;count1++){
*(my_table+count1)=(int *)malloc(sizeof(int)*weight);
}

for(count1=0;count1<height;count1++){
for(count2=0;count2<weight;count2++){
*(*(my_table+count1)+count2)=0x0;
}
}

ptr_table=my_table;

return 0;
}


// Bonne chance
// josch83

Répondre à josch83

2

 djoly, le 24 jan 2003 à 17:57:20

Merci de ta réponse; je teste quand j'aurai le temps....
Cordialement

Répondre à djoly