Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

jtc-carr

Somas a partir de ficheiro

Mensagens Recomendadas

jtc-carr

Queria a partir de um ficheiro fazer varias somas do seu conteúdo por exemplo de, vogais, números, consuantes, somo bem as linhas, mas para o restante a função mas não funciona como devia, só contando o que esta na ultima linha, como faço para que some todas as linhas usando a função que tenho feita
soma (char *str, char*vogal, char*consoante)

FILE *f = stdin;
while (fgets (ficheiro, 1000, stdin) != NULL)
{

insiro no stdin:
123456
bcd
fgh
aeiouae
r
Output obtido: 5 linhas 20caracteres 1vogal 0numeros 0consoantes
Output pretendido:5 linhas 40caracteres 7vogal 6numeros 7consoantes

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PsySc0rpi0n

Que tipo de variável é a variável ficheiro???

Mostra o code todo!


Kurt Cobain - Grunge misses you

Nissan GT-R - beast killer

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jtc-carr

O código que tenho é este e pretendo somar tudo o que inserir mas só lê a ultima linha, quem puder ajudar
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 800

void
contar (char *str, int *vogal, int *consoante)
{
  *vogal = *consoante = 0;
  while (*str)
    {
      char i = tolower (*str);
      if (i >= 'a' && i <= 'z')
	{
	  if (i == 'a' || i == 'e' || i == 'i' || i == 'o' || i == 'u')
	    {
	      *vogal += 1;
	    }
	  else
	    {
	      *consoante += 1;
	    }
	}
      *str++;
    }
}

int
main ()
{
  char texto[MAX];
  int consoante, vogal;
  int cont, letra = 0, linha = 0, soma = 0;

  FILE *f = stdin;
  while (fgets (texto, MAX, stdin) != NULL)
    {
      contar (texto, &consoante, &vogal);
      {
	for (cont = 0; texto[cont]; cont++)
	  {
	    if ((!soma) && (texto[cont]))
	      {
		soma = 1;
		linha++;
	      }
	    if (texto[cont] - ' ')
	      letra++;
	  }
      }
    }
  printf ("%dlinhas %dcaracteres %dvogal %dnumero %d consoantes", linha,letra, vogal,, numero, consoante);
}

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

vamos por partes ... o que faz a seguinte linha de código ?

FILE *f = stdin;

 


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jtc-carr
34 minutos atrás, HappyHippyHippo disse:

vamos por partes ... o que faz a seguinte linha de código ?


FILE *f = stdin;

 

permite digitar um texto a partir do teclado ao invés de ser um texto já previamente feito

Editado por jtc-carr

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.