Autor
|
Tema: Suma de ascii (Leído 2,045 veces)
|
sheva777
Desconectado
Mensajes: 8
|
Lo que pasa es que tengo que crear un programa que lea un archivo de entrada y me genere otro de salida el código de dispersión de cada una de las cadenas calculado de la siguiente forma: Sume los ASCII de los caracteres de cada cadena y al final saque módulo 131. Por ejemplo, para la cadena "enero" los ASCII son 101, 110, 101, 114 y 111, por lo que la suma es 537 y al sacar módulo 131 se obtiene 13.
He creado el programa pero solo me saca el resultado de enero correctamente y los demas ya no, mi duda es por que es que pasa esto. Les dejo el codigo que he creado, espero y me puedan orientar para resolver la duda, de ante mano muchas gracias.
archivo de entrada
enero febrero marzo abril
me genera este archivo de salida
13 ese valor es el único correcto 99 128 126 40
codigo
#include<stdio.h> #include<math.h> #include<string.h>
char cadena[30]; int y; int i; int resultado; int l; main() {
int i=0; int y=0; char nombreArchivoLectura[10]; char nombreArchivoEscritura[10]; FILE *archivoLectura=NULL; FILE *archivoEscritura=NULL;
archivoLectura=fopen("entrada.txt","r"); archivoEscritura = fopen("salida.txt","w"); while(archivoLectura == NULL) { printf("El archivo no pudo abrirse\n"); printf("Nombre de arcivo de Lectura con extension:"); scanf("%s",&nombreArchivoLectura); }
while(!feof(archivoLectura)) { fscanf(archivoLectura,"%[^\n]\n",cadena); l=strlen(cadena); for(i=0;i<l+1;i++) { y=y+cadena; } printf("---------------------------------------\n"); resultado=y%131; fprintf(archivoEscritura,"%d\n",resultado); } fclose(archivoLectura); fclose(archivoEscritura);
}
|
|
|
En línea
|
|
|
|
BatchianoISpyxolo
Desconectado
Mensajes: 166
|
Fíjate que la y sólo la inicializas cuando la declaras, por eso para el primer caso te funciona. Luego vas arrastrando el valor de y en cada solución... Recuerda que sumas los valores ascii de caracteres... (cadena )
Ahora debería funcionar...
#include<stdio.h> #include<math.h> #include<string.h> char cadena[30]; int y; int i; int resultado; int l; int main() { int i=0; int y; char nombreArchivoLectura[10]; char nombreArchivoEscritura[10]; FILE *archivoLectura=NULL; FILE *archivoEscritura=NULL; archivoLectura =fopen("in.txt","r"); archivoEscritura = fopen("salida.txt","w"); while(!feof(archivoLectura )) { y=0; fscanf(archivoLectura ,"%[^\n]\n",cadena ); for(i=0;i<l+1;i++) y+=(int)cadena[i]; printf("\n---------------------------------------\n"); resultado=y%131; fprintf(archivoEscritura ,"%d\n",resultado ); } return 0; }
|
|
« Última modificación: 31 Marzo 2013, 03:17 am por BatchianoISpyxolo »
|
En línea
|
|
|
|
sheva777
Desconectado
Mensajes: 8
|
tenias razon ese era mi error, muchas gracias por resolverme la duda, ya quedo
|
|
|
En línea
|
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas! Revisa el código. A parte de lo que ya te han dicho, aquí tienes un posible bucle infinito: while(archivoLectura == NULL) { printf("El archivo no pudo abrirse\n"); printf("Nombre de arcivo de Lectura con extension:"); scanf("%s",&nombreArchivoLectura ); }
Si el archivo desde el que lees los datos no puede abrirse, por mucho que leas el nuevo nombre de fichero, si no intentas abrir de nuevo el fichero el puntero seguirá siendo NULL. ¡Saludos!
|
|
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
101 - suma euros
Ejercicios
|
Cobac
|
1
|
4,815
|
2 Julio 2004, 04:12 am
por soplo
|
|
|
Mas de listview(suma)
Programación Visual Basic
|
mdg
|
2
|
3,189
|
25 Octubre 2007, 05:52 am
por mdg
|
|
|
Suma MD5 de un archivo.
Programación Visual Basic
|
tkows
|
3
|
2,852
|
10 Octubre 2008, 13:35 pm
por tkows
|
|
|
[Python] Ascii To Hex y Hex to Ascii
Scripting
|
Runex
|
0
|
3,317
|
8 Abril 2012, 15:09 pm
por Runex
|
|
|
suma de ASCII
Programación C/C++
|
josri
|
7
|
6,960
|
29 Marzo 2013, 02:26 am
por josri
|
|