Autor
|
Tema: suma de ASCII (Leído 6,939 veces)
|
josri
Desconectado
Mensajes: 13
|
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: . .
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.
|
|
|
En línea
|
|
|
|
Maik33
Desconectado
Mensajes: 128
|
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
Mensajes: 111
|
Efectivamente, como ha dicho Maik33 puedes utilizar la función strlen y a partir de ahí ya lo puedes programar como un bucle for: while(!feof(archivo)) { fscanf(archivo,"%[^\n]\n",cadena); l=strlen(cadena); for(i=0; i<l+1; i++) { suma=suma+cadena[i]; } }
o como un while while(!feof(archivo)) { fscanf(archivo,"%[^\n]\n",cadena); l=strlen(cadena); while(i<=l) { suma=suma+cadena[i]; i++; } }
Un saludo
|
|
|
En línea
|
|
|
|
OmarHack
Desconectado
Mensajes: 1.268
|
Perdón si la pregunta es tonta pero... ¿Qué hace "fscanf"?
|
|
|
En línea
|
I like to test things.
|
|
|
85
|
|
|
« Última modificación: 28 Marzo 2013, 15:21 pm por 85 »
|
En línea
|
|
|
|
OmarHack
Desconectado
Mensajes: 1.268
|
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
Mensajes: 13
|
Hola gracias por responder, probare sus consejos y les cuento que paso...
|
|
|
En línea
|
|
|
|
josri
Desconectado
Mensajes: 13
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
101 - suma euros
Ejercicios
|
Cobac
|
1
|
4,804
|
2 Julio 2004, 04:12 am
por soplo
|
|
|
Mas de listview(suma)
Programación Visual Basic
|
mdg
|
2
|
3,162
|
25 Octubre 2007, 05:52 am
por mdg
|
|
|
Suma MD5 de un archivo.
Programación Visual Basic
|
tkows
|
3
|
2,834
|
10 Octubre 2008, 13:35 pm
por tkows
|
|
|
[Python] Ascii To Hex y Hex to Ascii
Scripting
|
Runex
|
0
|
3,305
|
8 Abril 2012, 15:09 pm
por Runex
|
|
|
Suma de ascii
Programación C/C++
|
sheva777
|
3
|
2,037
|
31 Marzo 2013, 11:59 am
por do-while
|
|