2010-09-23 7 views
0

J'ai donc besoin de diviser la valeur du tableau par la valeur du tableau. J'utilise des tableaux flottants multidimensionnels.Diviser la valeur du tableau avec la valeur du tableau

Voici le code:

myNumbers = new float[3, 4]; 
float[] tempNumbers; 

myNumbers[0, 0] = 3; 
myNumbers[0, 1] = -6; 
myNumbers[0, 2] = 3; 
myNumbers[0, 3] = -12; 

/* 
for (int i = 0; i < 4; i++) 
{ 
    myNumbers[0, i] = myNumbers[0, i]/myNumbers[0, 0]; 
} 
*/ 

myNumbers[0, 0] = myNumbers[0, 0]/myNumbers[0, 0]; //Works (strange) 
myNumbers[0, 1] = -6/3; // Works like this 
myNumbers[0, 2] = myNumbers[0, 2]/myNumbers[0, 0]; //Does not 
myNumbers[0, 3] = myNumbers[0, 3]/myNumbers[0, 0]; //Does not 

Sortie:

1 // Worked 
-2 // Worked 
3 // Not so much 
-12 // Not so much 

Il me est étrange que la première valeur est calculée toujours. Si j'essaie de diviser des nombres statiques et de les placer dans mon tableau, cela fonctionne également. S'il vous plaît aidez-moi avec celui-ci. Je poste ici la première fois j'espère que vous pouvez poser des questions et aider ici ... :)

Merci beaucoup, stupide moi. :))

Répondre

1

Non, cela prend tout son sens - au moment où vous utilisez myNumbers[0, 0] dans les troisième et quatrième lignes, cette valeur est 1 (en raison du premier calcul).

Il peut être utile de retirer des tableaux de l'image, car ils ne sont pas pertinents ici. Votre code est efficace:

float a = 3; 
float b = -6; 
float c = 3; 
float d = -12; 

a = a/a; 
b = -6/3; 
c = c/a; 
d = d/a; 

Après la première ligne, a est évidemment 1. Si vous ne voulez pas les calculs antérieurs pour affecter les ultérieurs, utiliser des variables distinctes:

float a2 = a/a; 
float b2 = -6/3; 
float c2 = c/a; 
float d2 = d/a; 

À ce stade, c2 sera 1 et d2 sera -4, ce qui est probablement ce que vous attendiez.

3

depuis que vous avez mis à jour la première valeur de tableau déjà, il est toujours 1, donc pas de division plus utiliser va changer les valeurs des nombres myNumbers [0, 2], myNumbers [0, 3]

+0

Oh oui, stupide moi. Merci les gars – sed

0

Lorsque cette ligne est exécutée:

myNumbers[0, 0] = myNumbers[0, 0]/myNumbers[0, 0]; //Works (strange) 

Le résultat est stocké à myNumbers[0,0]. Ainsi, lorsque le programme exécute la troisième ligne:

myNumbers[0, 2] = myNumbers[0, 2]/myNumbers[0, 0]; //Does not

La valeur de myNumbers[0,0] est 1, et le résultat correct, 3 est généré.

Questions connexes