none
Matriz

    Question

  • como criar uma matriz dentro do código c# windows form, com elementos ja definidos:

    exemplo:

    matriz com 6 elementos e n linhas

    na linha 1 ficaria 1,2,3,4,5,6 na linha 2 ficaria 7,8,9,10,11,12 e assim por diante:

    comecei assim mas não descobri como adicionar mais linhas

    int[,] numbers2D = new int[6, 1] { { 1 }, { 2 }, { 3 }, { 4 }, { 5 }, { 6 } };
    o programa vai gerar 6 números que deverão ser testados com cada uma das linhas da matriz, elemento por elemento.

    Sunday, August 25, 2013 8:20 PM

Answers

  • Se entendi bem, você inverteu linhas e colunas

            int[,] numbers2D = new int[2,6] 
            { 
                 { 1 , 2, 3, 4, 5, 6 }
                ,{ 7, 8, 9, 10, 11, 12 }
            };

    Sunday, August 25, 2013 9:38 PM

All replies

  • Se entendi bem, você inverteu linhas e colunas

            int[,] numbers2D = new int[2,6] 
            { 
                 { 1 , 2, 3, 4, 5, 6 }
                ,{ 7, 8, 9, 10, 11, 12 }
            };

    Sunday, August 25, 2013 9:38 PM
  • Se entendi bem, você inverteu linhas e colunas

            int[,] numbers2D = new int[2,6] 
            { 
                 { 1 , 2, 3, 4, 5, 6 }
                ,{ 7, 8, 9, 10, 11, 12 }
            };

    Ok, obrigado. Agora como eu poderia fazer para, por exemplo, perguntar se uma sequencia de variáveis tipo int A, B, C, D, E, F coincide com alguma das linhas?

    perguntar se A = primeiro elemento da linha 1, B = segundo elemento da linha 1 ......

    depois fazer o mesmo com as demais linhas.

    Wednesday, August 28, 2013 2:05 AM
  • Seria assim:

    Fazer um for dentro do outro

    for(int i = 0; i < 2; i++) {
      for(int j = 0; j < 2; j++) {

           if (numbers2D[i,j] == 1){

           // Resposta A  

         }

      }

    }

    Seria mais ou menos isso ... ???



    Fúlvio Cezar Canducci Dias

    Wednesday, August 28, 2013 2:10 AM
  • Este é um esboço do que estou querendo fazer. Mas da o erro "O índice estava fora dos limites da matriz."

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace Compara
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public int A, B, C, D, E, F;
    
         
            public void processa() // rotina que atribui valores as variaveis
            {
    
            A=3; B=18; C=29; D=30; E=41; F=72;
            }
         
            
           
            int[,] numbers2D = new int[6,8] 
            { 
                 { 1 , 2, 3, 4, 5, 6 }
                ,{ 7, 8, 9, 10, 11, 12 }
                ,{ 2, 13, 24, 45, 57, 62 }
                ,{ 3, 18, 29, 30, 41, 72 }
                ,{ 12, 33, 44, 45, 57, 81 }
                ,{ 4, 34, 47, 56, 57, 68 } 
                ,{ 1, 23, 34, 45, 65, 71 }
                ,{ 12, 33, 44, 45, 57, 81 } 
            };
           
            private void button1_Click(object sender, EventArgs e)
            {
            for(int i = 0; i < 8; i++)
            {
                     
                if ((numbers2D[i,0] == A) && (numbers2D[i,1] == B) && (numbers2D[i,2] == C) && 
                   (numbers2D[i,3] == D) && (numbers2D[i,4] == E) && (numbers2D[i,5] == F))
                {
    
                 MessageBox.Show(" Sequencia coincidente encontrada", "Aviso !" );
    
              }
             }
            }
            }
    
        }
    se puder me ajudar agradeço.

    Wednesday, August 28, 2013 11:23 PM
  • Olha só é simples e lógico!

    Você criou a sua Matriz assim: 

    int[,] numbers2D = new int[6,8];

    que são 6 colunas com 8 linhas

    e no seu for se ta indo pela numero de linhas mais o i ta na coluna é só inverter

    visto que o i está indo até o 8 

    Entendeu!


    Fúlvio Cezar Canducci Dias

    Wednesday, August 28, 2013 11:44 PM
  • O indice fora dos limites da matriz indica que o numero indicado no 'for' é maior que o tamanho da matriz.

    No exemplo acima, as linhas e colunas estão invertidas. Seria 'int[,] numbers2D = new int[8,6]' . Com isso o loop seria 'for (int i = 0; i < 6; i++)', mas veja como podemos solucionar este problema de outra forma. 

            int[,] numbers2D = new int[,] 
            { 
                 { 1 , 2, 3, 4, 5, 6 }
                ,{ 7, 8, 9, 10, 11, 12 }
                ,{ 2, 13, 24, 45, 57, 62 }
                ,{ 3, 18, 29, 30, 41, 72 }
                ,{ 12, 33, 44, 45, 57, 81 }
                ,{ 4, 34, 47, 56, 57, 68 } 
                ,{ 1, 23, 34, 45, 65, 71 }
                ,{ 12, 33, 44, 45, 57, 81 } 
            };

    Veja que não indiquei o tamanho da matriz, com isso posso aumentar ou diminuir a matriz sem problemas.

    Para percorrer uma matriz sem saber o tamanho, ou sem indicar o tamanho

                for (int i = 0; i < numbers2D.GetLength(0); i++)
                {
                    if ((numbers2D[i, 0] == A) && (numbers2D[i, 1] == B) && (numbers2D[i, 2] == C) &&
                       (numbers2D[i, 3] == D) && (numbers2D[i, 4] == E) && (numbers2D[i, 5] == F))
                    {
                        MessageBox.Show(" Sequencia coincidente encontrada", "Aviso !");
                    }
                }




    Thursday, August 29, 2013 12:00 AM
  • Obrigado pela dica.
    Thursday, August 29, 2013 11:07 PM
  • Perfeito! como os dados da matriz podem ter de ser aumentados, isso evita que eu tenha de mexer no código. Novamente "perfeito" como solução para o uso de matrizes. Já testei e rodou OK.

    Obrigado.

    Thursday, August 29, 2013 11:09 PM