003
13.09.2005, 19:22 Uhr
netdisaster
|
C++: |
#define PARTS 5 #define MEM_UP 120
typedef struct {int BTL_Nr, CAD_Nr; char BTL_Partname[NAMELEN]; int BTL_Art; float BTL_Weight; ROTATION BTL_Rot;} BAUTEIL; typedef struct {int TBG_Nr, TBG_Pcount; BAUTEIL *TBG_Part[PARTS+1]; float TBG_Weight;} STABTBG; typedef struct {int OP_Nr; STABTBG *OP_j, *OP_i, *TBG_Nr;} OPERATION; typedef OPERATION MONTAGEFOLGE[PARTS];
void cr_newMONT(int, int, int, int *, int *, int *, int *, STABTBG *, OPERATION *, BAUTEIL *, MATRIX_ID mat_id[][PARTS+1], MONTAGEFOLGE *MONT_List); void poco_mont(int, int *, int *, int *, int, int, int *, STABTBG *, OPERATION *, MONTAGEFOLGE *, BAUTEIL *, MATRIX_ID mat_id[][PARTS+1], int MAN_potential[], int instabil[][6], int mat_separation[][PARTS+1][PARTS+1][6], int mat_manipulation[][PARTS+1][PARTS+1][6], float mat_stability[][PARTS+1][PARTS+1], int mat_GEOdfk[][PARTS+1][PARTS+1], int mat_MECdfk[][PARTS+1][PARTS+1], int mat_DFK[][PARTS+1][PARTS+1]);
int main() { int montcount=1; int maxmont=MEM_UP;
MONTAGEFOLGE *MONT_List; MONT_List=(MONTAGEFOLGE *) calloc(maxmont+5, sizeof(MONTAGEFOLGE)); if (MONT_List==NULL) { fprintf(stderr, "Speicher-ERROR: MONT_List zu gross"); exit(1); } [...] poco_mont(step, &tbgcount, &opcount, &montcount, maxtbg, maxop, &maxmont, TBG_List, OP_List, MONT_List, partlist, mat_id, MAN_potential, instabil, mat_separation, mat_manipulation, mat_stability, mat_GEOdfk, mat_MECdfk, mat_DFK); }
void poco_mont(int step, int *tbgcount, int *opcount, int *montcount, int maxtbg, int maxop, int *maxmont, STABTBG *TBG_List, OPERATION *OP_List, MONTAGEFOLGE *MONT_List, BAUTEIL *partlist, MATRIX_ID mat_id[][PARTS+1], int MAN_potential[], int instabil[][6], int mat_separation[][PARTS+1][PARTS+1][6], int mat_manipulation[][PARTS+1][PARTS+1][6], float mat_stability[][PARTS+1][PARTS+1], int mat_GEOdfk[][PARTS+1][PARTS+1], int mat_MECdfk[][PARTS+1][PARTS+1], int mat_DFK[][PARTS+1][PARTS+1]) { cr_newMONT(step, line, col, tbgcount, opcount, montcount, maxmont, TBG_List, OP_List, partlist, mat_id, MONT_List); poco_mont(step, tbgcount, opcount, montcount, maxtbg, maxop, maxmont, TBG_List, OP_List, MONT_List, partlist, mat_id, MAN_potential, instabil, mat_separation, mat_manipulation, mat_stability, mat_GEOdfk, mat_MECdfk, mat_DFK); }
void cr_newMONT(int step, int line, int col, int *tbgcount, int *opcount, int *montcount, int *maxmont, STABTBG *TBG_List, OPERATION *OP_List, BAUTEIL *partlist, MATRIX_ID mat_id[][PARTS+1], MONTAGEFOLGE *MONT_List) { MONTAGEFOLGE *MONT_List_alt;
[...]
// Schritt 6: // Prüfen, ob gefundene Montagefolge komplett // und falls ja, montcount erhöhen if (step==PARTS-1) { ++(*montcount); // bei Bedarf mehr Speicher bereitstellen if (*montcount==*maxmont) { MONT_List_alt=MONT_List; *maxmont += MEM_UP; MONT_List=(MONTAGEFOLGE *) realloc(MONT_List_alt, (*maxmont+5)*sizeof(MONTAGEFOLGE)); for (montc=(*maxmont-MEM_UP); montc<(*maxmont+5); montc++) { for (fstep=0; fstep<PARTS; fstep++) { MONT_List[montc][fstep].OP_Nr=0; MONT_List[montc][fstep].OP_i=NULL; MONT_List[montc][fstep].OP_j=NULL; MONT_List[montc][fstep].TBG_Nr=NULL; } } if (MONT_List == NULL) { fprintf(stderr, "\n\nSpeicher-ERROR: MONT_List zu gross"); MONT_List=MONT_List_alt; } } } }
|
Ist jetzt eben stark aus dem Zusammenhang. Ich hoffe, es ist dennoch verständlich ...
netdisaster Dieser Post wurde am 13.09.2005 um 19:27 Uhr von netdisaster editiert. |