Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define MAX 30
- int main(){
- /* Inicialização de variáveis:
- - in[MAX] vai alojar a string original.
- - out[MAX] vai alojar a string invertida.
- - c vai guardar cada um dos caracteres do input (à vez) no processo de leitura
- - i e j são simples contadores, usados para efeitos auxiliares.
- - size é o tamanho da string recebida no input.
- - n_spaces é o número de espaços encontrados na mesma.
- */
- char in[MAX], out[MAX], c;
- int i, j, size, n_spaces = 0;
- printf("Insira uma frase (no maximo com %d caracteres): ", MAX-1);
- /* Enquanto o contador for menor que o tamanho do vector, o caracter lido for diferente
- do final de ficheiro e o caracter lido for diferente de mudanca de linha:
- - Verifica se o caracter é espaço. Incrementa n_spaces em caso afirmativo.
- - guarda o caracter no vector.
- No final, a variável auxiliar é incrementada e é lido um novo caracter.
- */
- for(c = getchar(), i = 0; i < MAX && c != EOF && c != '\n'; i++, c = getchar()){
- if(c == ' ') n_spaces++;
- in[i] = c;
- }
- /* Guarda o tamanho da string lida */
- size = i;
- /* Subtrai-se o numero de espaços encontrados ao tamanho da string lida e
- obtém-se o número de caracteres da string que não são espaços.
- */
- printf("%d\n", size - n_spaces);
- /* Variaveil auxiliar i guarda a posição do vector de saida em que queremos escrever.
- Variaveil auxiliar j guarda a posição do vector de entrada da qual queremos ler.
- Enquanto i for menor que o tamanho do vector de entrada:
- out[i] é igual a in[j], incrementra i e decrementa j.
- */
- for(i = 0, j = size-1; i < size; out[i++] = in[j--]);
- /* Coloca o terminador de tring no final do vector de saída. */
- out[size] = '\0';
- printf("Frase invertida: %s\n", out);
- return 0;
- }
Add Comment
Please, Sign In to add comment