Eu fiz um código que acessa uma arquivo a.txt onde possuem 1000 palavras com a letra "a" da língua portuguesa, todas separadas por linha, cada linha uma palavra diferente...
E quero que meu programa imprima na tela as palavras que contenham apenas as letras o,c,d,g,i,a,v,n,k e em certas quantidades específicas para cada letra...
Porém o programa pega a primeira palavra do a.txt que por um acaso não possue só as letras que eu queria, imprime, e vai para o system("pause") para acabar a execução...
obs.: quando eu tiro o "for", e deixo só um printf("%s", str); no while no lugar desse "for" que tirei, meu programa lê TODAS as palavras do a.txt e imprime na tela certinho... claro, sem fazer os testes que preciso...
Pergunta
Guest Jamil
Olá
Eu fiz um código que acessa uma arquivo a.txt onde possuem 1000 palavras com a letra "a" da língua portuguesa, todas separadas por linha, cada linha uma palavra diferente...
E quero que meu programa imprima na tela as palavras que contenham apenas as letras o,c,d,g,i,a,v,n,k e em certas quantidades específicas para cada letra...
Porém o programa pega a primeira palavra do a.txt que por um acaso não possue só as letras que eu queria, imprime, e vai para o system("pause") para acabar a execução...
obs.: quando eu tiro o "for", e deixo só um printf("%s", str); no while no lugar desse "for" que tirei, meu programa lê TODAS as palavras do a.txt e imprime na tela certinho... claro, sem fazer os testes que preciso...
Qual o erro aparente para o que quero fazer???
#include "stdio.h" #include "stdlib.h" int main(int argc, char *argv[]) { FILE *fp; char str[50]; int z,o=0,c=0,d=0,g=0,i=0,a=0,v=0,n=0,k=1; fp = fopen("a.txt","r"); while (!feof(fp)) { fscanf(fp,"%s",str); for(z=0; str[z] != '\0' && k == 1; z++) { if(str[z]== 'c') c++; else if(str[z]== 'd') d++; else if(str[z]== 'g') g++; else if(str[z]== 'i') i++; else if(str[z]== 'a') a++; else if(str[z]== 'v') v++; else if(str[z]== 'n') n++; else if(str[z]== 'o') o++; else k=0; if(o>3) k=0; if(c>2) k=0; if(d>2) k=0; if(g>1) k=0; if(i>3) k=0; if(a>1) k=0; if(v>1) k=0; if(n>1) k=0; if(k==1) printf("%s\n", str); } } fclose(fp); system("PAUSE"); return 0; }Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.