Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Ajuda com vetor

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Ajuda com vetor

    Olá pessoal.

    Estou com uma dúvida em C, já tentei fazer de várias formas, mas todas falharam.

    É o seguinte, eu estou fazendo um programa simples de criptografia. O usuário informa uma palavra ou frase, e o programa pega a posição da letra no alfabeto e substitui pelo número que ele está. Isso foi simples de fazer. Mas o problema é para descriptografar.

    Imagine que o usuário tenha digitado o nome "Programa", a criptografia seria
    "16 18 15 7 18 1 13 1", (separei por espaço, para ficar melhor de identificar).

    Como posso fazer pra somente em uma posição do vetor, armazenar o '16', e na segunda posição '18', e assim por diante, pra eu poder fazer a comparação com o array que contém os números e informar o array das letras?

    Porque ele sempre pega o primeiro valor, que é '1', e na segunda posição o '6', e assim vai indo até o fim.

    Não estou conseguindo terminar o programa. Alguém poderia me dar uma ajuda de como fazer ?

    O código da criptografia está assim:

    Código PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    void cript(char pl[])
    {
       
    char alfabeto[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
       
    char alfabetomin[] = "abcdefghijklmnopqrstuvwxyz";

       
    system("cls");
       
    printf("CRIPTOGRAFADO: ");
       for (
    int i=0i<strlen(pl); i++)
       {
          if (
    pl[i] == ' ')
          {
             
    printf("  ");
          }
          for (
    int j=0j<strlen(alfabeto); j++)
          {
              if ((
    pl[i] == alfabeto[j]) || (pl[i] == alfabetomin[j]))
              {
                 
    printf("[%d]",j+1);
              }
          }
       }       
    }


    int main()
    {
       
    char palavra[50]; 
       
       
    printf("Informe a palavra: ");
       
    gets(palavra);
       
       
    cript(palavra);
       
       
    fflush(stdin);
       
    getchar();


  • Font Size
    #2
    Olá, eu tomei a liberdade de reescrever sua função cripto um pouquinho diferente.
    Se entendi bem o problema você quer os inteiros de volta não é isso?
    Bom, basta declarar um vetor de números inteiros e no momento da criptografia armazenar o
    número correspondente. Apenas programei isso. Também tem algumas considerações para você ler
    no código abaixo. Acho que também ajudarão. Qualquer coisa, volte a perguntar. Se eu souber terei prazer em ajudar.

    Código PHP:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #define MAX_LEN 50

    void criptchar pl[], int cripto[] )
    {
        
    char alfabeto[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
    char alfabetomin[] = "abcdefghijklmnopqrstuvwxyz";

        
    system"cls" );
        
    printf"CRIPTOGRAFADO: " );

        for ( 
    int i=0i<strlenpl ); i++ )
        {
            if ( 
    pl[i] == ' ' )
            {
                
    printf"  " );
            }

            for ( 
    int j=0j<strlenalfabeto ); j++ )
            {
                if ( ( 
    pl[i] == alfabeto[j] ) || ( pl[i] == alfabetomin[j] ) )
                {
                    
    cripto[i] = j+1;
                    
    printf"[%d]",j+);
                }
            }
        }
    }


    int main(void)
    {
        
    /* Evitemos o uso de 'números mágicos'.
           Para tanto, lançamos mão de #define.
           Qual a vantagem? */
        
    char palavra[MAX_LEN] = {'\0'}; 
        
    int criptografado[MAX_LEN] = {0};

        
    printf"Informe a palavra: " );
    /*  gets( palavra ); */

        /* Boa pedida. Melhor ainda seria fgets(palavra, MAX_LEN, stdin); 
           que mantém o caractere \n e dispensa o uso de fflush */

        
    fgets(palavraMAX_LENstdin);

        
    /* Substitui o caractere '\n' por um
           terminador de string C '\0' e, então,
           temos o comprimento exato da nossa palavra */
        
    palavra[strlen(palavra) - ] = '\0';

        
    criptpalavracriptografado );
        
        
    puts("\n\nAqui esta o vetor de numeros inteiros criptografados...");
        for (
    int i 0strlen(palavra); i++)
            
    printf("[%d]"criptografado[i]);

        
    /* Evite usar fflush (stdin). Tem comportamento errático segundo a
           normatização da linguagem */   
        
    fflushstdin ); 

        
    /* Vamos escrever algo para o usuário saber que ele precisa
           pressionar 'ENTER' */
        
    puts ("\nPressione 'ENTER' para continuar ...");
        
    getchar();
        
        return 
    0;

    Comment

    X
    Working...
    X