Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ander123 en 29 Agosto 2012, 16:21 pm



Título: Conteo
Publicado por: Ander123 en 29 Agosto 2012, 16:21 pm
Hola, tengo que hacer un programa que cuente espacios tabuladores y lineas, pero solo me cuenta las lineas.. que hago mal?

Código:
#include<stdio.h>

main()
{
    int c, nl,t,e;

    nl=0;
    t=0;
    e=0;
    while((c=getchar())!= EOF)

        {if (c=='\n')
            ++nl;}
         {
             if (c=='\t')
                ++t;
         }
         {
             if (c=='\ ')
             ++e;
         }

    printf("%d %d %d\n",nl,t,e);
}


Título: Re: Conteo
Publicado por: avesudra en 29 Agosto 2012, 16:50 pm
A mí me funciona eh , lo que pasa es que con getchar coges solo un carácter , no una cadena eh! Y aun así me funciona.


Título: Re: Conteo
Publicado por: Ander123 en 29 Agosto 2012, 17:02 pm
funciona el conteo de lineas pero no el de espacios y tabuladores, "tabuladores quiere decir espacios creados por tab no"?


Título: Re: Conteo
Publicado por: avesudra en 29 Agosto 2012, 17:19 pm
funciona el conteo de lineas pero no el de espacios y tabuladores, "tabuladores quiere decir espacios creados por tab no"?
El tabulador es esta tecla(Por si las moscas jeje) Si son creados por tab.
(http://2.bp.blogspot.com/-slH5dcUFgS8/T7jW7d6TIzI/AAAAAAAAARg/o0irs-0VHm8/s1600/TECLA%2BTAB.jpg)
Si le das ahí y después a intro. Y pulsas EOF en Windows es Ctrl + Z te sale.Y lo de los espacios también funciona , pon un monton de espacios y pulsa y intro y después Ctrl + Z y intro otra vez y verás :)


Título: Re: Conteo
Publicado por: leosansan en 29 Agosto 2012, 17:25 pm
Código:
#include<stdio.h>

int main()
{
    int c, nl,t,e;

    nl=0;
    t=0;
    e=0;
    while((c=getchar())!= EOF)

        {
            if (c=='\n')
            ++nl;
             if (c=='\t')
                ++t;
             if (c=='\\')
             ++e;
         }

    printf("%d %d %d\n",nl,t,e);
    return 0;
}
Si quieres contar los espacios en blaco, en lugar de
Código:
  if (c=='\\')
pones
Código:
  if (c==' ')


Título: Re: Conteo
Publicado por: avesudra en 29 Agosto 2012, 17:31 pm
Código:
#include<stdio.h>

main()
{
    int c, nl,t,e;

    nl=0;
    t=0;
    e=0;
    while((c=getchar())!= EOF)

        {
            if (c=='\n')
            ++nl;
             if (c=='\t')
                ++t;
           if (c=='\\')
             ++e;
         }

    printf("%d %d %d\n",nl,t,e);
}
Si quieres contar los espacios en blaco, en lugar de
Código:
  if (c=='\\')
pones
Código:
  if (c==' ')
Tienes razón el problema son las llaves del while , que lo había corregido yo en su código para probarlo y se me ha olvidado decirlo.


Título: Re: Conteo
Publicado por: Ander123 en 29 Agosto 2012, 17:32 pm
He visto que el fallo estaba en que yo había separado con claves las tres instrucciones, porque así no funcionaba? que diferencia hay?


Título: Re: Conteo
Publicado por: leosansan en 29 Agosto 2012, 17:37 pm

Citar
He visto que el fallo estaba en que yo había separado con claves las tres instrucciones, porque así no funcionaba? que diferencia hay?
Hacen falta las llaves para While que se compone de varias sentencias, pero como lo if sólo tienen una sentencia no hace falta llaves para ellos.


Título: Re: Conteo
Publicado por: Ander123 en 29 Agosto 2012, 17:54 pm
los espacios en blanco no los cuenta, se crean con la barra espaciadora no?:S porque estaba haciendo otro programa parecido y tampoco los contaba,


Título: Re: Conteo
Publicado por: leosansan en 29 Agosto 2012, 18:48 pm
los espacios en blanco no los cuenta, se crean con la barra espaciadora no?:S porque estaba haciendo otro programa parecido y tampoco los contaba,
A ver si te aclaras con lo que te cuento:
Código:
if (c=='\\')
cuenta las "\" que introduces, mientras que si usas:
Código:
if (c==' ')
cuenta los espacios en blanco.
Saludos .... y ánimo que los comienzos siempre cuestan.