Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Valéria_Farias

Funções usando strings - retirar os espaços em branco na frase

Recommended Posts

Pessoal não estou conseguindo terminar este algoritmo pois não sei como retirar os espaços na frase e nem colocar a primeira letra de cada palavra da mesma em maiúscula. O exercicio é assim:

Faça um Programa em C, que leia uma frase (string) e uma palavra. Logo após faça as seguintes operações:

- Verifique se a palava digitada foi "Paz". Informe ao usuário;

- Coloque a primeira letra de cada palavra em maiúscula (na frase);

- Retire os espaços em branco da frase;

- Conte quantas vogais existem na frase (apresente ao usuário a quantidade de cada uma delas);

- Concatene as duas strings lidas.

Meu código está assim:



# include <stdio.h>
# include <stdlib.h>
# include <string.h> // biblioteca de strings
# include <ctype.h>
# define TAM 50

main()
{

char str1[TAM],str2[TAM];
char resp[] = "Paz";
int i = 0,conta = 0,conte = 0,conti = 0,conto = 0,contu = 0,pos = 0;

puts("Digite uma frase");
gets(str1);
printf("\n");

puts("Digite uma palavra");
gets(str2);
printf("\n");

while ( strcmp ( str2 , resp) != 0 )
{
puts("Palavra Errada");
puts("Tente Novamente!");
gets(str2);
}

puts("* Palavra Digitada foi Paz *");
printf("\n");

for ( i = 0; i <= strlen(str1); i++ )
{

if ( str1[i] == 'a' || str1[i] == 'A')
conta++;
if ( str1[i] == 'e' || str1[i] == 'E')
conte++;
if ( str1[i] == 'i' || str1[i] == 'I')
conti++;
if ( str1[i] == 'o' || str1[i] == 'O')
conto++;
if ( str1[i] == 'u' || str1[i] == 'U')
contu++;
}

printf("Quantidade de vogais existentes na frase: \n\n");
printf("Letras A = %d\n",conta);
printf("\n");
printf("Letras E = %d\n",conte);
printf("\n");
printf("Letras I = %d\n",conti);
printf("\n");
printf("Letras O = %d\n",conto);
printf("\n");
printf("Letras U = %d\n",contu);
printf("\n");

strcat(str1,str2);

puts(str1);

printf("\n");


system("pause");


}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra colocar a primeira letra de cada palavra maiúscula, você pode usar essa lógica:

frase[] = "o rato roeu a roupa do rei de roma"

- frase[0] sempre vai ser maiúscula

- se frase[x] for um espaço e frase for maior que x, então frase[x+1] vai ser maiúscula

Ou seja, sempre que houver um espaço, logo em seguida vai haver o início de uma palavra. (bem, pode ser que o usuário digite dois espaços, daí você precisa criar outro teste pra isso).


#include ctype.h
...

str1[0] = toupper(str1[0]); //frase[0]

for(x=0; x < strlen(str1); x++)
if(str1[x] == ' ' && x+1 < strlen(str1))
str1[x+1] = toupper(str1[x+1]);

Pra remover os espaços, você pode ir "puxando" os caracteres seguintes pra trás, sempre que encontrar um. Mas acho que já existe uma função pronta que faz isso.


char frase[] = "o rato roeu a roupa do rei de roma";
printf("%s\n", frase);

for(x=0; x < strlen(frase); x++)
if(frase[x] == ' ') {
for(y=x; y < strlen(frase); y++)
frase[y] = frase[y+1];
}

printf("%s\n", frase);

Se ficou meio confusa essa bagunça que fiz, fique a vontade pra perguntar.

[]s

Editado por ningen

Compartilhar este post


Link para o post
Compartilhar em outros sites

teria como fazer essa parte de apagar espaços em Branco sem utilizar strlen?

tipo encontrando os valores de cada indice e onde fosse ' espaço ', puxar pra trás?

Compartilhar este post


Link para o post
Compartilhar em outros sites
teria como fazer essa parte de apagar espaços em Branco sem utilizar strlen?

tipo encontrando os valores de cada indice e onde fosse ' espaço ', puxar pra trás?

Teria sim, veja F5Rua4D.gif:


#include <stdio.h>



int main(void)
{
char String[] = " Junte estas palavras ! ";
for(int x = 0; String[x] != '\0'; x++)
{
while(String[x] == ' ')
{
for(int y = x; String[y] != '\0'; y++)
{
String[y] = String[y + 1];
}
}
}
printf("String: \"%s\".", String);
getchar();
return 0;
}

Espero ter ajudado GbhmuXl.gif.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×