Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Frequência numérica


ZueRa

Pergunta

Boa tarde!

Como poderei fazer um procedimento que conte quantos números há em um arquivo de texto?

Exemplo

tenho num arquivo X:

2

4

2

2

2

sendo assim, ao clicar num botão ele contasse quantos números há nele.

No caso:

(4) - números 2

(1) - número 4

Agradeço desde já,

Thiago.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Coloque num Memo

2

4

2

2

2

3

2

5

3

6

depois use este codigo que tinha aqui no forum e que foi modificado para esta finalidade

procedure TForm1.Button1Click(Sender: TObject);
var
  texto: array[0..10] of string; // Numero de linhas do Memo1
  i, n, c : Integer;
  valor: string;
  indice: Integer;
  ok: Boolean;
  numero : string;
begin
  // exibe na ordem original
  for i := Low(texto) to High(texto) do
    texto[i] := Memo1.Lines.Strings[i];

  // faz a ordenação
  repeat
    ok := False;
    indice := 0;
    repeat
      if CompareStr(texto[indice], texto[indice + 1]) > 0 then
      begin
        valor := texto[indice];
        texto[indice] := texto[indice + 1];
        texto[indice + 1] := valor;
        ok := True;
      end;
      Inc(indice);
    until(indice > High(texto));
  until(ok = False);
  // fim ordenação

  Memo2.Clear;
  // exibe o array ordenado
  for i := Low(texto) to High(texto) do
    Memo2.Lines.Append(texto[i]);

  // Posiciona o cursor na primeira linha do Memo  
  Memo2.SelStart := Perform(EM_LINEINDEX, 0, 0);

  // Recebe o primeiro valor da linha do memo 
  numero := Memo2.Lines.Strings[0];
  c := 0;
  // Limpa o Memo3
  Memo3.Clear;

  // contabiliza os numeros que são iguais 
  for i := Low(texto) to High(texto)+1 do
     begin
        if numero = Memo2.Lines.Strings[i] then
           begin
              c := c + 1;
              numero := Memo2.Lines.Strings[i];
           end
        else
           begin
              Memo3.Lines.Append(numero + ' = ' + inttostr(c) + ' vez(es)');
              c := 1;
              numero := Memo2.Lines.Strings[i];
           end;

     end;

end;

Resultado:

2 = 5 vez(es)

3 = 2 vez(es)

4 = 1 vez(es)

5 = 1 vez(es)

6 = 1 vez(es)

explicando melhor:

Em um componente Memo1 coloquei os numeros que deverão ser contados ( podem estar aleatorios )

No Memo2 esses mesmos numeros serão ordenados, pois dessa maneira fica mais facil contabiliza-los

No Memo3 o resultado

OBS: O programador deve saber como utilizar os códigos para obter os resultados esperados, mesmo que aparentemente o código sirva para outro objetivo.

Isso tambem poderia ser feito de outras maneiras ... Zuera voce ainda chega lá ...

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...