Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: gomezjuan en 14 Mayo 2020, 17:32 pm



Título: AYUDA FICHERO DE SALIDA C++
Publicado por: gomezjuan en 14 Mayo 2020, 17:32 pm
Tengo que crear un fichero llamado matriz.txt en el que se imprima una matriz de 7x7 formada por números con dos decimales. Llamo i al número de columnas y k al número de filas.
    -   La matriz tiene que cumplir las siguientes condiciones:
    -   La primera y ultima columna (i[0], i[6]) tienen que ser 0.00
    -   La primera fila k[0] (obviando las columnas i[0], i[6]) tiene que cumplir la ecuacion
         x(i,0)=pi * i
    -   La segunda fila k[1] (obviando las columnas i[0], i[6]) debe cumplir x(i,1) =
        2*x(i,0)+3x(i+1,0)
    -   Las demás filas deben cumplir x(i,k) = 2*x(i,k-2)+5*x(i+1,k-1)
Consigo imprimir la matriz por consola pero no soy capaz de crear el fichero:
Código:
#include <iostream>
#include <iomanip>
#include <fstream>

int main()
{
    const double pi = 3.14159;
    double matriz[7][7];

   
    for(unsigned k = 0; k<7 ; k++){
        matriz[k][0] = 0.00 ;
        matriz[k][6] = 0.00 ;
    }
   
    for(unsigned i = 0; i<6 ; i++){
        matriz[0][i] = pi*i;
        std::cout << matriz[0][i] << "\t" << std::endl;
    }
   
    for (int i = 1; i< 6 ; i++){
        matriz[1][i] = 2*matriz[0][i]+3*matriz[0][i+1];
    }
   
    for(int k = 2; k < 7; k++){
        for (int i =1; i < 6; i++){
            matriz[k][i] = 2  * matriz[k-2][i] + 5 * matriz[k-1][i+1];
        }
    }   
    std::cout << matriz << std::endl;

}


Título: Re: AYUDA FICHERO DE SALIDA C++
Publicado por: K-YreX en 14 Mayo 2020, 18:57 pm
Para guardar cualquier información en un archivo tienes que realizar los siguientes pasos:
  • Incluir los archivos de cabecera necesarios:
Código
  1. #include <iostream> // Para entrada y salida de datos: cout / cin
  2. #include <fstream> // Para flujos de entrada (ifstream) y salida (ofstream)
  3. #include <cstdlib> // Para la funcion exit() y la constante EXIT_FAILURE
  4.  
  5. using namespace std;

  • Abrir el flujo de salida:
Código
  1. string nombreFichero = "salida.txt";
  2. ofstream fichero(nombreFichero);
Puedes definir una ruta en el nombre del archivo si quieres que se cree en otra diferente a la actual.

  • Comprobar que se ha abierto correctamente:
Código
  1. if(!fichero){
  2.  cout << "Error al abrir el fichero: " << nombreFichero << endl;
  3.  exit(EXIT_FAILURE);
  4. }

  • Guardar los datos que quieras en el fichero:
Código
  1. for(size_t i = 0; i < filas; ++i){
  2.  for(size_t j = 0; j < columnas; ++j){
  3.    fichero << matriz[i][j] << "  ";
  4.  }
  5.  fichero << endl;
  6. }

  • Cerrar el flujo:
Código
  1. fichero.close();