Métodos de ordenação

2 respostas
E

Estou fazendo um programa que lê um número de unidades vendidas de um certo produto em 4 filiais de uma loja nos 6 primeiros meses do ano, é o programa deve imprimir uma tabela com os valores digitados e informar qual loja teve as maiores vendas qual o pior e melhor mês de vendas do ano nas 4 lojas minha idéia para esse programa e a seguinte:
fiz uma matriz 4*6 onde as linhas vão representar as lojas e as colunas vão representar os meses do ano, para informar qual loja obteve maior resultado eu tenho que pegar a maior linha isso já consegui fazer meu grande problema e pegar o maior mês alguém tem idéia de com vo fazer pra conseguir??? vo deixar meu código logo abaixo para ficar mais fácil o esclarecimento

import javax.swing.*;

public class AED12
{
	public static  int i,j;
	
	public static void main(String args[])
	{
		
		AED12 a = new AED12();
	    String saida="Programa 12\n";
	    int mat[][]=new int [4][6];
	    int linha[]= new int[4];
		JTextArea texto = new JTextArea(10,10);
		int cont=0;	
		for(i=0;i<4;i++)
		{
		    saida+="\nLoja"+(i+1)+"\n\n";
			for(j=0;j<6;j++)
			{		
				saida+=mat[i][j]=Integer.parseInt(JOptionPane.showInputDialog(null,"Dígite a venda do produto "+(i+1)+"º no mês "+(j+1)+"º",(i+1)+"ª FILIAL ",JOptionPane.WARNING_MESSAGE));
				saida+="   ";
				cont+=mat[i][j];
			}
			saida+="\n";
			linha[i]=cont;
			cont=1;
		}
		saida+="\n";
    	saida+="A loja com maior venda foi a loja "+maiorOrdenacao(linha);
   	    saida+="\n";
   	   

   	  
        texto.setText(saida);
	
		JOptionPane.showMessageDialog(null,texto);		
		
	}
   //****************************************************** 
   	public static int  maiorOrdenacao(int linha[])
	{
	   int aux1=0;
       for (int i = 0; i < linha.length; i++)
       {
          for (int j = linha.length - 1; j > i; j--)
          {
             if (linha[j] < linha[i]) 
              aux1=(i+1);
          }
          
       }
       if(aux1==0)
       return 1;
       return aux1;
    }
  
	
}

Me ajudem já tentei de tudo mais não estou conseguindo fazer…!

2 Respostas

F

Bom cara,

eu não sou a pessoa mais apropriada para te ajudar, mas pelo que eu percebi no seu codigo, ele está pegando as Loja3 pois comparando mês a mês a Loja3 tem um mês com valor 56 que é o maior entre as lojas…

Nesse caso eu aconselho você verificar a comparação dos meses…pois o quinto mês da loja3 tem o maior valor entre as outras lojas…

Voc~e tambem pode criar um outro metodo que faz a ordenação e ai voce passa como parametro a coluna…

Não sei se te ajudei…

Fabiano Patricio.

E

cara quebrei minha cabeça a questão da loja que mais faturo eu já resolvi
a que menos faturo e o mesmo processo tenho que fazer outro método agora ta faltando o pegar o maior mês, mais ta quase pronto vo deixar meu código pra vc dar uma olhada…!
se quizer implementar fique a vontade…!

import javax.swing.*;

public class AED12
{
   public static  int i,j;
   
   public static void main(String args[])
   {
      
      AED12 a = new AED12();
       String saida="Programa 12\n";
       int mat[][]=new int [4][6];
       int linha[]= new int[4];
      JTextArea texto = new JTextArea(25,50);
      
      int cont=0;   
      for(i=0;i<4;i++)
      {
          saida+="\nLoja"+(i+1)+"\n\n";
         for(j=0;j<6;j++)
         {
         	saida+="Mês "+(j+1)+" Recebeu (";      
            saida+=mat[i][j]=Integer.parseInt(JOptionPane.showInputDialog(null,"Dígite a venda do produto "+(i+1)+"º no mês "+(j+1)+"º",(i+1)+"ª FILIAL ",JOptionPane.WARNING_MESSAGE));
            saida+=")";
            saida+="   ";
            cont+=mat[i][j];
           
         }
         saida+="\n";
         linha[i]=cont;
         cont=1;
      }
       saida+="\n";
       saida+="A loja com maiores vendas foi a loja "+(1+maiorVendas(linha));
       saida+="\n";
       
       saida+="O maior mês de vendas foi "+((maiorMes(mat)+1)%4==0||(maiorMes(mat)+1)%4!=0?(maiorMes(mat)+1)%4:6);
       
       
         

       
        texto.setText(saida);
   
      JOptionPane.showMessageDialog(null,texto,"Programa 12",JOptionPane.WARNING_MESSAGE);      
      
   }
   //******************************************************
   public static int  maiorVendas(int linha[])
   {
      int maior=0;
       for (int i = 0; i < linha.length; i++)
       {
          if(linha[i]>linha[maior])
          {
          	maior=i;
          }
         
       }
       return maior;
    }
   //******************************************************
   public static int maiorMes(int mat[][])
   {
   	 int cont=0,aux=-1,maior=0,aux2=0;
   	 int vet[] = new int[24];
   	 
   	   	for(i=0;i<4;i++)
   	   	{
   	   		for(j=0;j<6;j++)
   	   		{
   	   			cont=mat[i][j];
   	     	   	aux++;
   	   			vet[aux]=cont;		    			
   	   			cont=0;
   	   		}
   	   	}
   	   	
   	  maior=vet[0];
   	  for(i=0;i<24;i++)
   	  {
   	  	if(vet[i]>maior)
   	  	{
   	  		maior=vet[i];
   	  		aux2=i;
   	  		
   	  	}
   	  	
   	  }
   	   	
   	   	
   	   	return aux2;
   }
 
   
}
Criado 25 de agosto de 2006
Ultima resposta 25 de ago. de 2006
Respostas 2
Participantes 2