Programación General > C/C++

 Contador de caracteres

(1/2) > >>

kingsizen:
Hola amigos tengo el siguiente enunciado:
"ingresar un texto de caracteres utilizando la funcion getchar(). indicar la cantidad de caracteres, palabras y lineas que lo forman. mostar lo pedido con carteles aclaratorios"

si alguien me puede orientar para realizar esto porque no se como empezar.
espero sus respuestas muchar gracias!!

pd: aca les dejo el codigo ke me salio


--- Código: C --- # include <stdio.h> main(){      int c,contp,contc,contl;      contp=contc=contl=0;            printf ("Ingrese Palabrasn");      c=getchar();      while (putchar(c)!='*')      {                 ++contc;            if (putchar(c)== 'n')            {               ++contl;               ++contp;               }      printf ("Ingrese Palabrasn");      c=getchar();      } printf("Palabras =n %d",contp);printf("Lineas =n %d",contl);printf("Caracteres =n %d",contc);}   Gracias!

Hypocrisy:
a ver que te parece esto

--- Código: C ---#include <stdio.h>  /* getchar, putchar, EOF */  int separador (int ch){    return (ch==' ') || (ch=='t') || (ch=='n');}  int main (){     long contador_caracteres;  long contador_palabras;  long contador_lineas;  int  actual;  int  prev;   // Inicialización de los contadores   contador_caracteres = 0;  contador_palabras = 0;  contador_lineas = 1;   // Lectura de los datos de entrada   prev   = ' ';  actual = getchar();   while (actual != EOF) {       contador_caracteres ++;       // ¿Fin de línea?       if (actual=='n')          contador_lineas++;       // ¿Comienzo de una nueva palabra?       if (!separador(actual) && separador(prev))          contador_palabras++;       // Siguiente carácter       prev = actual;      actual = getchar();  }   // Resultado   printf("%ld caracteresn", contador_caracteres);  printf("%ld palabrasn", contador_palabras);  printf("%ld líneasn", contador_lineas);   return 0;}  

kingsizen:
la verdad que es excelente lo que pusiste, pero hay cosas que no entiendo, soy muy principiante en C.

no entiendo esto:

--- Código: C ---# int separador (int ch)# {#     return (ch==' ') || (ch=='t') || (ch=='n');# } 
ni tampoco entiendo bien el EOF como fin de datos... como es bien que funciona esto?
tampoco entiendo bien la funcion getchar(): tengo ke ingresar un caracter atras del otro digamos
h
o
l
a

o puedo poner directamente:
hola

estoy medio aturdido jaja  :oops:

Hypocrisy:
lreturn (ch==' ') || (ch=='t') || (ch=='n');

el primer return es un espacio, el segundo es un tabulador, y el tercero es un enter...que es lo que no entiendes?

kingsizen:
tu ejemplo es algo "sofisticado" para mi, necesitaria algo mas simple (es que tal vez no existe algo mas simple   :o )
mis dudas son las siguientes:

- No entiendo el EOF. ejecuto el programa y que valor tengo que ingresar por teclado para que termine el programa???. es decir, cuanto vale EOF??. yo uso * como fin de datos
-Tengo dudas existenciales sobre la funcion getchar(). y son: tengo que ingresar caracteres uno a uno por teclado digamos:
H (enter)
O (enter)
L (enter)
A (enter)
* (enter, asterisco es mi fin de datos)

o simplemente ingreso
HOLA* (enter)

segun este mini programa...

--- Código: C ---# include <stdio.h> main (){int c;     long esp,nc;               nc=esp=0;     printf ("Ingrese un caractern");     //c=getchar();     while (getchar() != '*')                ++nc;                              printf ("Caracteres=%ld",nc);      }      
si ingreso los caracteres uno a uno tambien me toman los enters (n) como caracteres, es decir que de ingresar HOLA* me devolveria el valor de 8 caracteres y por alguna razon no me cuenta el * como caracter

si ingreso hola* me devuelve el valor correcto de 4 caracteres , tampoco me cuenta el asterisco.

yo tenia entendido que getchar() era solo para leer solo UN caracter y no una PALABRA entera, estaba equivocado??

esas son mis dudas, son muchas...

pd: recuerdo que utilizo como fin de datos * porque EOF nose como funciona, ejecuto el programa y nunca termina.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa