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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Como hacer que tome registros este programa desde un txt y aplique la funcion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como hacer que tome registros este programa desde un txt y aplique la funcion  (Leído 751 veces)
luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Como hacer que tome registros este programa desde un txt y aplique la funcion
« en: 10 Enero 2013, 19:47 »

Hola a todos

Me gustaria saber si es posible hacer que este codigo que suma 1 a cada numero pero de uno en uno.

01 32 34 38 41 44 <-- registro original en variable

02 32 34 38 41 44 sumamos 1 al primero
01 33 34 38 41 44 sumamos 1 al segundo
01 32 35 38 41 44 sumamos 1 al tercero
01 32 34 39 41 44 sumamos 1 al cuarto
01 32 34 38 42 44 sumamos 1 al quinto
01 32 34 38 41 45 sumamos 1 al sexto

Se podria hacer que tome de un txt varios registros y le aplique el codigo uno por uno ? no importando que sean muchos

esto es lo que llevaria el txt por decir algo.

01 32 34 38 41 44
03 06 19 32 47 49
08 12 20 34 47 49

la idea es que lea el primer registro aplique la funcion y siga con el segundo y cuando se acaben los registros guardarlos
en otro Txt,

*************************
Código:
#include <iostream>
using namespace std;
 
    int main() {
    int v[6]={1 ,32, 34, 38, 41, 44};
    int i,j,a[6][6];
    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;
        }
 
    for (i=0;i<6;i++){
        for (j=0;j<6;j++){
        cout << a[i][j]<<"   ";
        }cout << endl;
    }
    return 0;
}

Gracias de antemano

Luis


En línea

durasno


Desconectado Desconectado

Mensajes: 376


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #1 en: 10 Enero 2013, 19:59 »

Lo que hiciste parace no tener problemas, solo es cuestion que averigues el tema de manejo de archivos. Tambien tal vez te convendria averiguar sobre memoria dinamica ya que si no sabes la cantidad de registros del archivo es mejor manejarlo dinamicamente


Saludos


En línea

Ahorrate una pregunta, lee el man
luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #2 en: 11 Enero 2013, 06:38 »

Lo que hiciste parace no tener problemas, solo es cuestion que averigues el tema de manejo de archivos. Tambien tal vez te convendria averiguar sobre memoria dinamica ya que si no sabes la cantidad de registros del archivo es mejor manejarlo dinamicamente


Saludos

Gracias por responder como he dicho anteriormente trabajaba con fox :) y de memoria dinámica Npi de que existía jeje , me imagino que sera la capacidad del pc para hacer estos calculos y se libera al terminar ?

bien alguna idea de como empezar y por donde ? de todas manera por mi edad :)
aprendo mas rápido con ejemplos para trastear con ellos.

este código funciona bien pero siempre hay un pero ,es una joda que cada ves tenga que modificar los numeros a mano,

No se ni por donde empezar para que siquiera lea el archivo y menos pasar los registros a la variable.


gracias

Luis








En línea

durasno


Desconectado Desconectado

Mensajes: 376


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #3 en: 11 Enero 2013, 07:17 »

Me parece que tu problema es que no tenes un material del cual estudiar, en cualquier libro aparecen estos temas.
En el sección de libros C/C++ vas a encontrar varios o tambien tenes http://c.conclase.net/curso/index.php  y asi hay bastante cosas en internet


Saludos
En línea

Ahorrate una pregunta, lee el man
-- KiLiaN --


Desconectado Desconectado

Mensajes: 1.146


Ju Já!!


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #4 en: 11 Enero 2013, 11:03 »

Busca algún manual de C++ y vete a la parte que expliquen el manejo de archivos.
En línea

luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #5 en: 11 Enero 2013, 13:31 »

Vale vere este fin de empaparme con eso,es que solo los fines de semana es que pùedo estudiar.

Mirare esos enlaces a ver si me entero

Gracias

Luis
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.283



Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #6 en: 11 Enero 2013, 16:10 »

Vale veré este fin de empaparme con eso,es que solo los fines de semana es que puedo estudiar.

Mirare esos enlaces a ver si me entero

Gracias

