Curso de Programación en C/Prog50

De WikiCabal
Ir a la navegación Ir a la búsqueda

Prog50

 1 #include <stdio.h>
 2 #include <ctype.h>
 3 #include <stdbool.h>
 4 
 5 #define STOP '|'
 6 
 7 int main( void )
 8 {
 9   char c,
10        prev;
11 
12   long n_chars = 0L;
13 
14   int n_lineas = 0,
15       n_palabras = 0,
16       p_lineas = 0;
17 
18   bool inpalabra = false;
19 
20   printf( "Introduzca el texto para analizar (| para terminar):\n" );
21   prev = '\n';            // Para conocer líneas completos
22   while( ( c = getchar() ) != STOP )
23   {
24     n_chars++;
25     if( c == '\n' )
26       n_lineas++;
27     if( !isspace(c) && !inpalabra )
28     {
29       inpalabra = true;
30       n_palabras++;
31     }
32     if( isspace( c ) && inpalabra )
33       inpalabra = false;
34     prev = c;
35   }
36 
37   if( prev != '\n' )
38     p_lineas = 1;
39   printf( "characters = %ld, palabras = %d, líneas = %d, ",
40            n_chars, n_palabras, n_lineas);
41   printf( "líneas parciales = %d\n", p_lineas );
42 
43   return 0;
44 }

Resultado

[rrc@Pridd CClase]$ gcc -Wall -O2 -o Prog50 Prog50.c 
[rrc@Pridd CClase]$ ./Prog50
Introduzca el texto para analizar (| para terminar):
LinuxCabal fue fundado en San Francisco, California en 1996,
y desde 2005 reside en Guadalajara
|
characters = 98, palabras = 15, líneas = 2, líneas parciales = 0

Explicación