Porcentagem em Vetores

4 respostas
L

Bom são duas classes uma DataInputStream e uma DataOutInputStream, onde é um sisteminha de lancamento de dados, se executar a calsse DataOutInputStream ela vai mostrar qual a jogada e a quantidade de vezes cada face do dado apareceu. Bom o meu problema é o seguinte: “Não estou conseguindo saber o porquê, o meu arquivo esta gerando mais não com o que eu gostaria que é a jogada e a quantidade de vezes cada face do dado apareceu e também gostaria de saber como fazer para caucular porcentagem em vetores, ou seja, gostaria de saber quantos porcento do total as faces aparecem”
package pacote;

import java.io.DataOutputStream;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

public class DataOutputStream01 {

public static void main(String[] args) {
    File apontador = new File("arquivos/Exercicio01.txt");
   
    try {
        FileOutputStream manipulador = new FileOutputStream(apontador);
        DataOutputStream dataManipulador = new DataOutputStream(manipulador);

        for (int x = 1; x <= 100000; x++) {
            int jogada = x;
            int face = 1 + (int) (Math.random() * 6);
            dataManipulador.writeInt(jogada);
            dataManipulador.writeInt(face);
        }
        dataManipulador.close();
        manipulador.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

package pacote;

import java.io.DataInputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;
public class DataInputStream01 {

public static void main(String[] args) {

File apontador = new File(arquivos/Exercicio01.txt);

int  faces[] = {0,0,0,0,0,0};
try {
        FileInputStream manipulador = new FileInputStream(apontador);
        DataInputStream dataManipulador = new DataInputStream(manipulador);
        int jogada;
        do {
            jogada = dataManipulador.readInt();
            faces[dataManipulador.readInt()-1]++;
            System.out.println("Processando a jogada:  " + jogada);
        } while (dataManipulador.available() > 0);
        
        for(int x=0; x<faces.length; x++){
            System.out.println("Face"+(x+1)+": "+faces[x]);
        }
        dataManipulador.close();
        manipulador.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

4 Respostas

fabriciov

use o as tag de code

E

Não vou corrigir o seu programa, mas posto aqui um programa parecido, compare com o seu, e veja onde você pode ter errado.

package guj;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExemploDataInputOutputStream {

    public void criarArquivo(String nomeArquivo) throws IOException {
        DataOutputStream dos = null;
        try {
            dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(nomeArquivo)));
            for (int i = 1; i <= 100; ++i) {
                dos.writeInt(i);
            }
        } finally {
            if (dos != null)
                dos.close();
        }
    }

    public void lerArquivo(String nomeArquivo) throws IOException {
        DataInputStream dis = null;
        int soma = 0;
        try {
            dis = new DataInputStream(new BufferedInputStream(new FileInputStream(nomeArquivo)));
            // Atenção - não se recomenda usar available, a menos que você saiba que 
            // o DataInputStream é um arquivo em disco. Se for um Socket, por exemplo,
            // available pode voltar 0 mas o socket continuar aberto, bastando apenas
            // que mais dados cheguem. Este é o uso correto de available:
            while (dis.available() > 0) {
                soma += dis.readInt();
            }
        } finally {
            if (dis != null)
                dis.close();
        }
        System.out.printf("A soma dos 100 primeiros inteiros eh %d %n", soma);
    }

    /**
     * @param args
     */
    public static void main(String[] args) throws IOException {
        ExemploDataInputOutputStream edios = new ExemploDataInputOutputStream();
        String nomeArquivo = "c:\\temp\\teste.bin";
        edios.criarArquivo(nomeArquivo);
        edios.lerArquivo(nomeArquivo); // deve imprimir 5050
    }

}
L

Ah obrigada, vou dar uma olhada sim…
Se puder me dá uma ajudinha na questão da porcentagem com vetores,

Sem mais

Obrigada mais uma vez

E

Não vou ajudar coisa nenhuma (hoje não estou bonzinho), mas vou perguntar uma coisa para você.

Digamos que você fosse fazer o mesmo problema “na mão”, ou então em uma planilha Excel. Como é que você calcularia a tal da porcentagem?

Pegue um lápis e papel, e lance 10 vezes um dado (ou até mais - lance até você entender o problema).

Faça as contagens, e calcule as tais porcentagens.

Fazer o tal exercício “manualmente” vai lhe ajudar a resolver o problema com o computador. OK?

Criado 5 de fevereiro de 2013
Ultima resposta 7 de fev. de 2013
Respostas 4
Participantes 3