entao … estou no primeio semestre da facul e estou com a glumas duvidas em um trabalho …no qual eu tenho q deslocar um caracter dentro de uma string … por exemplo:
ONTEM CHOVEU MUITO — ficaria----ntemo hoveuc uitom… a logica para resolucao deste seria procurar o espaco entre as frases e jogar a primeira letra uma posicao antes do espaco e jogar as demais letras uma posicao antes… porem nao sei fazer isso funcionar em c … se puderem me ajudar agradeco muito xD vlw.
Só com o código para te ajudar.
Se precisa ser em C, estude sobre arrays de caracteres.
Como você faria isso em pseudo-código?
bom… eu faria um for com a funcao strlen … dentro do laco faria um if para encontrar ‘espaco’ dentro da frase, … ao achar ‘espaco’ teria que jogar a primeira letra de cada palavra na posicao anterior ao espaco e as demais letras cada uma na posicao anterior que estas estavam… ai que esta o problema… n consigo fazer a logica dentro do for funcionar corretamente.
Antes de escrever uma linha sequer de código, faça um teste de mesa. Então faça o pseudo-código. Só aí implemente.
Quando você estiver mais acostumado com programação, você pode pular algumas dessas etapas; mas por enquanto é melhor você ser bem quadradinho e fazer as coisas asssim.
Outra coisa que ajuda é você dividir o seu problema em partes (ou métodos). Como é que você separa as palavras? Como é que você inverte a ordem das letras dentro de uma palavra? E assim por diante.
brigadaum pelas dicas … eh q ta bem foda saca … eu n tive um contato com programacao antes de entrar na usp e pelo fato de ser la fica ainda mais dificil eh meio q …“da seus pulo” mas brigadaum
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void func(char fr[]){
int i;
int primeiraLetra=0;
char letra; /* Letra eh do tipo char */
/*A regra no loop pode ser guardar a primeira letra depois de todo espaco.
Como a primeira palavra nao tem espaco, guarde antes de entrar no loop */
/* primeira letra*/
for(i=strlen(fr);i>0;i--){ /* strlen precisa do parametro (char []).
E como ja guardou primeira letra, pode comecar de 1 */
if ((fr[i] != '\0') & (fr[i] != '\n')) { /*Testar se não eh final de linha*/
if(fr[i] != ' ') { /* Testa se nao eh espaco */
if (!primeiraLetra){ /* Se nao for primeira letra (apos espaco) */
fr[i+1]=fr[i]; /* Copia para a posicao anterior */
}
else {
primeiraLetra=0; /* Se for primeira letra, a proxima nao sera! */
}
}
else { /* Proxima letra de 'fr' eh espaco */
fr[i-1]=letra; /* Copia a primeira letra da palavra no final! */
letra = fr[i+1]; /* Guarda a proxima primeira letra */
primeiraLetra=1; /* Setar que proximo caracter eh primeira letra */
}
}
else {
fr[i+1]=letra; /* Final do string */
/* Copiar a primeira letra desta palavra no final.*/
}
} /* fim do for*/
fr[i+1] = letra;
} /* fim da funcao */
int main(int argc, char *argv[])
{
char str[100];
int i;
printf("digite a frase\n");
gets(str);
func(str);
printf("a frase ficou:%s\n",str);
system("PAUSE");
return 0;
}
ta ai consegui xD