Pulse 0 Denunciar post Postado Maio 22, 2015 Escreva um programa que contenha uma função. Esta função deve ler uma string e depois copiar todas as vogais para uma string chamada vog e as consoantes para uma string chamada cons. A função deve imprimir na tela estas duas novas strings. #include <stdio.h> #include <string.h> int main () { char entrada[100], vog[100], cons[100]; int i, v=0, c=0; puts("Entre com uma string"); gets(entrada); for(i=0; i<100; i++) { if(entrada[i] == 'a' || entrada[i] == 'e' || entrada [i] == 'i' || entrada[i] == 'o' || entrada[i] == 'u') { vog[v] = entrada[i]; v++; } else if(entrada[i] != ' ' && entrada[i] != '.' && entrada[i] != ',' && entrada[i] != "\0") { cons[c] = entrada[i]; c++; } } puts(cons); puts(vog); } O único problema é que o programa tá imprimindo alguns caracteres estranhos depois do resultado, nesse caso, por exemplo, imprimiu i. Em outros testes imprimiu !♥W e outras coisas do tipo. Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 22, 2015 Não use gets.Os caracteres estranhos são impressos muito provavelmente porque não há '\0' no final da string. #include <stdio.h> #include <string.h> #include <ctype.h> #define MAX 100 void separa_letras(char * dest_vogal, char * dest_cons, char * src) { unsigned int i,j,k; for(i=0, j=0, k=0; i<strlen(src); i++) { switch (tolower(src[i])) { case 'a': case 'e': case 'i': case 'o': case 'u': dest_vogal[j] = src[i]; j++; break; default: dest_cons[k] = src[i]; k++; } } dest_vogal[j]='\0'; dest_cons[k]='\0'; } int main(void) { char str[MAX]; fgets(str, MAX-1, stdin); str[strlen(str)-1] = '\0'; char vog[strlen(str)], cons[strlen(str)]; separa_letras(vog, cons, str); printf("%s\n%s\n", vog, cons); return 0; } A propósito: procure ler sobre coesão e acoplamento. Em termos simples relacionado com o exercício, uma função dessas, ao imprimir e fazer sei lá mais o quê além do que ela se propõe, começa a ter uma baixa coesão (idealmente as funções, para poderem ser mais reutilizáveis, devem fazer apenas 1 coisa). Isso vai ajudar muito nos trabalhos mais complexos. Compartilhar este post Link para o post Compartilhar em outros sites
Pulse 0 Denunciar post Postado Maio 22, 2015 Muito obrigado, Isis. Compartilhar este post Link para o post Compartilhar em outros sites