Olá pessoal.
Gostaria de algumas dicas para tentar resolver um exercício da facul, alguém pode me ajudar?
No caso, eu estou iniciando em java e não sei quase nada da sintaxe. O que eu tenho que fazer é criar uma matriz com uma estrutura pessoa, que tenha nome, cpf, salario e desconto. Nisso preencher a matriz na ordem de 70x100 e fazer um calculo para que me traga:
Média dos salários com desconto
Média dos salários sem desconto
Mediana dos salários com desconto
Mediana dos salários sem desconto
Na seguintes condições:
Que o salário seja: 300,00 < Salario < 10.000,00
E o desconto: 7% < Desconto < 28%
Eu fiz pouca coisa, mas estou em dúvida em como poderia preencher a matriz toda sem utilizar o random e se faria duas funções, uma para calcular a média dos salários com e sem desconto e outra para calcular a mediana dos salários com e sem desconto, ou poderia fazer com apenas uma função? Alguém teria alguma idéia?
Segue abaixo o meu código:
[code]import java.util.Random;
class ePessoa {
String nome;
int cpf;
double salario;
double desconto;
}
public class pessoa {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Random rnd = new Random();
ePessoa matPessoas[][] = new ePessoa[70][100];
for (int l = 0; l < matPessoas.length; l++) {
for (int c = 0; c < matPessoas[l].length; c++) {
}
}
calcMediaMediana(matPessoas);
System.out.println("Média dos salários com desconto: ");
System.out.println("Média dos salários sem desconto: ");
System.out.println("Mediana dos salários com desconto: ");
System.out.println("Mediana dos salários sem desconto: ");
}
private static void calcMediaMediana(ePessoa people[][]){
// condição para salário: 300,00 < Salario < 10.000,00
// condição para desconto: 7% < Desconto < 28%
// achar média e mediana dos salários com e sem desconto
}
}[/code]
Não entendi pq precisa da matriz , um array simples é muito melhor .
Coloque a logica de desconte dentro da classe pessoa
Seria bom tb implementar mais algum encapsulamento
(Nota: CPF não é um inteiro)
class ePessoa {
String nome;
String cpf;
double salario;
double desconto;
public double salarioBase(){
return salario;
}
public double salarioComDesconto(){
if (salario>=300d && salario <=1000d ){
return salario * desconto ; // estou supondo que desconto é um percentual já calculado
}
return salario;
}
}
Use array simples
média:
percorra todas as pessoas no array e some os salários, divida no fim pelo numero de pessoa (array.length)
mediana:
ordene o array de pessoa com base no salario. Use a classe Arrays e crie um Comparator
Se o numero de pessoa é impar a mediana é o valor do salário da pessoa no array ordenado com indice ((array.length +1)/2 -1)
Se for par é a média dos salários nas posições (array.length/2-1) e (array.length/2)
cria uma collection depois percorre com um for each e divide pelo size é bem melhor de trabalhar
Galera tou precisando calcular a media e o desvio padrao dos dados (floats) dum dado ficheiro!!
Mas não tou conseguindo Sou novo nestas andanças e entao ainda nao domino mt bem ficheiros
Mt Obrigado
[quote=BrunoNave]Galera tou precisando calcular a media e o desvio padrao dos dados (floats) dum dado ficheiro!!
Mas não tou conseguindo Sou novo nestas andanças e entao ainda nao domino mt bem ficheiros
[/quote]
Acesso a arquivos é feito com FileInputStream para ler e FileOutputStream para escrever.
A leitura é feita com um Reader. BufferedReader é aconselhado para ler linha a linha.
supondo que o seu arquivo tem um dado por linha assim:
2.3
5.78
8.3
3.45
eis o codigo para leitura
public List<Double> readFile ( String caminhoDoArquivo ){
// lista para colocar os valores
List<Double> valores = new ArrayList<Double>();
// repare na composição de streams
BufferedReader reader = new BufferedReader (new InputStreamReader(new FileInputStream(caminhoDoArquivo )));
try {
String line;
while ((line = reader.readLine())!=null){
// a linha contém a string do numero. precisamos converter ara double
double d = Double.parseDouble(linha.trim());
valores.add(d);
}
return valores;
} finally {
reader.close();
}
}
Com a lista de valores é facil calcular a média ( soma todos e divide pelo numero de elementos)
Amigo não tenho muita experiencia em relação a Java não mas acho q essa linguagem de codigo ai te ajuda em sua duvida. abração.
import javax.swing.JOptionPane;
public class MediaNota {
public static void main(String[] args) {
float Nota1 = 0;
float Nota2 = 0;
float Nota3 = 0;
float Nota4 = 0;
float Nota5 = 0;
float Nota6 = 0;
float mediaNota = 0;
float total = 0;
// lendo as notas
Nota1 = Float.parseFloat(JOptionPane.showInputDialog(null,“Informe a nota de portugues”,“Informe a nota de portugues”,JOptionPane.QUESTION_MESSAGE));
Nota2 = Float.parseFloat(JOptionPane.showInputDialog(null,“Informe a nota de matematica”,“Informe a nota de matematica”,JOptionPane.QUESTION_MESSAGE));
Nota3 = Float.parseFloat(JOptionPane.showInputDialog(null,"Informe a nota de Ciencias ",“Número de Ciencias”,JOptionPane.QUESTION_MESSAGE));
Nota4 = Float.parseFloat(JOptionPane.showInputDialog(null,"Informe a nota de Fisica ",“Número de Fisica”,JOptionPane.QUESTION_MESSAGE));
Nota5 = Float.parseFloat(JOptionPane.showInputDialog(null,"Informe a nota de Geografia ",“Número de Geografia”,JOptionPane.QUESTION_MESSAGE));
Nota6 = Float.parseFloat(JOptionPane.showInputDialog(null,"Informe a nota de Historia ",“Número de Historia”,JOptionPane.QUESTION_MESSAGE));
// calculando as notas
total = Nota1 + Nota2 + Nota3 + Nota4 + Nota5 + Nota6;
// calculando a media das notas
mediaNota = total / 6;
// imprimindo as a media
JOptionPane.showMessageDialog(null,"Média de suas nota: " + mediaNota);
System.exit(0);
}
}