Animo que son dos dias ¡ ¡ ¡.
Como te he comentado me defiendo más en C que en C++, no obstante haré lo que tú comentas y me iré mirando los ficheros en C++.
Pero para que veas que es relativamente sencillo, te dejo el código en C -guárdalo con la extensión .c -.
No hace falta manejar memoria dinámica ya que sólo haces uso de un array de seis elementos. La idea es leer una línea de esos seis elementos, formar la matriz con los incrementos correspondientes y guardarla en un nuevo fichero. Así de sencillo: un solo array y una sola matriz para todo, independientemente de cuantas líneas tenga el fichero.
Para que lo" veas" te dejo los printf -en C++ serían cout-:
P.D: Recuerda que los ficheros generados se encuentran en la misma carpeta donde está el código.
Como te he comentado me defiendo más en C que en C++, no obstante haré lo que tú comentas y me iré mirando los ficheros en C++.
Pero para que veas que es relativamente sencillo, te dejo el código en C -guárdalo con la extensión .c -.
No hace falta manejar memoria dinámica ya que sólo haces uso de un array de seis elementos. La idea es leer una línea de esos seis elementos, formar la matriz con los incrementos correspondientes y guardarla en un nuevo fichero. Así de sencillo: un solo array y una sola matriz para todo, independientemente de cuantas líneas tenga el fichero.
Para que lo" veas" te dejo los printf -en C++ serían cout-:
Código
Saluditos!.
#include <stdio.h> #include <stdlib.h> #define NOM_ARCHIVO "luis_C.txt" #define NOM_ARCHIVO2 "luis2_C.txt" #define NUM_ELEM 6 int main(void){ FILE *fichero,*fichero2; float v[NUM_ELEM],a[6][6]; int i,j; /*********** ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO ************/ if ((fichero = fopen(NOM_ARCHIVO, "w")) == NULL){ perror(NOM_ARCHIVO); return EXIT_FAILURE; } fprintf(fichero, "01 32 34 38 41 44\n"); fprintf(fichero, "03 06 19 32 47 49\n"); fprintf(fichero, "08 12 20 34 47 50"); /*fprintf(fichero, "01 32 34 38 41 44\n03 06 19 32 47 49\n08 12 20 34 47 50");<== o este solo fprintf*/ fclose(fichero); /**************************************************************************/ if ((fichero = fopen(NOM_ARCHIVO, "r")) == NULL){ perror(NOM_ARCHIVO); return EXIT_FAILURE; } if ((fichero2 = fopen(NOM_ARCHIVO2, "w")) == NULL){ perror(NOM_ARCHIVO); return EXIT_FAILURE; } while (fscanf(fichero,"%g %g %g %g %g %g", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5])==6){ for (i=0;i<6;i++) printf ("v[%d]= %g ",i, v[i]); puts("\n");puts("\n"); for (i=0;i<6;i++) for (j=0;j<6;j++){ if (i!=j) a[i][j]=v[j]; else a[i][j]=v[i]+1; } fprintf (fichero2, "\n "); for (i=0;i<6;i++){ for (j=0;j<6;j++){ printf ("%g ", a[i][j]); fprintf (fichero2, "%g ", a[i][j]); }fprintf (fichero2, "\n ");puts("\n"); } } fclose(fichero); fclose(fichero2); return EXIT_SUCCESS; }
P.D: Recuerda que los ficheros generados se encuentran en la misma carpeta donde está el código.
Hola Leo
gracias por tu dedicación a estos proyectos locos que hago ya estoy viendo las diferencias en c y c++ y mezclado con foxpro salen una buena ensalada
Luis