elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ejercicio conteo de lineas de libro "El lenguaje programación C" (Solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio conteo de lineas de libro "El lenguaje programación C" (Solucionado)  (Leído 3,373 veces)
frogstalon

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Ejercicio conteo de lineas de libro "El lenguaje programación C" (Solucionado)
« en: 23 Agosto 2011, 02:48 am »

Que tal buen dia :) disculpen si la duda es algo sencilla, pero no comprendo bien este ejercicio y no quiero avanzar del libro sin comprender las cosas..


#include <stdio.h>

int main(int argc, char *argv[])
{
    int c,nl;
    nl=0;
    while ((c = getchar())!=EOF)
    if(c=='/n')
    ++nl;
    printf("%d\n",nl);
}


Bueno, el programa esta cual viene en el libro, por mas que escribo cosas, no logro hacer que imprima "nl"...
por lo que se, como no estoy leyendo ningun archivo, todo lo que escriba va a ser diferente al EOF es correcto?
despues seguiria con el IF c=='/n' se que diagonal invertida \n es para salto de linea, pero no comprendo porque pone la diagonal /n y comilla simple que se refiere a caracter.
segun mis conocimientos muy basicos de C# la operacion del while deberia de estar entre llaves {}, al colocar eso entre llaves si imprime nl, pero nunca hace funcion el prefijo ++n y siempre imprime 0 'cero'...

Por favor denme algun tip o explicacion de esto para poder continuar con el libro y no perderme :)
saludos y gracias anticipadas!!


« Última modificación: 23 Agosto 2011, 05:23 am por frogstalon » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Ejercicio conteo de lineas de libro "El lenguaje de programacion C"
« Respuesta #1 en: 23 Agosto 2011, 03:42 am »

No hace falta introducirlo entre llaves porque el while toma como que dentro de el solo debe ejecutar la instrucción que le sigue, que es el IF, que tampoco tiene llaves porque toma la operación ++nl como operación a ejecutar.

Efectivamente para que el programa finalice (el bucle while termine) debe encontrar la marca EOF, según acabo de leer (no lo he probado) puedes simular la marca mediante el teclado, cito de la wikipedia:

En UNIX se puede generar un EOF desde el shell (consola) tecleando Ctrl+D para indicar el EOF de datos ingresados por teclado, así como en Microsoft DOS y Windows se genera mediante la combinación Ctrl+Z.

Por tanto prueba a hacerlo e imprime lo que te muestre después de haber introcudio algunas líneas.

Por otro lado, creo que la comparación debería realizarse así:
Código
  1. if(c=='\n')
  2.    ++nl;

de todas formas no estoy completamente seguro de que sea estrictamente necesario representarlo así.

Espero haberte ayudado en la medida de lo posible.

Saludos.


En línea

frogstalon

Desconectado Desconectado

Mensajes: 22


Ver Perfil
Re: Ejercicio conteo de lineas de libro "El lenguaje de programacion C"
« Respuesta #2 en: 23 Agosto 2011, 05:22 am »

Valkyr muchisimas gracias :D tu explicacion me sirvio mucho  ;-), ya había leído lo del Ctrl + Z pero como la estructura del programa no estaba bien realizada, por mas que lo usara seguía sin funcionar.
También lo de la comparación es correcta, que pena que venga mal en el libro, pero igual así aprendo a analizar mas las cosas y sacar errores :)...
Dejo el codigo como es, por si algun novato como yo le llegue a servir.

 ***************************************************************
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
   int c,nl;
    nl=0;
    while ((c = getchar())!=EOF)
          if(c=='\n')
              ++nl;
    printf("%d\n",nl);
  system("PAUSE");   
  return 0;
}
 ***************************************************************

En si lo que hace el programa, es que te da oportunidad de escribir lo que quieras, darle 'enter' y generar cuantas lineas quieras, después para poder terminar el programa y que imprima la variable 'nl' y te cuente las lineas, en windows es necesario presionar Ctrl + Z en la consola (esto puede variar dependiendo de sistema operativo)
Saludos y muchisimas gracias Valkyr ha seguir aprendiendo  ::)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines