Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

thinkabout

[Resolvido] Separar uma frase, uma palavra por linha. (a frase tem espaços antes e no final , ignorar o mesmos)

Mensagens Recomendadas

thinkabout

Boas , estou com dificuldade em contar os espaços antes e no final da frase, a parte da separação já se encontra a funcionar.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> // strlen
#define Dim 100

/*
Desenvolva um programa que leia uma frase introduzida pelo utilizador e escreva cada
uma das palavras que constituem a frase numa linha separada.
Considere que as palavras estão separadas por um ou mais espaços em branco, podendo também existir espaços no
início e fim da frase.Exemplo: Hoje e Domingo!  
O programa deverá escrever:
Hoje
e
Domingo!
*/

void main()
{char frase[Dim];
int tamanho,i,espacoantesbrancos=0;printf("Introduza uma frase com menos de %d caracteres \n",Dim);
gets(frase);
tamanho=strlen(frase);

// Vamos ignorar o começo da frase
for (i = 0; frase[i] != ' ' ; i++)
{
if (frase[i] == ' ')
{
 espacoantesbrancos++;
}
}printf("existem %d espacos antes \n", espacoantesbrancos);

// Impressão da frase
for (i = espacoantesbrancos; i < tamanho; i++)
{

if (frase[i] != ' ')
{
 printf("%c", frase[i]);
}

if (frase[i] == ' ')
{
 printf("\n");
}
}

}

--------

Já vi como faço o começo, mas continuo com o problema de achar os espaços no final da frase.

O ideal penso que seria fazer isto com um for tanto podia andar com o ciclo para a frente como para trás, mas está-me a falhar as condições.


// Vamos ignorar o começo da frase
while (frase[i] == ' ')
{
espacoantesbrancos++;
i++;
}

Editado por thinkabout

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

vamos ver os algoritmos

(contar espaços no início da string)

- atribuir o valor de zero a uma variável determinando então o primeiro índice da string

- enquanto o caracter do índice indicado for um espaço, incrementar a variável

- o número de espaços iniciais é igual ao valor da variável no final do ciclo

(contar espaços no fim da string)

- atribuir o valor do tamanho da string menos 1 a uma variável determinado então o último índice da string

- enquanto o caracter do índice indicado for um espaço, decrementar a variável

- o número de espaços finais é igual ao tamanho da string menos o valor da variável menos um

agora implementa em código ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thinkabout

vamos ver os algoritmos

(contar espaços no início da string)

- atribuir o valor de zero a uma variável determinando então o primeiro índice da string

- enquanto o caracter do índice indicado for um espaço, incrementar a variável

- o número de espaços iniciais é igual ao valor da variável no final do ciclo

for (i = 0; frase[i] == ' '; i++)
{
espacoantesbrancos++;
}
printf("existem %d espacos antes \n", espacoantesbrancos);

(contar espaços no fim da string)

- atribuir o valor do tamanho da string menos 1 a uma variável determinado então o último índice da string

- enquanto o caracter do índice indicado for um espaço, decrementar a variável

- o número de espaços finais é igual ao tamanho da string menos o valor da variável menos um

agora implementa em código ...


for (i = ultimoindice; frase[i] == ' '; i--)
{
ultimoindice--;
}

espacofinais=(tamanho-1)-ultimoindice;
printf("existem %d espacos no fim \n", espacofinais);

Já está a bombar, depois foi só acertar a condição de paragem do último for

 for (i = espacoantesbrancos; i < tamanho-espacofinais; i++) 

Não estava a ver a questão do último índice quando estava a contar para trás e também não estava apanhar depois o último menos um.

Maldito '/0' :( .

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.