Ajuda em C

6 respostas
B

Pessoal tenho que fazer o seguinte programa. Receber uma frase e ver se ela é igual de traz pra frente, desconsiderando os espaços....
Eu estou invertendo ela para depois eu comparar. Só que se eu colocar na frase espaço, a minha lógica já da errada. mas se eu não colocar os espaço da certo a palavra.

main(){
int i, tamanho, r=0, espacos =0;
char frase[100], analisa[100];

fflush(stdin);
printf("Informe uma palavra qualquer\n");
gets(frase);
fflush(stdin);     
       
//tamanho = strlen(frase);

     for(i = strlen(frase) -1; i>=0; i--){ 
     analisa[r] = frase[i];      
     r++;  
       
     }// fecha o for 
     
         if(0 == strcmpi(frase,analisa)){
         printf("%c um pal%cdrome\n",144,161);     
         }else{
         printf("N%co %c um pal%cidrome\n",131,130,161);      
         }
      
     analisa[r] = '\0';
     
    // printf("%s\n",analisa);
     printf("invertida palavra %s\n",analisa); 
//    printf("a palavra tem %d\n",espacos);   
       
getch();       
}

6 Respostas

B

Fiz um outro programinha para tirar os espaços da frase. Acho que dessa forma da certo. Só que eu não estou conseguindo agrupar os dois no mesmo código. Sei que preciso estudar mais, to fazendo isso. agradeço

segue o segundo codigo. que tira os espaços... da frase

int main()
{
char frase[50], aux[50];
int x, i;

printf("Digite uma frase: \n\n");
gets(frase);

x=0;
    for(i=0;i<=strlen(frase)-1;i++)
    {
        if(frase[i]!=' ')
        {
        aux[x]=frase[i];
        x++; 
        }
    }

printf("A frase digita foi: %s\n\n", frase);
printf("frase sem espaco: %s\n\n", aux);

system("PAUSE");	
return 0;
}
getAdicted

Boa tarde amigo,

Eu acho que dessa forma funciona, testando a seguinte entrada: "socorram-me! subi no onibus em marrocos!":
int main(){

  char strcomespaco[100],str1[100], str2[100];
  int tamcomespaco,tam, i, j;

  printf("\nDigite uma palavra (ou uma frase):\n\n");
  gets(strcomespaco);

  tamcomespaco = strlen(strcomespaco);

  for(i=0,j=0;i&lt;tamcomespaco;i++)
 {
    if(isalpha(strcomespaco[i]))
    {
        str1[j]=strcomespaco[i];
        j++;
    }
 }

str1[j]='\0';

tam = strlen(str1);

for (i=tam-1,j=0;i&gt;=0;i--,j++)
str2[j] = str1[i];

str2[tam] = '\0';


if (strcmpi(str1,str2) == 0)
printf("\né palindromo!!");
else
printf("\nNao é palindromo!!");

system("PAUSE");
}

A diferença para o seu código, eh a inclusão da função isAlpha(), mais informações aqui: http://www.cplusplus.com/reference/clibrary/cctype/isalpha/

FONTE: http://forum.clubedohardware.com.br/palindromos-c/541940

[]'s

B

getAdicted
Muito obrigado, rodei o código e deu certo. Agora vou tentar entender o código, pois tem muita coisa que não vimos ainda na facul, e fiquei meio perdido. :frowning:

Mais muito obrigado.

getAdicted

Entendi,

Dê uma olhada aqui, velhinho: http://dc401.4shared.com/doc/8A7GFyog/preview.html

Esse foi o conteudo programatico que eu tive na minha universidade, talvez lhe ajude a se organizar melhor.

Bons estudos!

[]'s

B

[i][b]getAdicted

tenho uma lista so de string para fazer estilo essa que postei. Só o que acontece e que não vimos muita coisa em string, vimos só conceito de copy, concat, strcmpi. Ai fica complicado resolver…[/b] [/i]

getAdicted

No site que eu lhe enviei, falando sobre a função isalpha, tem a lista das bibliotecas, por exemplo: http://www.cplusplus.com/reference/clibrary/cstring/

Todas as funções contem a descrição e exemplos praticos, pode ser um bom material de apoio.

[]'s

Criado 19 de novembro de 2012
Ultima resposta 19 de nov. de 2012
Respostas 6
Participantes 2