Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- /*Problema: Distância de caractere - Examinar uma cadeia de n caracteres alfabeticos (entrada) e formar uma cadeia com valores
- numéricos, um número para cada caractere alfabético. Cada posição da cadeia resultante será ocupada por um número representando
- uma contagem dos caracteres que separam o caractere na posição correspondente do caractere similar mais próximo para a esquerda
- na cadeia de entrada. Nenhuma distância maior do que 9 será registrada. Qualquer caractere sem correspondente à esquerda dentro
- de 9 posições terá 0 na cadeia resultante. Por exemplo, dada a cadeia de caracteres AABCDBEFFEABGBWB, a mesma daria como
- resultado a cadeia numérica 0100030013960202.*/
- void main(void){
- int i;
- int j=0;
- int cont=0;
- int temp=0;
- int vet[30];
- char texto[31];
- printf("Entre com a sua string:\n");
- gets(texto);
- for(i=1;i<strlen(texto);i++){/*Percorrer toda a string a partir do 1, pois obviamente o caractere 0 não representante à esquerda*/
- for(j=0;j<=i;j++){/*Um sublaço com j varrerá do 0 até o i.*/
- if(texto[i]!=texto[i-1-j]){/*Exemplo: Se o caractere 1 for diferente do caractere 1-1-0,(0), uma variável temporária
- é incrementada. O limite desse laço é até j ter o tamanho de um, pois será a comparação com o caractere 0. Com
- o i começando de 1 e j de 0, não há o problema de comparar um caractere com ele mesmo, na mesma posição*/
- temp++;
- }
- else if(texto[i]==texto[i-1-j]){/*Quando o caractere igual for encontrado, acrescenta-se mais um ao temp, como
- contagem normal, então, dizemos que contador é igual a esse temp, pois é o valor que o vetor vai armazenar,
- e paramos o laço*/
- temp++;
- cont=temp;
- break;
- }
- }
- if(cont>9)/*Caso temp tenha excedido o valor 9, contador será 0, como pede a questão*/
- cont=0;
- vet[i]=cont;/*Vetor recebe o valor do contador, e contador e temp são zerados para uma nova contagem, repetindo os ciclos
- até o final da string*/
- cont=0;
- temp=0;
- }
- vet[0]=0;/*Obviamente o primeiro elemento do vetor correspondente será 0*/
- printf("\n");
- printf("-----STRING & CODIFICACAO-----\n\n");
- for(i=0;i<strlen(texto);i++)
- printf("%c ",texto[i]);
- printf("\n");
- for(i=0;i<strlen(texto);i++){
- printf("%d ",vet[i]);
- }
- puts("\n");
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement