Ir para conteúdo
Fórum Script Brasil

cavotta

Membros
  • Total de itens

    42
  • Registro em

  • Última visita

Posts postados por cavotta

  1. Tome o tipo long long int:

    Este tipo tem 64bits de memória, ou seja, pode representar até 2^64 valores.

    Isso vale tanto para signed quanto para unsigned.

    Mas signed tem que representar os números negativos e o unsigned não.

    Limites:

    signed := -(2^63-1) a (2^63-1)

    unsigned := 0 a (2^64-1)

    Por isso, se você deseja representar um número grande, e sabe que ele nunca vai ser negativo, use unsigned.

  2. Olá.

    O segredo é a função de comparação.

    Não sei se precisa de alguma linguagem específica, mas senão, suponha que existe uma função que compara

    strings:

    integer strcmp(string1, string2)

    retorna 1 se string1 > string2

    retorna -1 se string1 < string2

    retorna 0 se string1 = string2

    observe que os operadores de comparação são lexicográficos. Dependendo da aplicação isso pode gerar problemas pois:

    "100" < "20" -- comparação lexicográfica

    100 > 20 -- comparação numérica

    Sobre a busca seqüencial - simples e ineficiente:

    faça um loop que percorra o vetor até encontrar o que você quer (ou seja, quando strcmp(str1,str2) = 0) ou até o final (se não encontrar).

    pseudo-código:

    enquanto não fim do vetor faça;
      se strcmp(string,vetor[i]) = 0 
        retorne i;
    fim enquanto;
    retorne FALSE;
    Sobre a busca binária - não tão simples e eficiente: primeira coisa: o vetor tem de estar ordenado sob strcmp(). Aqui você define um max e um min, que são os limites da procura, você reduz os limites de acordo com o resultado da comparação. pseudo-código:
    min = 0, max = tamanho do vetor;
    enquanto (max > min) faca 
    
      mid = (min+max)/2;
    
      res = strcmp(string,vetor[mid]);
      
      // a string que deseja está na metade superior dos limites considerados
      se (res > 0) faça
        min = mid;
      // a string que deseja está na metade inferior dos limites considerados
      senão se (res < 0) faça  
         max = mid;
      // strcmp = 0. logo, encontramos a string desejada.
      senão
        retorne mid;
    fim enquanto
    
    retorne FALSE;
    

    PS: tem que ver os limites direitinho, somando 1 aqui e ali, pois isso aqui é só um rascunho rápido!

  3. Olá.

    Acho que não há problema em usar int já que no programa as variáveis não fogem de inteiro.

    Unsigned long long int representa perfeitamente qualquer número inteiro de 0 a 2^64-1, e pelo que eu percebi o pograma não passa disso.

    Agora, se a variável ultrapassar 64bits, meu amigo, aprenda java, pois para isso você vai precisar de uma estrutura de dados de comporte BigInteger, e fazer todas as operações (aí não há long double que resolva). Em java já tem tudo implementadin B)

  4. Olá, Synk.

    Como o fgets lê qualquer caracter, ele vai ler o '\n' que o usuário aperta no

    scanf("%d",&opcao);
    Para corrigir isso, acho que basta acrescentares um getchar() logo depois do scanf, para que ele ignore o caracter que o usuário apertou depois de fornecer dado ao scanf.
    scanf("%d",&opcao);
    getchar();

  5. Olá.

    Coloque o '\n' fora do 'for' mais de dentro:

    main()
    {
    for(t=0;t<=knotmax;t++){
      for(u=0;u<=knotmax;u++){
        printf("\t    %.4f",matrixA[t][u]);
      }
      printf("\n");
    }

×
×
  • Criar Novo...