Luis
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-:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define NOM_ARCHIVO  "luis_C.txt"
  4. #define NOM_ARCHIVO2  "luis2_C.txt"
  5. #define NUM_ELEM  6
  6.  
  7. int main(void){
  8.   FILE *fichero,*fichero2;
  9.   float v[NUM_ELEM],a[6][6];
  10.   int i,j;
  11. /***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
  12.   if ((fichero = fopen(NOM_ARCHIVO, "w")) == NULL){
  13.      perror(NOM_ARCHIVO);
  14.      return EXIT_FAILURE;
  15.   }
  16.   fprintf(fichero, "01 32 34 38 41 44\n");
  17.   fprintf(fichero, "03 06 19 32 47 49\n");
  18.   fprintf(fichero, "08 12 20 34 47 50");
  19.    /*fprintf(fichero, "01 32 34 38 41 44\n03 06 19 32 47 49\n08 12 20 34 47 50");<== o este solo fprintf*/
  20.  
  21.   fclose(fichero);
  22. /**************************************************************************/
  23.   if ((fichero = fopen(NOM_ARCHIVO, "r")) == NULL){
  24.      perror(NOM_ARCHIVO);
  25.      return EXIT_FAILURE;
  26.   }
  27.    if ((fichero2 = fopen(NOM_ARCHIVO2, "w")) == NULL){
  28.      perror(NOM_ARCHIVO);
  29.      return EXIT_FAILURE;
  30.   }
  31.   while (fscanf(fichero,"%g %g %g %g %g %g", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5])==6){
  32.        for (i=0;i<6;i++)
  33.        printf ("v[%d]= %g ",i, v[i]);
  34.        puts("\n");puts("\n");
  35.        for (i=0;i<6;i++)
  36.            for (j=0;j<6;j++){
  37.                if (i!=j)
  38.                    a[i][j]=v[j];
  39.                else
  40.                    a[i][j]=v[i]+1;
  41.        }
  42.        fprintf (fichero2, "\n ");
  43.        for (i=0;i<6;i++){
  44.            for (j=0;j<6;j++){
  45.            printf ("%g ", a[i][j]);
  46.            fprintf (fichero2, "%g ", a[i][j]);
  47.            }fprintf (fichero2, "\n ");puts("\n");
  48.        }
  49.    }
  50.  
  51.   fclose(fichero);
  52.   fclose(fichero2);
  53.  
  54.   return EXIT_SUCCESS;
  55. }
  56.  
  57.  
Saluditos!.
P.D: Recuerda que los ficheros generados se encuentran en la misma carpeta donde está el código.
« Última modificación: 11 Enero 2013, 16:32 por leosansan » En línea

luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #7 en: 11 Enero 2013, 21:25 »

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define NOM_ARCHIVO  "luis_C.txt"
  4. #define NOM_ARCHIVO2  "luis2_C.txt"
  5. #define NUM_ELEM  6
  6.  
  7. int main(void){
  8.   FILE *fichero,*fichero2;
  9.   float v[NUM_ELEM],a[6][6];
  10.   int i,j;
  11. /***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
  12.   if ((fichero = fopen(NOM_ARCHIVO, "w")) == NULL){
  13.      perror(NOM_ARCHIVO);
  14.      return EXIT_FAILURE;
  15.   }
  16.   fprintf(fichero, "01 32 34 38 41 44\n");
  17.   fprintf(fichero, "03 06 19 32 47 49\n");
  18.   fprintf(fichero, "08 12 20 34 47 50");
  19.    /*fprintf(fichero, "01 32 34 38 41 44\n03 06 19 32 47 49\n08 12 20 34 47 50");<== o este solo fprintf*/
  20.  
  21.   fclose(fichero);
  22. /**************************************************************************/
  23.   if ((fichero = fopen(NOM_ARCHIVO, "r")) == NULL){
  24.      perror(NOM_ARCHIVO);
  25.      return EXIT_FAILURE;
  26.   }
  27.    if ((fichero2 = fopen(NOM_ARCHIVO2, "w")) == NULL){
  28.      perror(NOM_ARCHIVO);
  29.      return EXIT_FAILURE;
  30.   }
  31.   while (fscanf(fichero,"%g %g %g %g %g %g", &v[0], &v[1], &v[2], &v[3], &v[4], &v[5])==6){
  32.        for (i=0;i<6;i++)
  33.        printf ("v[%d]= %g ",i, v[i]);
  34.        puts("\n");puts("\n");
  35.        for (i=0;i<6;i++)
  36.            for (j=0;j<6;j++){
  37.                if (i!=j)
  38.                    a[i][j]=v[j];
  39.                else
  40.                    a[i][j]=v[i]+1;
  41.        }
  42.        fprintf (fichero2, "\n ");
  43.        for (i=0;i<6;i++){
  44.            for (j=0;j<6;j++){
  45.            printf ("%g ", a[i][j]);
  46.            fprintf (fichero2, "%g ", a[i][j]);
  47.            }fprintf (fichero2, "\n ");puts("\n");
  48.        }
  49.    }
  50.  
  51.   fclose(fichero);
  52.   fclose(fichero2);
  53.  
  54.   return EXIT_SUCCESS;
  55. }
  56.  
  57.  
