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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  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 1,840 veces)
sheva777

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Suma de ascii
« en: 31 Marzo 2013, 00:08 am »

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 Desconectado

Mensajes: 166


Ver Perfil
Re: Suma de ascii
« Respuesta #1 en: 31 Marzo 2013, 03:16 am »

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

Código
  1. #include<stdio.h>
  2. #include<math.h>
  3. #include<string.h>
  4.  
  5. char cadena[30];
  6. int y;
  7. int i;
  8. int resultado;
  9. int l;
  10. int main() {
  11.  
  12.    int i=0;
  13.    int y;
  14.    char nombreArchivoLectura[10];
  15.    char nombreArchivoEscritura[10];
  16.    FILE *archivoLectura=NULL;
  17.    FILE *archivoEscritura=NULL;
  18.    archivoLectura=fopen("in.txt","r");
  19.    archivoEscritura = fopen("salida.txt","w");
  20.  
  21.    while(!feof(archivoLectura)) {
  22.        y=0;
  23.        fscanf(archivoLectura,"%[^\n]\n",cadena);
  24.        l=strlen(cadena);
  25.        printf("%s: ", cadena);
  26.        for(i=0;i<l+1;i++) y+=(int)cadena[i];
  27.        printf("\n---------------------------------------\n");
  28.        resultado=y%131;
  29.        fprintf(archivoEscritura,"%d\n",resultado);
  30.    }
  31.    fclose(archivoLectura);
  32.    fclose(archivoEscritura);
  33.    return 0;
  34. }
  35.  


« Última modificación: 31 Marzo 2013, 03:17 am por BatchianoISpyxolo » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
sheva777

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Suma de ascii
« Respuesta #2 en: 31 Marzo 2013, 04:35 am »

tenias razon ese era mi error, muchas gracias por resolverme la duda, ya quedo  ;-)
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Suma de ascii
« Respuesta #3 en: 31 Marzo 2013, 11:59 am »

¡Buenas!

Revisa el código.

A parte de lo que ya te han dicho, aquí tienes un posible bucle infinito:
Código
  1. while(archivoLectura == NULL)
  2. {
  3.    printf("El archivo no pudo abrirse\n");
  4.    printf("Nombre de arcivo de Lectura con extension:");
  5.    scanf("%s",&nombreArchivoLectura);
  6. }
  7.  

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!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
101 - suma euros
Ejercicios
Cobac 1 4,652 Último mensaje 2 Julio 2004, 04:12 am
por soplo
Mas de listview(suma)
Programación Visual Basic
mdg 2 2,928 Último mensaje 25 Octubre 2007, 05:52 am
por mdg
Suma MD5 de un archivo.
Programación Visual Basic
tkows 3 2,706 Último mensaje 10 Octubre 2008, 13:35 pm
por tkows
[Python] Ascii To Hex y Hex to Ascii
Scripting
Runex 0 3,095 Último mensaje 8 Abril 2012, 15:09 pm
por Runex
suma de ASCII
Programación C/C++
josri 7 6,609 Último mensaje 29 Marzo 2013, 02:26 am
por josri
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines