SrKon
(usa Ubuntu)
Enviado em 05/04/2021 - 13:42h
paulo1205 escreveu:
Salve, prezado.
Normalmente, quando se fala em contar coisas “de um arquivo”, o que se entende é que o conteúdo do arquivo já existe, e você vai examinar tal conteúdo para então fazer a contagem do que quer que seja a partir desse conteúdo preexistente. No seu programa, você faz algo que eu não esperaria encontrar, lendo coisas a partir do terminal, e então coloca o que foi lido dentro do arquivo. Tem certeza de que é isso mesmo o que você quer fazer?
Outro aspecto referente ao enunciado é que ele fala em “vogais de cada palavra”. Isso me dá a impressão de que você deveria medir e reportar os resultados cada vez que terminasse de ler uma palavra, e então dar um reset antes de processar a palavra seguinte. Nesse sentido, o que você disse sobre conseguir contar as vogais de apenas uma palavra está OK, porque é só disso mesmo que você precisa, no meu entendimento. Seu único erro nesse caso é que, se for isso mesmo, você não está zerando o valor de soma cada vez que troca de palavra.
Coisas que eu acho que você pode melhorar:
• Rever seu programa para ter certeza de se você não deveria ler do arquivo, em vez de ler do terminal.
• Rever lógica de leitura e separação entre uma palavras. Do modo como você fez, se o usuário digitar, por exemplo, “diz-se ”, você considerará essa entrada como uma só palavra, não como duas, que realmente são.
• Acho que você deveria considerar também tratar vogais maiúsculas (e, se quiser ser purista, também vogais acentuadas). Lembre de que, para o C, 'a' é diferente de 'A' .
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)
Salve, prezado, nós novamente por aqui.
Eu refiz o código e ele funcionou.
Normalmente, quando se fala em contar coisas “de um arquivo”, o que se entende é que o conteúdo do arquivo já existe, e você vai examinar tal conteúdo para então fazer a contagem do que quer que seja a partir desse conteúdo preexistente. No seu programa, você faz algo que eu não esperaria encontrar, lendo coisas a partir do terminal, e então coloca o que foi lido dentro do arquivo. Tem certeza de que é isso mesmo o que você quer fazer?
Esta é uma versão, já fiz uma para ele ler o arquivo. E quando comecei, era isso que queria.
Outro aspecto referente ao enunciado é que ele fala em “vogais de cada palavra”. Isso me dá a impressão de que você deveria medir e reportar os resultados cada vez que terminasse de ler uma palavra, e então dar um reset antes de processar a palavra seguinte. Nesse sentido, o que você disse sobre conseguir contar as vogais de apenas uma palavra está OK, porque é só disso mesmo que você precisa, no meu entendimento. Seu único erro nesse caso é que, se for isso mesmo, você não está zerando o valor de soma cada vez que troca de palavra.
Sendo para contar uma palavra ou todas as palavras, aparecia 0 em ambas.
sobre o segundo ponto, por hora eu quero algo mais simples e que funcione depois acrescento mais. Tentei usar mais que as vogais maiúsculas com char vogais[] = "aeiouAEIOUáéíóúÁÉÍÓÚãÃÕãõÃÕà"; Talvez tenha exagerado.
Segue o código:
//versão I
#include <stdio.h>
int main(void)
{
FILE *pointer;
int soma = 0;
char c;
pointer = fopen("doc.txt", "r");
if(pointer)
{
while((c = getc(pointer)) != EOF)
{
printf("%c", c);
if(c == 'a' ||
c == 'e' ||
c == 'i' ||
c == 'o' ||
c == 'u')
{
soma++;
}
}
} else {
printf("Arquivo não encontrado.");
}
printf("\nHá %d vogais neste arquivo.", soma);
fclose(pointer);
return 0;
}
É simples, mas é o que queria.