Ir ao conteúdo

Strings - C++


ctrlv

Posts recomendados

  • Membro VIP
Postado

Não consegui editar o post, vai ele de novo:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>


void transformaFrase(char frase[]);


void main(){

char frase[100];
clrscr();

printf("Digite a frase: ");
gets(frase);

transformaFrase(frase);
getch();

}

void transformaFrase (char frase[]){
int i, j, tamanho_frase;
char palavra[50][50];
char frase_transformada[100];
int numero_palavras;
int numero_letras;
char espaco[1] = {" "};
char finaliza[1] = {"1"};


for(i=0;frase[i];i++)
{
if(i==0)
{
numero_palavras = 1;
numero_letras =0;
frase[i]=toupper(frase[i]);
palavra[numero_palavras - 1][numero_letras] = frase[i];
numero_letras++;

}
else if (frase[i-1]== ' ')
{
numero_palavras = numero_palavras + 1;
numero_letras = 0;
frase[i]=toupper(frase[i]);
palavra[numero_palavras - 1][numero_letras] = frase[i];
numero_letras++;
}
else if (frase[i]== ' ')
{
frase[i]=tolower(frase[i]);

palavra[numero_palavras - 1][numero_letras] = espaco[0];
numero_letras++;

palavra[numero_palavras - 1][numero_letras] = finaliza[0];
numero_letras++;

}
else
{
frase[i]=tolower(frase[i]);
palavra[numero_palavras - 1][numero_letras] = frase[i];
numero_letras++;
}

}


palavra[numero_palavras - 1][numero_letras] = finaliza[0];

if (numero_palavras > 2)
{

tamanho_frase =0;
for(i=0; palavra[0][i]!=finaliza[0] ;i++)
{

frase_transformada[tamanho_frase]=palavra[0][i];
tamanho_frase++;

}


for(i=1;i<numero_palavras - 1;i++)
{
frase_transformada[tamanho_frase]=palavra[i][0];
tamanho_frase++;

frase_transformada[tamanho_frase]=espaco[0];
tamanho_frase++;


}

for(i=0; palavra[numero_palavras - 1][i]!=finaliza[0] ;i++)
{
frase_transformada[tamanho_frase]=palavra[numero_palavras - 1][i];
tamanho_frase++;

}
}
else if (numero_palavras == 2)
{
for(i=0;palavra[0][i];i++)
{
frase_transformada[tamanho_frase]=palavra[0][i];
}
for(i=0;palavra[11][i];i++)
{
frase_transformada[tamanho_frase]=palavra[1][i];
}
}
else
{
for(i=0;palavra[0][i];i++)
{
frase_transformada[tamanho_frase]=palavra[0][i];
}

}
printf("frase transformada %s",frase_transformada);


}

  • Membro VIP
Postado

O código da sua amiga faz bem mais do que precisa...

No primeiro for, primeiro if (se eu ficar colando partes do código vai ficar gigante):

Identifica que é a primeira letra da frase, converte para maisúsculo e copia para uma array bidimensional essa letra, coloca o contador de palavras como 1;

Segundo if:

Identifica que é a primeira letra de uma palavra que não é a primeira, faz o mesmo que o if acima, mas incrementa o contador de palavras;

Terceiro if:

Identifica que é um espaço e marca que a palavra na array bidimensional acabou.

Else:

Converte para minúscula e copia para a array bidimensional.

Depois desse for tem um if que se a frase tiver uma palavra copia essa palavra para a saida, se tiver duas copia essas duas para a saida, se tiver mais copia a primeira palavra, copia a primeira letra da segunda até a penultima palavra e copia a ultima palavra.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!