0
votes

Comment puis-je obtenir une entrée utilisateur pour sélectionner une ligne dans un tableau en deux dimensions?

J'essaie d'écrire un programme qui prendra la somme d'une ligne sélectionnée d'une matrice bidimensionnelle et montrez la somme, via l'entrée de l'utilisateur pour sélectionner la ligne spécifique. Comment puis-je faire ça? J'ai essayé de le faire mais je ne peux pas comprendre comment le faire sans montrer toutes les lignes.

Mon code: P>

int[,] array1 = new int[6, 6]
{
    {10, 20, 10, 20, 21, 99 },
    {2, 27, 5, 45, 20, 13 },
    {17, 20, 20, 33, 33, 20 },
    {21, 35, 15, 54, 20, 37 },
    {31, 101, 25, 55, 26, 66 },
    {45, 20, 44, 12, 55, 98 }
};

int Length = array1.GetLength(0);
int Height = array1.GetLength(1);
int CalculateRow = 0;

for ( int i = 0; i < Length; i++ )
{
  for ( int j = 0; j < Height; j++ )
  {
    CalculateRow = CalculateRow + array1[i, j];
  }
  Console.Write("Enter the number of the Row you would like to see the sum of: ");
  int h = Convert.ToInt32(Console.ReadLine());
  if ( h > 5 )
  {
    Console.Write(-1);
  }
  else
    Console.WriteLine("The sum of Row {0} is {1} ", h, CalculateRow);
}


6 commentaires

Qu'est-ce que longueur ?


Pouvez-vous expliquer ce que votre code fait différemment que vous ne le souhaitez?


Vous n'aurez pas à itération sur les deux dimensions; La deuxième dimension est les colonnes et vous voulez les résumer. Donc, juste obtenir le tableau et la résumer.


Je tente de le faire pour que l'utilisateur entrait un numéro de 0 à 5 pour sélectionner une ligne spécifique et indiquera la somme de la ligne sélectionnée de l'utilisateur. Si ce n'est pas une ligne valide, il montrera -1.


Cependant, il est à la base de toutes les sommes de lignes, alors que je le souhaite seulement.


Vous devez soit encapsuler calculaterow = calculateur + array1 [i, j]; dans une instruction si elle ne s'exécutera que lorsque la ligne est entrée. Vous ne pouvez pas faire cela parce que vous demandez la ligne après le fait. Vous pouvez soit déplacer cela avant de calculer, soit mieux encore, faites-la encore Calculaterow dans un tableau 1D de 5 lignes, puis CALCULLATEROW [I] + = Array [i, J] < / code>


4 Réponses :


2
votes

Vous pouvez utiliser cette version révisée PRE>

The sum of Row 0 is 180
The sum of Row 1 is 112
The sum of Row 2 is 143
The sum of Row 3 is 182
The sum of Row 4 is 304
The sum of Row 5 is 274


0 commentaires

0
votes

Vous pouvez l'écrire comme ceci:

Console.Write("Enter the number of the Row you would like to see the sum of: ");
string input = Console.ReadLine();
int h;
//validates the input more safely
if(int.TryParse(input, out h) && h >= 0 && h < 6)
{
    int sum = 0;
    //loop over only the row that you care about
    for(int i = 0; i < 6; i++)
        sum += array1[h, i];

    Console.WriteLine("The sum of Row {0} is {1} ", h, sum);
}
else
{
    Console.WriteLine(-1);
}


0 commentaires

0
votes

Faites une liste d'INT pour contenir la somme de chaque ligne, puis renvoyez la ligne des demandes utilisateur. Alternativement, demandez à l'utilisateur quelle ligne ils veulent avant vous calculez la somme et n'ajoutez que la valeur si (h == i) xxx < / p>


0 commentaires

0
votes

Si vous deviez envisager d'utiliser une liste Vous pouvez exploiter la méthode Somme de LINQ et éviter les boucles imbriquées. Voici une version du code qui fait ce dont vous avez besoin. XXX

HTH


0 commentaires