kyrsjo Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 Har en del kode som regner: //Generate gravity data for (x = 0; x < ROWS; x++) { for (y = 0; y < COLS; y++) { dx = x - Xcenter; dy = y - Ycenter; //Popluate the array gravDepth1[x] [y].scalar = grav_calcScalar (grav_UnitConv(dx), grav_UnitConv(dy), MASS1); gravDepth1[x] [y].angle = atan (dy / dx); gravDepth1[x] [y].Xvec = gravDepth1[x] [y].scalar * cos (gravDepth1[x] [y].angle); gravDepth1[x] [y].Yvec = gravDepth1[x] [y].scalar * sin (gravDepth1[x] [y].angle); } printf ("POS: (%d,%d), Scalar: %f, Angle: %f, Vector: [%f,%f]\n", x, y, gravDepth1[x] [y].scalar, gravDepth1[x] [y].angle, gravDepth1[x] [y].Xvec, gravDepth1[x] [y].Yvec); } Og alle %f-sakene blir printa som "0.000000"! Men litt lenger nede: //min min = max; for (x = 0; x < ROWS; x++) { for (y = 0; y < COLS; y++) { if (gravDepth1 [x] [y].scalar < min) { min = gravDepth1 [x] [y].scalar; } } } printf ("min: %f\n", min); og her blir det printa helt fint?!? Synes det er litt merkelig, og trenger dette outputet for å få debugga programmet mitt... Lenke til kommentar
JBlack Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 (endret) y er udefinert utenfor den indre loopen. Endret 10. mai 2005 av JBlack Lenke til kommentar
kyrsjo Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 nei... Y er definert høyere opp i koden - noe outputet "beviser": OS: (626,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (627,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (628,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (629,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (630,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (631,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (632,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (633,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (634,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (635,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (636,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (637,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (638,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] POS: (639,480), Scalar: 0.000000, Angle: 0.000000, Vector: [0.000000,0.000000] max: 9.816933 min: 0.001422 Et utsnitt av output'en. (helt på slutten). Den looper definitivt igjennom alt. Kan jo prøve å flytte den, men tviler på at det hjelper... Lenke til kommentar
kyrsjo Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 Usjk... gir meg - funka nå (why!?!? WHY?!?) Endra //Generate gravity data for (x = 0; x < ROWS; x++) { for (y = 0; y < COLS; y++) { dx = x - Xcenter; dy = y - Ycenter; //Popluate the array gravDepth1[x] [y].scalar = grav_calcScalar (grav_UnitConv(dx), grav_UnitConv(dy), MASS1); gravDepth1[x] [y].angle = atan (dy / dx); gravDepth1[x] [y].Xvec = gravDepth1[x] [y].scalar * cos (gravDepth1[x] [y].angle); gravDepth1[x] [y].Yvec = gravDepth1[x] [y].scalar * sin (gravDepth1[x] [y].angle); printf ("POS: (%d,%d), Scalar: %f, Angle: %f, Vector: [%f,%f]\n", x, y, gravDepth1[x] [y].scalar, gravDepth1[x] [y].angle, gravDepth1[x] [y].Xvec, gravDepth1[x] [y].Yvec); } } Output: POS: (336,3), Scalar: 0.004560, Angle: -0.850475, Vector: [0.003008,-0.003427] POS: (336,4), Scalar: 0.004581, Angle: -0.848378, Vector: [0.003029,-0.003437] POS: (336,5), Scalar: 0.004603, Angle: -0.846271, Vector: [0.003051,-0.003447] POS: (336,6), Scalar: 0.004625, Angle: -0.844154, Vector: [0.003073,-0.003457] POS: (336,7), Scalar: 0.004647, Angle: -0.842027, Vector: [0.003095,-0.003467] POS: (336,8), Scalar: 0.004670, Angle: -0.839890, Vector: [0.003117,-0.003477] POS: (336,9), Scalar: 0.004692, Angle: -0.837742, Vector: [0.003140,-0.003487] POS: (336,10), Scalar: 0.004715, Angle: -0.835584, Vector: [0.003162,-0.003497] POS: (336,11), Scalar: 0.004737, Angle: -0.833416, Vector: [0.003185,-0.003507] POS: (336,12), Scalar: 0.004760, Angle: -0.831238, Vector: [0.003208,-0.003516] POS: (336,13), Scalar: 0.004783, Angle: -0.829049, Vector: [0.003231,-0.003526] POS: (336,14), Scalar: 0.004806, Angle: -0.826849, Vector: [0.003254,-0.003536] POS: (336,15), Scalar: 0.004829, Angle: -0.824639, Vector: [0.003278,-0.003546] POS: (336,16), Scalar: 0.004852, Angle: -0.822418, Vector: [0.003302,-0.003555] POS: (336,17), Scalar: 0.004875, Angle: -0.820187, Vector: [0.003325,-0.003565] POS: (336,18), Scalar: 0.004899, Angle: -0.817945, Vector: [0.003349,-0.003575] POS: (336,19), Scalar: 0.004922, Angle: -0.815692, Vector: [0.003374,-0.003584] POS: (336,20), Scalar: 0.004946, Angle: -0.813428, Vector: [0.003398,-0.003594] POS: (336,21), Scalar: 0.004970, Angle: -0.811154, Vector: [0.003422,-0.003603] POS: (336,22), Scalar: 0.004994, Angle: -0.808868, Vector: [0.003447,-0.003613] POS: (336,23), Scalar: 0.005018, Angle: -0.806571, Vector: [0.003472,-0.003622] POS: (336,24), Scalar: 0.005042, Angle: -0.804264, Vector: [0.003497,-0.003632] POS: (336,25), Scalar: 0.005066, Angle: -0.801945, Vector: [0.003523,-0.003641] POS: (336,26), Scalar: 0.005091, Angle: -0.799615, Vector: [0.003548,-0.003650] POS: (336,27), Scalar: 0.005115, Angle: -0.797274, Vector: [0.003574,-0.003660] POS: (336,28), Scalar: 0.005140, Angle: -0.794922, Vector: [0.003600,-0.003669] POS: (336,29), Scalar: 0.005164, Angle: -0.792558, Vector: [0.003626,-0.003678] POS: (336,30), Scalar: 0.005189, Angle: -0.790183, Vector: [0.003652,-0.003687] POS: (336,31), Scalar: 0.005214, Angle: -0.787796, Vector: [0.003678,-0.003696] POS: (336,32), Scalar: 0.005240, Angle: -0.785398, Vector: [0.003705,-0.003705] POS: (336,33), Scalar: 0.005265, Angle: -0.782989, Vector: [0.003732,-0.003714] POS: (336,34), Scalar: 0.005290, Angle: -0.780567, Vector: [0.003759,-0.003723] Eneste er at utregningen nå tar en evighet... Og da snakker jeg om 2,8 GHz'ern på skolen, ikke om 600 mhz'ern hjemme Ikke at gnome-terminal (vte) i den versjonen jeg har her er så fryyyyyktelig raskt det heller da... Lenke til kommentar
JBlack Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 kyrsjo skrev: nei... Y er definert høyere opp i koden - noe outputet "beviser": Selvsagt y vil alltid være like COLS Men y=COLS vil antagelig være utenfor array'en, og dermed vil resultatet være udefinert. Hvis du bare ønsker å skrive ut en verdi for hver x, endre y til y/2. Da får du midt i 2D-arrayen et sted. Lenke til kommentar
hishadow Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 .. pass også på denne atan (dy / dx);. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå