No se que hace éste programa

Iniciado por Thulsa_Doom, 15 Agosto 2010, 19:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Thulsa_Doom

Hola a todos, soy nuevo en el foro, he llegado a el buscando alguien que comprenda el lenguaje C mejor que yo para ver si me ayuda.

Resulta que estoy estudiando por mi cuenta éste lenguaje y haciendo unos ejercicios de un libro que me he comprado, viene un código que la verdad es que no se que se supone que debe hacer.

el ejercicio dice que es un contador de palabras, líneas y caracteres de entrada, pero lo ejecuto y no veo que haga nada por mucho que escriba en el teclado.

el complilador que utilizo es el kate de linux, para ser más concreto el ubuntu 9.10



//Conteo de palabras

#include <stdio.h>
#define IN 1 /*en una palabra*/
#define OUT 0 /*fuera de una palabra*/

/*cuneta líneas. palabras y caracteres de la entrada*/

main(){
       int c, nl, nw, nc, state;
       state = OUT;
       nl = nw = nc = 0;
       
    while((c = getchar()) != EOF){
++nc;
      if(c == '\n')
++nl;
     
    if(c == ' '||c == '\n' || c == '\t')
state = OUT;
   
   
    else if(state == OUT){
state = IN;
  ++nw;
       }
    }
    printf("%d %d %d\n", nl, nw, nc);
}



Gracias de ante mano


leogtz

Al programa no se le ven errores de sintaxis.

Excepto porque no utilizas la sentencia return y no declaras main como:

int main(void)
{
   /* Codigo */
   return 0;
}


El código cuenta caracteres, palabras y lineas.

Su ejecución termina cuando tecleas CTRL + D en unix*/GNU/Linux, y en Windows con CTRL + Z.

Kate no es un compilador, es un IDE, probablemente estés usando GCC.

Saludos.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

rob1104

Hola, en windows el programa funciona desde la consola asi (suponiendo que el programa se llama cuentapalabras y text1 es el archivo de texto con las letras y palabras que quieres contar:
Citarc:\ruta\type text.txt | cuentapalabras

Supongo que en linux seria:
Citar$: cat text.txt | cuentapalabras

Saludos
Sin análisis de requisitos o sin diseño, programar es el arte de crear errores en un documento de texto vacío.

Thulsa_Doom

Cita de: Leo Gutiérrez. en 15 Agosto 2010, 19:40 PM
Al programa no se le ven errores de sintaxis.

Excepto porque no utilizas la sentencia return y no declaras main como:

int main(void)
{
   /* Codigo */
   return 0;
}


El código cuenta caracteres, palabras y lineas.

Su ejecución termina cuando tecleas CTRL + D en unix*/GNU/Linux, y en Windows con CTRL + Z.

Kate no es un compilador, es un IDE, probablemente estés usando GCC.

Saludos.



Upssssss, tienes razón es el GCC,

El problema que tenía es que cuando ejecutaba el programa me ponía a escribir en la consola y cuando le daba a la tecla intro se saltaba a una nueva línea pero no mostraba nada, la línea se queda en blanco y preparada para seguir escribiendo y claro no entendía que hacía el programa.
al apretar lo que me has dicho, lo de control + D ya aparece el resultado.

no he utilizado return por que este es un programa que viene en un libro de programación, pero como siempre no explican casi nada y luego me toca a mi darme con la cabeza en el teclado horas y horas por que no entiendo lo que pasa.

como pueden ver estoy muy verde en lo del lenguaje C, así que pido un poco de paciencia y dar las gracias por vuestra ayuda