Saluditos!.
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
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.283



Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #8 en: 11 Enero 2013, 22:56 »


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

Al final logré una horita y he podido empezar a leer sobre los ficheros en C++.
Te paso el código en C++ de lo que pedias ¡ ¡ ¡.
Compilalo y ejecutalo y luego abre el fichero de texto luis2.txt, ahí estarán todas las matrices resultantes de aplicar el incremento de uno a cada array, todo un gustazo ¡ ¡ ¡ y en luis.txt es donde están, o bien tú lo pones a mano, los arrays.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. int main () {
  8.    int i,j,v[6]={0},a[6][6];
  9. /***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
  10.    fstream myfile ("luis.txt");
  11.    if (myfile.is_open()){
  12.        myfile << "01 32 34 38 41 44\n";
  13.        myfile << "03 06 19 32 47 49\n";
  14.        myfile << "08 12 20 34 47 49\n";
  15.        myfile.close();
  16.    }
  17.    else cout << "\n Incapaz de crear o abrir el fichero \n";
  18. /**************************************************************************/
  19.    string line;
  20.    ifstream myfile1 ("luis.txt");
  21.    if (myfile1.is_open()){
  22.    ofstream myfile3 ("luis2.txt");
  23.    if (myfile3.is_open()){
  24.        myfile1 >>v[0] >>v[1]>>v[2] >>v[3]>>v[4] >>v[5];
  25.        while ( (!myfile1.eof())) {
  26.            for (i=0;i<6;i++)
  27.                cout << "v["<<i<<"] = "<<v[i] << "  ";
  28.            cout <<endl;
  29.            for (i=0;i<6;i++)
  30.                for (j=0;j<6;j++){
  31.                    if (i!=j)
  32.                        a[i][j]=v[j];
  33.                    else
  34.                        a[i][j]=v[i]+1;
  35.            }
  36.                myfile3 << "\n ";cout <<endl;
  37.                for (i=0;i<6;i++){
  38.                    for (j=0;j<6;j++){
  39.                        cout << a[i][j]<< " ";
  40.                        myfile3 <<  a[i][j] <<" ";
  41.                    }myfile3 << "\n ";cout <<endl;
  42.                }
  43.            myfile1 >>v[0] >>v[1]>>v[2] >>v[3]>>v[4] >>v[5];
  44.            }
  45.            myfile3.close();/**/
  46.        }
  47.        else cout << "\n Incapaz de crear o abrir el fichero \n";
  48.        myfile1.close();
  49.    }
  50.  else cout << "\n Incapaz de crear o abrir el fichero \n";
  51.  return 0;
  52. }
  53.  
  54.  
Saluditos!.
P.D: Es mi primer código con ficheros en C++. Supongo que la semana que viene, cuando me haya visto el tema con más calma, me parecerá horrible pero ........ hace lo que pedías. :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:
En línea

luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #9 en: 13 Enero 2013, 09:11 »

Hola Leo

el codigo funciona de Pm pero en cuanto le pongo mas numeros manualmente no me sale nada, tampoco logro que lea el archivo con los registros que me hace el otro codigo tengo la idea de que en el nombre de  "  myfile3 " tiene que ver en algo ?

saludos

luis

Código:
using namespace std;
 
int main () {
    int i,j,v[6]={0},a[6][6];
/***********  ESTO LO PUEDES QUITAR CREANDO EL FICHERO A MANO  ************/
   // fstream myfile ("luis.txt");
   // if (myfile.is_open()){
     //   myfile << "01 32 34 38 41 44\n";
      //  myfile << "03 06 19 32 47 49\n";
      //  myfile << "08 12 20 34 47 49\n";
      //  myfile << "09 13 22 38 45 49\n";<----------ya con esto no va ;)
      //  myfile.close();
   // }
   // else cout << "\n Incapaz de crear o abrir el fichero \n";
/**************************************************************************/
    string line;
    ifstream myfile1 ("luis.txt");
    if (myfile1.is_open()){
    ofstream myfile3 ("luis2.txt"); <---------------------------------myfile3--el nombre no influye ?
    if (myfile3.is_open()){
En línea

luis456

Desconectado Desconectado

Mensajes: 242


Ver Perfil
Re: Como hacer que tome registros este programa desde un txt y aplique la funcion
« Respuesta #10 en: 13 Enero 2013, 12:08 »

Ya funciona :)

el problema era que cuando creo por primera ves los archivos txt los nombro Luis_C.txt y luis2_c.txt ni idea, pero se me ocurrió quitar los "  _c " y funciona de maravilla hace los calculos con cualquier cantidad de registros.


gracias

Luis
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines