Ir para conteúdo
Fórum Script Brasil

icemaster

Membros
  • Total de itens

    6
  • Registro em

  • Última visita

Posts postados por icemaster

  1. Galera alguém pode por favor me dar uma luz nesse algoritmo..

    o problema que tenho é o seguinte; teoricamente a cifra funciona assim: C=(P+K)%26 Onde C é a mensagem criptografada, P texto plano, K a chave.

    só que só funcionaria corretamente se as letras estivessem numeradas de 1-26, mas eu quero ler direto do arquivo, ou seja, as letras tem valores diferentes..

    'a' = 97 por exemplo.

    como devo proceder?

    até agora tentei assim:

    int main()
    {
        FILE *crip, *crip2;
        char p, c, k[10];
        int i=0;
        
        crip=fopen("entrada.txt", "r");
        crip2=fopen("saida.txt", "w");
        if (crip!= NULL)
        {
         printf("\n\nPor favor digite chave de encriptacao: ");
         gets(k);
        while((p=fgetc(crip)) != EOF)
         {
          
          c=(p+k[i])-65;
          fputc(c, crip2);
          i+=1;
         }
        }
        else
        {
             printf("Falha ao criar arquivo");
             exit(1);
        }
         
        fclose(crip);
        system("pause");
    }

    sobre a cifra:

    http://pt.wikipedia.org/wiki/Cifra_de_Vigen%C3%A8re

  2. Muito obrigado Durub, entendi sim essa parte da pilha. Só que eu axo melhor não usa-la porque nem deu ainda em sala de aula, aí o professor pode axar q eu colei =x

    Mas você falou sobre uma função chamada atof.. isso pode resolver meus problemas.

    Porque no caso eu nem preciso de uma expressão numérica tão grande, com 1 operação já basta. ex: 5x3

    Aí no caso eu axo que dá pra fazer sem a pilha correto?

    Só não sei como funciona essa função atof, vou pesquisar aqui.

  3. Não entendi muito bem o que você disse.. qual seria o propósito do Array? Tipo, minha dúvida é quanto ao tipo de variável.. pois no inicio eu tenho que declarar 3 variáveis sendo 2 do tipo Float para os números e 1 do tipo char pra o operador.

    Mas caso o usuário queira fazer uma conta de Log por exemplo ele vai usar um Número e logo depois ele vai digitar LOG, ou seja vai dar erro pois eu já defini a variável como Float(float float char).

    Teria que ter uma variável que armazena-se 2 tipos de variáveis ou sei lá.. não consigo pensar em nada.

    E o professor não quer que o programa pergunte ao usuário qual tipo de operação ele vai usar antes.

    Obrigado desde já!

  4. Pessoal, estou com um probleminha aqui nesse programa. O professor pediu pra fazer uma calculadora polonesa onde você coloca primeiro os valores e por ultimo a operação. exemplo: 5/2, ficaria 5 2 /. Eu consegui fazer com as 4 operações basicas: soma, sub, mult, div. O problema é com o logaritmo(log) e raiz quadrada(sqrt).

    pois pra calcular raiz quadrada por exemplo eu não preciso de 3 variaveis como no caso da soma por exemplo.

    meu código ta assim:

    main()
    {
          
          char operador, resp;
          float num1, num2, resultado;
                
          resp='S';
          
          printf("###############################################\n");
          printf("#BEM VINDO A CALCULADORA POLONESA REVERSA(RPN)#\n");
          printf("###############################################\n\n");
          
          /* Inicia a calculadora */
          while (resp=='S' || resp=='s')
          {
                printf("Escvreva uma operacao:\n"); scanf("%f %f %c", &num1, &num2, &operador);                
                
                /* Verifica se os operadores são validos */
                while(! num1 || ! num2 || ! operador)
                {
                   printf("Operador invalido\n");
                   /* Limpa o buffer do teclado */
                   fflush(stdin);
                   printf("Escvreva uma operacao:\n"); scanf("%f %f %c", &num1, &num2, &operador);
                   }
              
                  /* Escolhe a operacao aritmetica */
                   switch (operador)
                          {
                                    case '+': resultado=num1+num2;
                                         break;
                                    case '-': resultado=num1-num2;
                                         break;
                                    case '*': resultado=num1*num2;
                                         break;
                                    case '/': resultado=num1/num2;
                                         break;
                            }
          /* Escreve na tela o resultado */    
          printf("%d %c %d = %.2f\n", num1, operador, num2, resultado);
          /* Pergunta se deseja continuar */
          printf("Deseja continuar?(S/N)"); scanf(" %c", &resp);
          /* Limpa a tela e limpa o buffer do teclado */
          system("cls"); fflush(stdin);
          }
    }

    no caso eu poderia primeiro perguntar qual operação a pessoa quer fazer. mas o professor disse q não! quer q a pessoa simplismente digite a operação, seja ela: "5 5 *" ou simplismente "10 log" ou "15 sqrt"

    me dá uma luz ae

×
×
  • Criar Novo...