Advertisement
apollw

distancia_char

Jun 19th, 2014
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. /*Problema: Distância de caractere - Examinar uma cadeia de n caracteres alfabeticos (entrada) e formar uma cadeia com valores
  5. numéricos, um número para cada caractere alfabético. Cada posição da cadeia resultante será ocupada por um número representando
  6. uma contagem dos caracteres que separam o caractere na posição correspondente do caractere similar mais próximo para a esquerda
  7. na cadeia de entrada. Nenhuma distância maior do que 9 será registrada. Qualquer caractere sem correspondente à esquerda dentro
  8. de 9 posições terá 0 na cadeia resultante. Por exemplo, dada a cadeia de caracteres AABCDBEFFEABGBWB, a mesma daria como
  9. resultado a cadeia numérica 0100030013960202.*/
  10.  
  11. void main(void){
  12.  
  13. int i;
  14. int j=0;
  15. int cont=0;
  16. int temp=0;
  17. int vet[30];
  18. char texto[31];
  19.  
  20. printf("Entre com a sua string:\n");
  21. gets(texto);
  22.  
  23. for(i=1;i<strlen(texto);i++){/*Percorrer toda a string a partir do 1, pois obviamente o caractere 0 não representante à esquerda*/
  24.         for(j=0;j<=i;j++){/*Um sublaço com j varrerá do 0 até o i.*/
  25.             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
  26.                 é incrementada. O limite desse laço é até j ter o tamanho de um, pois será a comparação com o caractere 0. Com
  27.                 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*/
  28.                 temp++;
  29.             }
  30.             else if(texto[i]==texto[i-1-j]){/*Quando o caractere igual for encontrado, acrescenta-se mais um ao temp, como
  31.                 contagem normal, então, dizemos que contador é igual a esse temp, pois é o valor que o vetor vai armazenar,
  32.                 e paramos o laço*/
  33.                 temp++;
  34.                 cont=temp;
  35.                 break;
  36.  
  37.             }
  38.         }
  39.         if(cont>9)/*Caso temp tenha excedido o valor 9, contador será 0, como pede a questão*/
  40.             cont=0;
  41.         vet[i]=cont;/*Vetor recebe o valor do contador, e contador e temp são zerados para uma nova contagem, repetindo os ciclos
  42.         até o final da string*/
  43.         cont=0;
  44.         temp=0;
  45. }
  46.  
  47. vet[0]=0;/*Obviamente o primeiro elemento do vetor correspondente será 0*/
  48. printf("\n");
  49.  
  50. printf("-----STRING & CODIFICACAO-----\n\n");
  51. for(i=0;i<strlen(texto);i++)
  52.     printf("%c ",texto[i]);
  53.  
  54. printf("\n");
  55.  
  56. for(i=0;i<strlen(texto);i++){
  57.     printf("%d ",vet[i]);
  58. }
  59.  
  60. puts("\n");
  61. system("pause");
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement