Autor
|
Tema: modificacion codigo ??? (Leído 2,523 veces)
|
luis456
Desconectado
Mensajes: 551
|
Hola este código me calcula o compara números y dice la distancia entre estos pero lo hace de izquierda a derechas o sea en horizontal ejemplo 1 2 3 5 8 y me calcula que entre el 1 y 2 hay 1 entre 2 y 3 hay 1 entre 3 y 5 hay 2 y entre 5 y 8 hay 3 resultado 1 2 3 5 8 <--- muestra 1 1 3 3 <----resultado Bien lo que ahora busco es hacerlo pero en vertical con los números hacia abajo #include <stdio.h> int main() { int i,x1=0, x2=0,x3=0,x4=0,x5=0,x6=0; FILE* fichero,*fich; fichero = fopen("combiLuis.txt", "r"); if (fichero == NULL) { printf("No existe el fichero!\n"); return 1; } fich = fopen("CombiDiferanciasLuis.txt", "wt"); if (fich == NULL) { printf("No existe el fichero!\n"); return 1; } { fscanf(fichero ,"%d %d %d %d %d %d ", &x1 ,&x2 ,&x3 ,&x4 ,&x5 ,&x6 ); fprintf(fich ,"%d %d %d %d %d \n",x2 - x1 ,x3 -x2 ,x4 -x3 ,x5 -x4 ,x6 -x5 ); } return 0; }
Luis se me olvido up seria hacer lo mismo pero hacia abajo 1 2 3 4 5 2 5 4 7 8 4 2 1 8 9
|
|
« Última modificación: 13 Febrero 2014, 09:13 am por luis456 »
|
En línea
|
Que tu sabiduria no sea motivo de Humillacion para los demas
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Pasos a seguir: guarda x2-x1 en x1 guarda x3-x2 en x2 guarda x4-x3 en x3 ... tienes que tener en cuenta que en cada iteración vas a perder el último número, en tu caso, no puedes comparar la diferencia del 8 con el siguiente porque, directamente, no existe... ahí no se si vas a usar un número por defecto o directamente, a diezmar la secuencia. Si eliminas el último número en cada paso deberías pasar a usar un vector en vez de variables sueltas, así te puedes permitir el lujo de gestionar los accesos de forma dinámica: int x[6] = { 0, 0, 0 ,0, 0, 0 }; // ... fscanf(fichero ,"%d %d %d %d %d %d ", &x [0], &x [1], &x [2], &x [3], &x [4], &x [5] ); int tope = 5; while ( tope > 0 ) { int i = 0; for ( i=0; i<tope; i++ ) { x[ i ] = x[ i + 1 ] - x[ i ]; } fprintf( fich , "\n" ); // Salto de linea al finalizar cada secuencia. tope--; }
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Es decir, amigo Luis, además de las diferencias, digamos en horizontal de una línea, quieres las diferencias de una línea con la siguiente. Esto si sale nos forramos y no olvides que voy a un porcentaje en los beneficios de tu Empresa.
Por si no lo he tenido claro te pongo lo que creo que pides.
En un texto están las líneas de números:17 21 23 32 39 40 13 16 21 22 25 34 19 20 25 27 39 49 15 24 33 37 45 46 13 21 22 30 32 49 11 17 21 24 25 26 10 14 18 20 27 43 13 14 25 36 43 49 10 12 20 21 28 32 13 19 20 27 28 32
y lo que tú quieres es ...¡¡¡tachán, tachán!!!:* 17 21 23 32 39 40 * [1] 1 1 1 1 1" ==>dif_horizontal
* 13 16 21 22 25 34* [2] 3 5 1 3 9 ==>dif_horizontal -4 -5 -2-10-14 -6 ==>dif_vertical
* 19 20 25 27 39 49* [3] 1 5 2 12 10 ==>dif_horizontal 6 4 4 5 14 15 ==>dif_vertical
* 15 24 33 37 45 46* [4] 9 9 4 8 1 ==>dif_horizontal -4 4 8 10 6 -3 ==>dif_vertical
* 13 21 22 30 32 49* [5] 8 1 8 2 17 ==>dif_horizontal -2 -3-11 -7-13 3 ==>dif_vertical
* 11 17 21 24 25 26* [6] 6 4 3 1 1 ==>dif_horizontal -2 -4 -1 -6 -7-23 ==>dif_vertical
* 10 14 18 20 27 43* [7] 4 4 2 7 16 ==>dif_horizontal -1 -3 -3 -4 2 17 ==>dif_vertical
* 13 14 25 36 43 49* [8] 1 11 11 7 6 ==>dif_horizontal 3 0 7 16 16 6 ==>dif_vertical
* 10 12 20 21 28 32* [9] 2 8 1 7 4 ==>dif_horizontal -3 -2 -5-15-15-17 ==>dif_vertical
* 13 19 20 27 28 32* [10] 6 1 7 1 4 ==>dif_horizontal 3 7 0 6 0 0 ==>dif_vertical
Está visto que el destino no deja que nos separemos.
Te recuerdo que el tema de ficheros no es mi fuerte así que espero que algún erudito en el tema lo mejore.
Lo que si te he dejado en el código son tanto los printf, para ver el resultado en pantalla, como los fprintf, para grabar el fichero. Por cierto, fíjate que los he renombrado con un cero al final de los mismos, así no perdía los anteriores.#include <stdio.h> #include <stdlib.h> int main() { int i=0,j=0,k=0,y[2][6]; FILE* fichero,*fich; fichero = fopen("combiLuis0.txt", "r"); if ((fichero = fopen("combiLuis0.txt", "r")) == NULL){ perror("combiLuis0.txt"); return EXIT_FAILURE; } fich = fopen("CombiDiferanciasLuis0.txt", "w"); if ((fich = fopen("CombiDiferanciasLuis0.txt", "w")) == NULL){ perror("CombiDiferanciasLuis0.txt"); return EXIT_FAILURE; } while (fscanf(fichero,"%d %d %d %d %d %d ", &y[i][0], &y[i][1], &y[i][2], &y[i][3], &y[i][4], &y[i][5] )==6){ i++;k++; if (i==1){ printf("\n*"); fprintf(fich,"\n*"); for (j=0;j<6;j++){ printf ("%3d",y[0][j]) ; fprintf (fich,"%3d",y[0][j]) ; } printf(" * [%d]\n ",k); fprintf(fich," * [%d]\n ",k); for (j=0;j<5;j++){ printf ("%3i",y[0][j+1]-y[0][j]); fprintf (fich,"%3i",y[0][j]+1-y[0][j]); } printf(" ==>dif_horizontal\n"); fprintf(fich,"\" ==>dif_horizontal\n"); } else { printf("\n*"); fprintf(fich,"\n*"); for (j=0;j<6;j++){ printf ("%3d",y[1][j]); fprintf (fich,"%3d",y[1][j]); } printf("* [%d]\n ",k); fprintf(fich,"* [%d]\n ",k); for (j=0;j<5;j++){ printf ("%3i",y[1][j+1]-y[1][j]) ; fprintf (fich,"%3i",y[1][j+1]-y[1][j]) ; } printf(" ==>dif_horizontal\n"); fprintf(fich," ==>dif_horizontal\n"); for (j=0;j<6;j++){ printf ("%3i",y[1][j]-y[0][j]); fprintf (fich,"%3i",y[1][j]-y[0][j]); } printf(" ==>dif_vertical\n"); fprintf(fich," ==>dif_vertical\n"); for (j=0;j<6;j++){ y[0][j]=y[1][j]; } i=1; } } fclose(fichero); fclose(fich); return EXIT_SUCCESS; }
Espero que esto te de "vidilla" y sigas profundizando en el tema.
No obstante, te recuerdo que todos estos resultados parciales que vas obteniendo los tendrías que pasar por un programa estadístico que te de las medias, varianzas, desviaciones, intervalos de confianza, etc. Yo en particular te aconsejo el SPSS, es potente y relativamente claro ..... ¡¡¡pero no me lo pidas a mí!!!....., consulta con tus amigos matemáticos.
Un fuerte abrazo de tu amigo León.¡¡¡¡ Saluditos! ..... !!!! EDITO:Corregido.
|
|
« Última modificación: 14 Febrero 2014, 06:23 am por leosansan »
|
En línea
|
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Y si sólo se quieren las diferencias entre líneas sucesivas, tipo: 4 5 2 10 14 6 -6 -4 -4 -5-14-15 4 -4 -8-10 -6 3 2 3 11 7 13 -3 2 4 1 6 7 23 1 3 3 4 -2-17 -3 0 -7-16-16 -6 3 2 5 15 15 17 -3 -7 0 -6 0 0
#include <stdio.h> #include <stdlib.h> int main() { int i=0,j=0,k=0,y[2][6]; FILE* fichero,*fich; fichero = fopen("combiLuis0.txt", "r"); if ((fichero = fopen("combiLuis0.txt", "r")) == NULL){ perror("combiLuis0.txt"); return EXIT_FAILURE; } fich = fopen("CombiDiferanciasLuis01.txt", "w"); if ((fich = fopen("CombiDiferanciasLuis01.txt", "w")) == NULL){ perror("CombiDiferanciasLuis01.txt"); return EXIT_FAILURE; } i = 0; while (fscanf(fichero,"%d %d %d %d %d %d ", &y[i][0], &y[i][1], &y[i][2], &y[i][3], &y[i][4], &y[i][5] )==6){ i++;k++; if (i>1){ printf("\n"); fprintf(fich,"\n"); for (j=0;j<6;j++){ printf ("%3i",y[0][j]-y[1][j]); fprintf (fich,"%3i",y[0][j]-y[1][j]); } for (j=0;j<6;j++) y[0][j]=y[1][j]; i=1; } } fclose(fichero); fclose(fich); return EXIT_SUCCESS; }
¡¡¡¡ Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Modificacion inocua de código con Olly
Ingeniería Inversa
|
TaU
|
7
|
4,239
|
29 Abril 2004, 08:45 am
por Shaddy
|
|
|
modificacion de codigo para login
PHP
|
turion
|
0
|
2,018
|
30 Septiembre 2009, 11:12 am
por turion
|
|
|
TUTORIAL: Modificación e inyección de código en ensamblados .NET
Ingeniería Inversa
|
karmany
|
1
|
2,899
|
15 Febrero 2010, 20:20 pm
por Keyen Night
|
|
|
modificacion de codigo en C
Programación C/C++
|
DAOST420
|
1
|
3,085
|
12 Noviembre 2020, 18:11 pm
por K-YreX
|
|
|
MODIFICACION DE CODIGO FUENTE
Ingeniería Inversa
|
jarvis123
|
1
|
2,175
|
14 Septiembre 2022, 23:52 pm
por Danielㅤ
|
|