Jump to content
Sign in to follow this  
Moneybag

Eficiencia de Algoritmo

Recommended Posts

Moneybag

Boas

Estou a criar uma aplicação que faça a estatística de um determinado conjunto de números inseridos pelo utilizador e guardados no ficheiro de texto. Mas sei de duas maneiras possíveis de fazer esta estatística:

Estatística Necessária (exemplo):

- Qual a média dos números presentes no ficheiro.

- Quantos números maiores que x no ficheiro.

- Quantos números menores que x no ficheiro.

- Numero de vezes em percentagem que x numero aparece no ficheiro.

Primeira forma de o fazer:

Fazer a contagem da estatística directamente no ficheiro.

do tipo ("Quantos números maiores que x no ficheiro"):

int count=0;
int number=null;
do {
number=convert.toint32(reader.readline());
if(number>10)
count++
while(number!=0)

Segunda forma de o fazer:

Copiar todos os números para um array e percorrer o mesmo array em todas as perguntas de estatística.

Conclusão:

primeira forma tem de percorrer o ficheiro por cada pergunta, devido ao facto de os números não serem guardados em variáveis.

segunda forma sempre que o utilizador inserir um número tem que ser feito um novo array de tamanho diferente pois existe mais números no ficheiro.

Sabendo que o utilizador está continuamente a inserir números e a estatística em feita em tempo real, qual a forma mais eficiente em termos de recursos do computador?

Share this post


Link to post
Share on other sites
softklin

Não sei se percebi bem, mas podes sempre guardar informação sobre o ficheiro (não necessariamente o seu conteúdo).

Por exemplo, para o caso dos números maiores/menores que X, podes usar dois simples contadores, que incrementas conforme o caso (maior ou menor). Para o caso da média, podes considerar ter uma variável soma e outra com o nº de registos. Ao encontrares um novo registo, basta somá-lo ao teu total e dividires pelo número de registos + 1 (o mais recente). Podes sempre pensar em soluções que usem memória com informações "intermédias" (algumas variáveis) para qualquer caso.

Para o caso de chegar um novo registo, terás de percorrer o ficheiro até ao fim, e obter os novos dados. Não te livras de percorrer o ficheiro sempre que queres aceder aos dados mais recentes, mas pelo menos não perdes tempo em converter todos os valores para inteiros e fazer todas as contas novamente.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
Moneybag

A questão é se o utilizador inseri uma média de 90 números e eu fazer estatística a 7 perguntas isto dará no total a:

Na primeira forma dará:

630 leituras ao ficheiro (90x7 por cada vez que insere um numero)

Na segunda forma dará:

90 leituras (Lê um vez para criar o array)

+

90 arrays

Qual será o mais eficiente?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.