1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Codificador/descodificador

Discussão em 'Programação' iniciada por JOAOFIGUTZ, 7 de Dezembro de 2008. (Respostas: 3; Visualizações: 701)

  1. ola malta...
    tenho um exercicio..que nao estou a conseguir resolver.. peco entao ajudas e dicas ...........
    O programa deve ler um número inteiro e escrever o número que resulta
    da sua codificação ou descodificação com base nas seguintes regras:

    1. (Codificar) – Substituir cada sequência de n dígitos x repetidos,
    pelo par de dígitos nx ;

    2. (Descodificar) – Substituir cada par de dígitos nx , pela sequência
    de n dígitos x repetidos (operação inversa).
    A codificação e/ou descodificação deve ser uma opção de escolha. Note
    que só podem ser descodificados números que possuam um número par
    de dígitos.

    O programa deve permitir a codificação/descodificação de mais do que
    um número na mesma corrida (“run”) e deve identificar todas as
    situações de erro. O programa deve imprimir mensagens em Português.
    Por exemplo, se 277733444 for o inteiro lido, o programa pode codificálo
    como


    1 2 3 7 2 3 3 4
     
  2. isto é ja o que consegui..
    mas ta dificil


    Código:
    #include<stdlib.h>
    #include<stdio.h>
    int dgtlen(int n)
    {
        if(n == 0)
            return 1;
        else
        {
            int c;
            for(c = 0; n; n /= 10)
                c++;
            return c;
        }
    }
    /*int a(int aux)
    {
        if (a < aux)
            printf("o numero codificado:%s", indiv[0][1][2][3][4][5]);
     
    } */  
    int main ()
    {system ("chcp 1252");
     
        int n=0;
        int aux=0; 
     
        printf("Introduza um numero Inteiro");
     
        scanf("%d", &n);
     
        aux = dgtlen(n); 
     
        char indiv[aux]; 
        sprintf(indiv, " %d", n);  
     
     
        for (aux = 0; aux <= n; aux++);
            aux = aux +indiv[aux];
     
     
        printf("\n%s", aux);
     
     
        printf("\n"); 
     
    system ("\npause"); return 0;} 
     
  3. The_True_Eue

    The_True_Eue Power Member

    Não seria mais fácil ler logo o número como uma string e não como um int?
     
  4. IComeFromBehind

    IComeFromBehind Power Member

    O seguinte programa faz a codificação, mas não está de maneira nenhum completo o suficiente para ser apresentado como um trabalho e só funciona se o ficheiro de texto tiver um caracter a mais (pode ser um enter):

    Código:
    #include <stdio.h>
    
    int main (int argc, char const *argv[])
    {
        int current = -1;
        int previous = -1;
        int repetitions = 1;
        
        int done = 0;
        
        while(!done) {
            current = getchar();
            if(current == EOF) {
                done = 1;
            } else if(current == previous) {
                repetitions++;
            } else {
                if(previous != -1) {
                    putchar(repetitions + 48);
                    putchar(previous);
                }
                previous = current;
                repetitions = 1;
            }   
        }   
        
        return 0;
    }
    
     

Partilhar esta Página