viciado 1 Denunciar post Postado Novembro 23, 2008 Recebe uma frase. Inverter a frase e substituie as consoantes por # #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char frase[100]; char inverter[100]; printf("Digite uma frase\n"); gets(frase); int n; n = strlen(inverter); inverter[n] = strrev(frase)); int i; for(i=0;i<n;i++){ if(inverter[i]!=a || inverter[i] !=e || inverter[i] !=i || inverter[i] !=o || inverter[i] !=u){ inverter[i] = strset(inverter,#); } } printf("\n %s \n",inverter); system("PAUSE"); return 0; } Aqui deu erro nas linhas: 12,15 e 16 Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Novembro 23, 2008 strrev(frase)) Excesso de parênteses. if(inverter!=a || inverter !=e || inverter !=i || inverter !=o || inverter !=u) Caracteres tem que ser envoltos com aspas simples. PS não respondo mais tópicos com código desorganizado sem tag code. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Novembro 23, 2008 Não é OU (||), é E (&&). Se for diferente de 'a' E se for diferente de 'e' E ... Isso é um exercício para ser resolvido sem a biblioteca string.h. Usando a biblioteca fica fácil demais. Esse tipo de exercício é para estudo de manipulação de vetores e string. Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Novembro 24, 2008 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char frase[100]; char inverter[100]; printf("Digite uma frase\n"); gets(frase); int n; n = strlen(inverter); inverter[n] = strrev(frase); int i; for(i=0;i<n;i++){ if(inverter[i]!='a' && inverter[i] !='e' && inverter[i] !='i' && inverter[i] !='o' && inverter[i] !='u'){ inverter[i] = strset(inverter,'#'); } } printf("\n %s \n",inverter); system("PAUSE"); return 0; }Para qualquer fraseA saída que eu tenho: "É" Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Dezembro 9, 2008 O programa compila mais a resposta que eu tenho é uns numeros #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[100]; char *inverso; char *trocando; printf("Digite uma frase \n"); gets(frase); inverso = strrev(frase); if(inverso != 'a' || inverso != 'e' || inverso != 'i' || inverso != 'o' || inverso != 'u'){ trocando = strset(&inverso,'#'); } printf(" \n\n %p \n\n",trocando); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 9, 2008 - inverso e trocando são ponteiros sem memória alocada - você usou %p. Isso mostra o endereço de um ponteiro em hexadecimal. Use %s: printf(" \n\n %s \n\n", *trocando); Compartilhar este post Link para o post Compartilhar em outros sites
viciado 1 Denunciar post Postado Dezembro 9, 2008 Agora fica um espaço em branco nao imprime nada, o que ponteiro sem memoria alocada ? #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char frase[100]; char *inverso; char *trocando; printf("Digite uma frase \n"); gets(frase); inverso = strrev(frase); if(inverso != 'a' || inverso != 'e' || inverso != 'i' || inverso != 'o' || inverso != 'u'){ trocando = strset(&inverso,'#'); } printf(" \n\n %s \n\n",trocando); system("PAUSE"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 9, 2008 Repito o que eu disse aqui Você não pode atribuir a "inverso" uma string, pois ele é um ponteiro sem tamanho. Ele simplesmente aponta para uma posição de memória. Estude bem ponteiros e resolva esse exercício sem usar a biblioteca string.h Compartilhar este post Link para o post Compartilhar em outros sites
José Enésio 4 Denunciar post Postado Dezembro 9, 2008 inverso != 'a' || inverso != 'e' || inverso != 'i' || inverso != 'o' || inverso != 'u' Acho que tem que trocar esses or (||) por and (&&). Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Dezembro 24, 2008 Estou tentando implementar a função pra inverter a frase aqui, mas ta f***...alguém dá uma dica? :D por enquanto fiz isso, mas ta dando erro de segmentação. #include <stdio.h> #include <stdlib.h> #include <string.h> int inverteFrase(char *frase); int main() { char frase[100]; int i; printf("\nDigite uma frase: "); scanf("%[^\n]c",frase); inverteFrase(frase); printf("%s",frase); return 0; } int inverteFrase(char *frase) { char inverte[200]; int cont = 0, i = 0; while(frase[cont] != '\n') { cont++; } strcpy(inverte,frase); while(strcmp(inverte,"\n") != 0) { frase[i] = inverte[cont]; cont--; i++; } return 0; }tipo, ali no scanf, sempre q digitar a frase no final dela vai ter um '\n' neh??Outra coisa, pra fazer a verificação ali, nao precisa usar strcmp neh?? Fiquei um tempo parado, esqueci td... Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Dezembro 24, 2008 Recebe uma frase. Inverter a frase e substituie as consoantes por # for(i=0;i<n;i++){ if(inverter[i]!=a || inverter[i] !=e || inverter[i] !=i || inverter[i] !=o || inverter[i] !=u) inverter[i] = strset(inverter,#); } Por acaso isso não vai substituir espaços, pontos, hífens e outros? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #define _GNU_SOURCE int inverteFrase(char *frase); void substitui(char *frase, const char C); int main() { char *frase = NULL; int i; size_t n; printf("\nDigite uma frase: "); getline(&frase, &n,stdin); (*rindex(frase,'\n')) = '\0'; inverteFrase(frase); printf("%s\n",frase); substitui(frase,'#'); printf("%s\n",frase); return 0; } int inverteFrase(char *frase) { char C; int inicio, final; final = strlen(frase)-1; inicio = 0; for(;inicio < final; inicio++, final--) { C = frase[inicio]; frase[inicio] = frase[final]; frase[final] = C; } return 0; } void substitui(char *frase, const char C) { int i; char *P; const char * CONSOANTES = "bcdfghjklmnpqrstvwxyz"; P = strpbrk(frase, CONSOANTES); while (P != NULL) { (*P) = '#'; P = strpbrk(frase, CONSOANTES); }; } Compartilhar este post Link para o post Compartilhar em outros sites