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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  suma de ASCII
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: suma de ASCII  (Leído 4,389 veces)
josri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
suma de ASCII
« en: 28 Marzo 2013, 08:12 am »

Saludos, pues tengo un programa que lee de un archivo varias cadenas, estas tiene que sumar caracter por caracter su codigo ascii y luego sacarle modulo 131, por ejemplo: para la cadena enero los codigos son 101, 110, 101, 114 y 111 y la suma es 537 despues sacando modulo 131 sale 13

mi duda es en la siguinte parte:
Código:
                                                    .
                                                     .

suma=0;
while(!feof(archivo))
    {
        fscanf(archivo,"%[^\n]\n",cadena); //en esta parte lee cada cadena del archivo

        for(i=0; i<6; i++)
        {
            suma=suma+cadena[i]; //aqui suma caracter por caracter
        }

...codigo para mod...

    }

                                                      .
                                                      .


en vez de poner el ciclo "for", que puedo poner para que sume hasta que sea el final de la cadena en turno?, en el for puse 6 por que estaba empezando con "enero" pero las siguientes cadenas de menor o mayor tamaño cambia el valor de la suma real de caracteres, intente poner un --while(cadena!='\0')-- en vez del for, pero se quedaba sin hacer nada, el codigo para el mod ya lo hice inclusive si me sale segun el ejemplo pero les repito en cadenas de diferente longitud cambia el valor real.

Las cadenas la declare de la siguiente forma por si eso tiene algo que ver con algun error que cometo al intentar hacer el while...
char cadena[15];
de antemano gracias por la ayuda, saludos. :P


En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: suma de ASCII
« Respuesta #1 en: 28 Marzo 2013, 08:53 am »

Si cadena en un array de char o un puntero de char (char [] o *char) puedes usar la funcion strlen de la libreria string.h. Si tienes:

char c[5];

y el contenido:

c[0]='H'
c[1]='o'
c[2]='l'
c[3]='a'
c[4]='\0' o vacio

strlen(c) te devuelve 4.

He probado sprintf(c,"Hola\0") y sprintf(c,"Hola") y el strlen me devuelve 4 en los 2 casos.


« Última modificación: 28 Marzo 2013, 08:56 am por Maik33 » En línea

Almapa

Desconectado Desconectado

Mensajes: 111


Ver Perfil
Re: suma de ASCII
« Respuesta #2 en: 28 Marzo 2013, 12:04 pm »

Efectivamente, como ha dicho Maik33 puedes utilizar la función strlen y a partir de ahí ya lo puedes programar como un bucle for:

Código
  1. while(!feof(archivo))
  2.    {
  3.        fscanf(archivo,"%[^\n]\n",cadena);
  4.        l=strlen(cadena);
  5.        for(i=0; i<l+1; i++)
  6.        {
  7.            suma=suma+cadena[i];
  8.        }
  9.    }

o como un while

Código
  1. while(!feof(archivo))
  2.    {
  3.        fscanf(archivo,"%[^\n]\n",cadena);
  4.        l=strlen(cadena);
  5.        while(i<=l)
  6.        {
  7.            suma=suma+cadena[i];
  8.            i++;
  9.        }
  10.    }

Un saludo
En línea

OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: suma de ASCII
« Respuesta #3 en: 28 Marzo 2013, 13:05 pm »

Perdón si la pregunta es tonta pero... ¿Qué hace "fscanf"?
En línea

I like to test things.
85

Desconectado Desconectado

Mensajes: 206



Ver Perfil WWW
Re: suma de ASCII
« Respuesta #4 en: 28 Marzo 2013, 15:19 pm »

http://www.cplusplus.com/reference/cstdio/fscanf/
http://c.conclase.net/librerias/?ansifun=fscanf

se usa para archivos, fijate su primer parámetro
« Última modificación: 28 Marzo 2013, 15:21 pm por 85 » En línea

Me cerraron el Windows Live Spaces, entonces me creé un WordPress XD
http://etkboyscout.wordpress.com/
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: suma de ASCII
« Respuesta #5 en: 28 Marzo 2013, 15:59 pm »

Vale, ya entiendo. ¿Hay algún "fcin"? O hay algún código equivalente a "fscanf" en ansi c++, o fscanf ya es parte del ansi de c++ y no hay ningún equivalente en c++?
PD: Muchas gracias por tomarte las molestias de buscar las referencias. :)
Un saludo.
En línea

I like to test things.
josri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: suma de ASCII
« Respuesta #6 en: 28 Marzo 2013, 23:07 pm »





Hola gracias por responder, probare sus consejos y les cuento que paso...
En línea

josri

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: suma de ASCII
« Respuesta #7 en: 29 Marzo 2013, 02:26 am »





Listo ya quedo, ocupe el ciclo for que me habian mencionado, intente tambien con el while pero seguia sin hacer nada jajaja, pero con el for ya funciono, gracias por la ayuda, saludos. ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
101 - suma euros
Ejercicios
Cobac 1 3,431 Último mensaje 2 Julio 2004, 04:12 am
por soplo
Mas de listview(suma)
Programación Visual Basic
mdg 2 1,614 Último mensaje 25 Octubre 2007, 05:52 am
por mdg
Suma MD5 de un archivo.
Programación Visual Basic
tkows 3 2,063 Último mensaje 10 Octubre 2008, 13:35 pm
por tkows
[Python] Ascii To Hex y Hex to Ascii
Scripting
Runex 0 2,224 Último mensaje 8 Abril 2012, 15:09 pm
por Runex
Suma de ascii
Programación C/C++
sheva777 3 1,032 Último mensaje 31 Marzo 2013, 11:59 am
por do-while
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines