Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: dx671 en 7 Julio 2011, 01:57 AM

Título: duda con programa que cuenta caracteres
Publicado por: dx671 en 7 Julio 2011, 01:57 AM
Hola a todos, tengo que preparar un programa que me cuenta los caracteres que introduzco utilizando arreglos y ciclos. Lo que tengo hecho no es mcho, pero voy a explicar lo que trato de hacer



#include <stdio.h>
#include <stdlib.h>
#define tam 1000

int main()
{
int i=0;

char a[tam];

    for(i=0 ;i<1000; i++)
    a = fgetc(i);
    printf("%d", %i);
}

estoy definiendo un array de 1000 caracteres y un contador i que aumente cada vez que agregue uno, y al final recibir el valor de i cuando haga el printf
Título: Re: duda con programa que cuenta caracteres
Publicado por: PiroskY en 7 Julio 2011, 04:53 AM
Explica mejor el ejercicio
Que tiene que hacer exactamente?
A medida que apretás una tecla mostrarla? y también ir mostrando el numero de teclas presionadas?
o simplemente ingresar algo, y al final mostrar cuantos caracteres introdujiste?
Título: Re: duda con programa que cuenta caracteres
Publicado por: dx671 en 7 Julio 2011, 07:20 AM
lo que debe hacer es lo siguiente:
escribo X cantidad de caracteres, le doy enter y el programa me dice "escribiste X caracteres", depues me tengo que poner mas exquisito y decir cuantas mayusculas hay, pero lo que mas me interesa es la primera parte
gracias :)
Título: Re: duda con programa que cuenta caracteres
Publicado por: javahat en 7 Julio 2011, 07:51 AM


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

#define MAX 20

int main()
{
    char frase[MAX];
    int i=0;
    int espacio=0;

    gets(frase);

    for(i=0; i<MAX; i++)
    {
      if(frase[i] == ' ')
      {
          espacio++;
      }
    }

    printf("%d caracteres\n",strlen(frase));
    printf("%d espacios\n",espacio);

}



espero te sirva, lo hice en code::blocks 10.05, Windows  :)
Título: Re: duda con programa que cuenta caracteres
Publicado por: leogtz en 7 Julio 2011, 09:01 AM
No necesitas un arreglo para esto, podrías hacerlo así:

#include <stdio.h>

int main(void)
{
    char c;
    unsigned contador = 0;
    while((c = getchar()) != EOF)
    contador++;

    printf("Escribiste : %u\n", contador);
    return 0;
}


Saludos.
Título: Re: duda con programa que cuenta caracteres
Publicado por: PiroskY en 7 Julio 2011, 16:14 PM
Supongo que con el EOF funciona, pero yo lo compararía contra '\n'
Título: Re: duda con programa que cuenta caracteres
Publicado por: rir3760 en 7 Julio 2011, 17:08 PM
Se debe comparar contra EOF en caso de error o fin de archivo y contra '\n' para cumplir con el enunciado (debe procesar solo una linea de texto).

Por ultimo se debe cambiar el tipo de la variable "c" en el programa de Leo a "int" ya que ese es el tipo de retorno de la función "getchar":
int c;
unsigned contador = 0;

while((c = getchar()) != EOF && c != '\n')
   contador++;


Un saludo
Título: Re: duda con programa que cuenta caracteres
Publicado por: leogtz en 7 Julio 2011, 18:10 PM
Cierto, y también comparar contra '\n', como en el código de rir3760, ya que creo que daría un caracter de más. Saludos.
Título: Re: duda con programa que cuenta caracteres
Publicado por: PiroskY en 7 Julio 2011, 18:16 PM
int c;
unsigned contador = 0;

while((c = getchar()) != EOF && c != '\n')
   if(c != '\n')
      contador++;


ahí quedaría, creo yo
Título: Re: duda con programa que cuenta caracteres
Publicado por: rir3760 en 7 Julio 2011, 18:31 PM
Cita de: PiroskY en  7 Julio 2011, 18:16 PM
int c;
unsigned contador = 0;

while((c = getchar()) != EOF && c != '\n')
   if(c != '\n')
      contador++;


ahí quedaría, creo yo
No tendria efecto ya que el cuerpo del bucle (la sentencia de seleccion) se ejecuta mientras el caracter sea distinto de EOF y '\n'. En otras palabras dentro del cuerpo del bucle "c != '\n'" siempre es verdadero (1 en este caso).

Si se debe contabilizar el caracter '\n' esa condicion se puede colocar a continuacion del bucle:
int c;
unsigned contador = 0;

while ((c = getchar()) != EOF && c != '\n')
   contador++;
if (c == '\n')
   contador++;

/* ... */


Un saludo
Título: Re: duda con programa que cuenta caracteres
Publicado por: PiroskY en 7 Julio 2011, 18:36 PM
cierto, pero entonces me parece que no contaría uno de mas