Ajuda em matriz (resolvido)

8 respostas
L

Boa noite pessoal, estou fazendo uma programação, mas fiquei com uma dúvida, a questão é a seguinte: Uma empresa de saneamento básico deseja fazer o controle do gasto (litros) de água de uma residência qualquer no primeiro semestre durante dois anos. Cada semestre é composto de 6 valores que são equivalentes ao meses do ano (jan-jun). A empresa deseja saber qual a quantidade de litros gastos em cada semestre, total de litros nos mesmos meses de cada ano. Mostre os anos, meses e valores calculados.

Fiz o código da seguinte forma:

int[] a = new int[6], b = new int[6];
int ano1,ano2;
int sem1 = 0,sem2=0;
String sa= "", sb= "";
ano1 = Integer.parseInt(JOptionPane.showInputDialog("Informe o ano"));

for(int i=0;i<a.length;i++)
{

a[i] = Integer.parseInt(JOptionPane.showInputDialog("Informe o gasto do semestre"));
sem1+=+a[i];

sa = sa+a[i]+" , ";
}

ano2 = Integer.parseInt(JOptionPane.showInputDialog("Informe o ano 2"));

for(int i=0;i<b.length;i++)
{
b[i] = Integer.parseInt(JOptionPane.showInputDialog("Informe o gasto do semestre"));
sem2+=+b[i];

sb = sb+b[i]+" , ";
}

JOptionPane.showMessageDialog(null, "Ano "+ano1+"\n"+"gastos dos meses jan a jun: "+sa+"\n"+"Gasto do primeiro semestre deste ano = "+sem1);
JOptionPane.showMessageDialog(null, "Ano "+ano2+"\n"+"gastos dos meses jan a jun: "+sb+"\n"+"Gasto do primeiro semestre deste ano = "+sem2);
    }}

Gostaria de uma forma que mostrasse os meses separados com seus respectivos gastos. Alguem saberia como posso fazer isso?
Desde já agradeço

8 Respostas

drsmachado
Exercício - para casa.

Vamos , considere que cada mês é uma casa no teu array.

Sendo assim:

1 - A empresa deseja saber qual a quantidade de litros gastos em cada semestre = você precisa de 1 array (vetor) para cada ano;

2 -  total de litros nos mesmos meses de cada ano, quando finalizar a entrada de dados, você precisa pegar e somar as posições iguais, ou seja, toda posição 1, de cada array, será somada para totalizar os gastos acumulados de janeiro. Se quiser, crie outro vetor e coloque ali os valores somados, ordenando por mês;

3 -  Mostre os anos, meses e valores calculados = a mais simples, cada vetor terá um nome, você poderá fazer uma verificação por nome ou colocar a indicação em uma casa, etc.
rebinho

lety_cia, você já tem 2 arrays de 6 posições (jan…jun).

Em toda “rodada/volta” do loop você pede o seguinte: b[i] = Integer.parseInt(JOptionPane.showInputDialog("Informe o gasto do semestre"));
Acho que poderia fazer algo tipo:

for(int i=0; i < a.lenght; i++){ switch(i){ case 0: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Janeiro: ")); break; case 1: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Fevereiro: ")); break; case 2: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Março: ")); break; case 3: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Abril: ")); break; case 4: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Maio: ")); break; case 5: a[i] = Integer.parseInt(JOptionPane.showInputDialog("Valor de Junho: ")); break; } }
Com isso você já teria os valores do semestre… E saberia qual posição da array se refere ao mês que deseja exibir… Se quisesse exibir só março dos dois anos era só exibir o índice 2 dos arrays, se quisesse todos só criar um laço, que poderia usar pra somar os meses também…

Pode fazer de várias formas, mas creio que assim seja simples de entender!

L

Entendi, mas o que eu gostaria é que não na pergunta mostrasse os meses, mas sim na hora de mostrar os valores, ex: jan:(total de litros), fev: (total de litros)… Da forma mais simplificava possivel.

R

até poderia fazer isso mas como vc saberia qto gastou em cada mês? tirando uma média? ou a pessoa informaria qto gastou mês a mês ou vc teria que tirar a média…

