Soma

14 respostas
V

E aii galera tudo bom…

Venho pedir ajuda de voces mais uma vez.

O problema é o seguinte tenho que fazer uma matriz de 10 posições e gerar numeros aleatorios,
até ai OK, depois disso eu teria que somar esses numeros, na primeira vez soma certinho, mais se eu mandar gerar
de novo ele soma os 10 numeros da matriz junto com o resultado anterior. Lembrando que tenho dois botõeas o “GERA” e o “SOMA”;

Ex: 1,1,1,1,1,1,1,1,1,1 = 10 (ele soma normalmente)

mais qdo eu mando gera de novo

EX2: 2,2,2,2,2,2,2,2,2,2 = 20 ( ele soma esses 20 com os 10 do resultado anterior ficando 30, eu gostaria que só somasse apenas esse resultado)

public partial class Form1 : Form
    {
        int[] matriz = new int[10];
        Random rn = new Random();
        int [] valores  = new int[10];
        int soma;
        

        public Form1()
        {
            InitializeComponent();
        }

        public void mostrarMatriz()
        {
            lbxNum.Items.Clear();
           
            for (int i = 0; i < matriz.GetLength(0); i++)
            {
                lbxNum.Items.Add(matriz[i]);
                valores[i] += matriz[i];
                
            }
            
        }

        private void btnGera_Click(object sender, EventArgs e)
        {
            lbxNum.Items.Clear();
           
            for (int i = 0;i < matriz.GetLength(0); i++)
            {
                matriz[i] = rn.Next(1, 3);
               
            }
            mostrarMatriz();
        }

        private void btnSoma_Click(object sender, EventArgs e)
        {
            lbxNum.Items.Clear();

            for (int i = 0; i < valores.GetLength(0); i++)
            {
                soma += valores[i];
                
            }   

            lbxNum.Items.Add(soma);
            
        }
    }
}

14 Respostas

A

isso é continuação do tópico anterior,
http://www.guj.com.br/posts/list/211824.java
não duplique por favor, apenas dê sequência a ele.

public partial class Form1 : Form  
    {  
        int[] matriz = new int[10];  
        Random rn = new Random();  
        int [] valores  = new int[10];  
                  
  
        public Form1()  
        {  
            InitializeComponent();  
        }  
  
        public void mostrarMatriz()  
        {  
            lbxNum.Items.Clear();  
             
            for (int i = 0; i < matriz.GetLength(0); i++)  
            {  
                lbxNum.Items.Add(matriz[i]);  
                valores[i] += matriz[i];  
                  
            }  
              
        }  
  
        private void btnGera_Click(object sender, EventArgs e)  
        {  
            lbxNum.Items.Clear();  
             
            for (int i = 0;i < matriz.GetLength(0); i++)  
            {  
                matriz[i] = rn.Next(1, 3);  
                 
            }  
            mostrarMatriz();  
        }  
  
        private void btnSoma_Click(object sender, EventArgs e)  
        {  
            int soma = 0;  //deixe a soma aqui, assim toda vez que ele realizar a soma, ele terá valor 0 e somará seus valores.
            lbxNum.Items.Clear();  
  
            for (int i = 0; i < valores.GetLength(0); i++)  
            {  
                soma += valores[i];  
                  
            }     
  
            lbxNum.Items.Add(soma);  
              
        }  
    }  
}
V

DESCULPA!!!

e muito obrigado, me ajudou bastante…

Só uma dúvida qual a diferença de colocar a soma lá encima que seria uma variavel para toda a classe
e colocar ele no método??

A

A variável no escopo da classe, uma vez que você efetuar a soma, ela vai continuar com o valor armazenado nela depois da operação, já na variável do método, toda vez que você invocá-lo (o método), essa variável vai ser inicializada sempre com o valor 0.

V

Muito obrigado.

agora se eu quiser fazer um novo botão para achar o maior elemento da classe
eu utilizaria um FOR e comparando elemento por elemento??

A

Seria uma das opções, se você está estudando e só chegou até o for, utilize-o

Exemplo:

int maior=0;
for(i=0; i < valores.GetLength(0); i++){
     if (valores[i] > maior){
         maior = valores[i];
    }
}
System.out.println(maior);

algo do tipo

V

è foi desse jeito msm q eu fiz agora se eu fosse fazer com o menor elemento
eu teria que colocar na variavel umnumero maior do que o possivel??
tipo minha matriz so gera elemento até 100 eu faria assim:

int aux = 101 ;
            lbxNum.Items.Clear();

            for (int i = 0; i < matriz.GetLength(0); i++)
            {
                if (matriz[i] < aux)
                    aux = matriz[i];
            }
            lbxNum.Items.Add(aux);
A

sim, o resultado que você obteria seria o que você deseja.
se você gera números de 0 - 100, você poderia colocar também
int aux = -1;

V

Ow muito obrigado mesmo pela força…

Muito grato.

V

Galera gostaria que me ajudassem mais uma vez,
depois de gerados os numeros aleatorios gostaria de ordena-los
como eu faria isso?? lembrando que seria em um botão “ORDENAR”;

Grato

A

Veja se isso te ajuda:

Arrays.sort(valores);

for (int valor : valores){
System.out.println(valor);
}
V

Ficaria assim??

private void btnOrdena_Click(object sender, EventArgs e)
        {
            lbxNum.Items.Clear();
          
           Array.Sort(valores);   
  
           for (int valor : valores)
           {   lbxNum.Items.Add(valores);
  
          }
A

Esqueci que você não estava utilizando o laço for dessa maneira

private void btnOrdena_Click(object sender, EventArgs e)  
        {  
            lbxNum.Items.Clear();  
            
           Array.Sort(valores);     
    
           for (int valor : valores)  
           {   lbxNum.Items.Add(valor); 
    
          } 
          mostraMatriz();
}

essa é a mesma estrutura do for que você conhece porém simplificada:

for( int valor : valores){
System.out.println(valor);
}
//significa que todos os valores do seu vetor passarão por int valor.
//Aquele for é exatamente esse simplificado:
for(int i=0; i < valores.length ; i++){
        System.out.println(valores[i]);
}
V

Com esse FOR mais simplificado não deu certo mais com o outro sim,
só deixa eu ve se eu entendi o que faz a matriz ficar ordenada é o “Array.sorte”??

A

o sort ordena ele. Dá uma olhada na API do java 6 quando tiver dúvida

olha aqui sobre Array, e dê uma olhada que o sort tá lá também.
Array

Criado 9 de julho de 2010
Ultima resposta 10 de jul. de 2010
Respostas 14
Participantes 2