Guest User

Untitled

a guest
Jul 23rd, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX 30
  5.  
  6. int main(){
  7.  
  8. /* Inicialização de variáveis:
  9.  
  10. - in[MAX] vai alojar a string original.
  11. - out[MAX] vai alojar a string invertida.
  12. - c vai guardar cada um dos caracteres do input (à vez) no processo de leitura
  13. - i e j são simples contadores, usados para efeitos auxiliares.
  14. - size é o tamanho da string recebida no input.
  15. - n_spaces é o número de espaços encontrados na mesma.
  16. */
  17. char in[MAX], out[MAX], c;
  18. int i, j, size, n_spaces = 0;
  19.  
  20. printf("Insira uma frase (no maximo com %d caracteres): ", MAX-1);
  21.  
  22. /* Enquanto o contador for menor que o tamanho do vector, o caracter lido for diferente
  23. do final de ficheiro e o caracter lido for diferente de mudanca de linha:
  24.  
  25. - Verifica se o caracter é espaço. Incrementa n_spaces em caso afirmativo.
  26. - guarda o caracter no vector.
  27.  
  28. No final, a variável auxiliar é incrementada e é lido um novo caracter.
  29. */
  30. for(c = getchar(), i = 0; i < MAX && c != EOF && c != '\n'; i++, c = getchar()){
  31. if(c == ' ') n_spaces++;
  32. in[i] = c;
  33. }
  34.  
  35. /* Guarda o tamanho da string lida */
  36. size = i;
  37.  
  38. /* Subtrai-se o numero de espaços encontrados ao tamanho da string lida e
  39. obtém-se o número de caracteres da string que não são espaços.
  40. */
  41. printf("%d\n", size - n_spaces);
  42.  
  43. /* Variaveil auxiliar i guarda a posição do vector de saida em que queremos escrever.
  44. Variaveil auxiliar j guarda a posição do vector de entrada da qual queremos ler.
  45.  
  46. Enquanto i for menor que o tamanho do vector de entrada:
  47.  
  48. out[i] é igual a in[j], incrementra i e decrementa j.
  49. */
  50. for(i = 0, j = size-1; i < size; out[i++] = in[j--]);
  51.  
  52. /* Coloca o terminador de tring no final do vector de saída. */
  53. out[size] = '\0';
  54.  
  55.  
  56. printf("Frase invertida: %s\n", out);
  57.  
  58. return 0;
  59. }
Add Comment
Please, Sign In to add comment