se for tirar a média dae é fácil demais…

só pegar o valor do semestre, dividir por 6, criar um array com 6 posições e cada posição preencher com um mês e depois fazer um for, imprimindo o nome do mês + a média calculada… entendeu?

L

Entendi sim, mas o problema não quer que mostre a média do semestre, somente o total e o gasto de todo mês mesmo.

rebinho

Mais num vai mudar quase nada na hora de exibir.... É só pegar o exemplo e mudar um pouquinho!

Mais tudo bem vamos lá :
int[] semestre1 = new int[6], semestre2 = new int[6];
int totalSemestre1, totalSemestre2;

JOptionPane.showMessageDialog(null, "Digite os valores de ano 1!");
for(int i = 0; i < 6; i++){
     semestre1[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor "+(i+1)+": "));
     totalSemestre1 = totalSemestre1 + semestre1[i];
}

JOptionPane.showMessageDialog(null, "Digite os valores de ano 2!");
for(int i = 0; i < 6; i++){
     semestre2[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor "+(i+1)+": "));
     totalSemestre2 = totalSemestre2 + semestre2[i];
}

JOptionPane.showMessageDialog(null, "O total dos dois semestre é "+(totalSemestre1+totalSemestre2));
JOptionPane.showMessageDialog(null, "O total do primeiro semestre é "+totalSemestre1);
JOptionPane.showMessageDialog(null, "O total do segundo semestre é "+totalSemestre2);

JOptionPane.showMessageDialog(null, "Meses do primeiro semestre!");
for(int i=0; i < 6; i++){  
     switch(i){  
             case 0: JOptionPane.showMessageDialog(null, "Valor de Janeiro: "+semestre1[i])); 
                         break;  
             case 1: JOptionPane.showMessageDialog(null, "Valor de Fevereiro: "+semestre1[i])); 
                         break; 
             case 2: JOptionPane.showMessageDialog(null, "Valor de Março: "+semestre1[i])); 
                         break;  
             case 3: JOptionPane.showMessageDialog(null, "Valor de Abril: "+semestre1[i])); 
                         break; 
             case 4: JOptionPane.showMessageDialog(null, "Valor de Maio: "+semestre1[i])); 
                         break;   
             case 5: JOptionPane.showMessageDialog(null, "Valor de Junho: "+semestre1[i])); 
                         break;  
     }  
} 

JOptionPane.showMessageDialog(null, "Meses do segundo semestre!");
for(int i=0; i < 6; i++){  
     switch(i){  
             case 0: JOptionPane.showMessageDialog(null, "Valor de Janeiro: "+semestre2[i])); 
                         break;  
             case 1: JOptionPane.showMessageDialog(null, "Valor de Fevereiro: "+semestre2[i])); 
                         break; 
             case 2: JOptionPane.showMessageDialog(null, "Valor de Março: "+semestre2[i])); 
                         break;  
             case 3: JOptionPane.showMessageDialog(null, "Valor de Abril: "+semestre2[i])); 
                         break; 
             case 4: JOptionPane.showMessageDialog(null, "Valor de Maio: "+semestre2[i])); 
                         break;   
             case 5: JOptionPane.showMessageDialog(null, "Valor de Junho: "+semestre2[i])); 
                         break;  
     }  
}
Bom acho que já fiz sua lição de casa... xD E assim já está bemmm simples, mesmo que queira algo diferente serve como base, só alterar. E sugiro que de uma olhada nas apostilas da Caelum , de uma olhada na FJ-11 aprenderá melhor usar laços e array!

Abraço!

L

Hum, ajudou sim e muito. Muito obrigada

rebinho

De nada. Também estou aprendendo e fico feliz em poder ajudar!
Mas caso não tenha mais dúvidas relacionadas a esse exercício por favor edite seu primeiro post e coloque [RESOLVIDO] no título, pra deixar a bagaça mais organizada! :wink:

Abraço!

Criado 24 de junho de 2011
Ultima resposta 25 de jun. de 2011
Respostas 8
Participantes 4