Conteo

Iniciado por Ander123, 29 Agosto 2012, 16:21 PM

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

Ander123

Hola, tengo que hacer un programa que cuente espacios tabuladores y lineas, pero solo me cuenta las lineas.. que hago mal?

#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);
}

avesudra

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.
Regístrate en

Ander123

funciona el conteo de lineas pero no el de espacios y tabuladores, "tabuladores quiere decir espacios creados por tab no"?

avesudra

Cita de: 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"?
El tabulador es esta tecla(Por si las moscas jeje) Si son creados por tab.

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 :)
Regístrate en

leosansan

#4
#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
 if (c=='\\')
pones
 if (c==' ')

avesudra

Cita de: leosansan en 29 Agosto 2012, 17:25 PM
#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
 if (c=='\\')
pones
 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.
Regístrate en

Ander123

He visto que el fallo estaba en que yo había separado con claves las tres instrucciones, porque así no funcionaba? que diferencia hay?

leosansan


CitarHe 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.

Ander123

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,

leosansan

Cita de: 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,
A ver si te aclaras con lo que te cuento:
if (c=='\\')
cuenta las "\" que introduces, mientras que si usas:
if (c==' ')
cuenta los espacios en blanco.
Saludos .... y ánimo que los comienzos siempre cuestan.