Programación General > C/C++
Contador de caracteres
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
[#] Página Siguiente
Ir a la versión completa