Advertisement
Namaru

Primos de un archivo y almacenados en otro

Apr 21st, 2023 (edited)
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.20 KB | Source Code | 0 0
  1. #include<iostream>
  2. #include<functional>
  3. #include<conio.h>
  4. #include <string>
  5. #include <fstream>
  6.  
  7. using namespace std;
  8. bool verificarArchivo(string archivoNombre)
  9. {
  10.     fstream archivo;
  11.     archivo.open("..\\output\\"+archivoNombre, ios::out);
  12.     // ruta relativa del archivo para windows --
  13.     // ios::app verifica si existe ya el archivo sino lo crea ademas de escribir en el ultimo punto.
  14.     if (!archivo)
  15.     {
  16.         cout << "No se puede abrir el archivo";
  17.         exit(EXIT_FAILURE);
  18.         return false;
  19.     }        
  20.     archivo.flush();
  21.     archivo.close();
  22.     return true;
  23. }
  24.  
  25. void escribirArchivo(string archivoNombre, int num, bool verificar)
  26. {
  27.     if (verificar)
  28.     {
  29.         fstream archivo;
  30.         archivo.open("..\\output\\" + archivoNombre, ios::app);
  31.         // ruta relativa del archivo para windows --
  32.         /*ios::binary*/
  33.         // ios::app verifica si existe ya el archivo sino lo crea ademas de escribir en el ultimo punto.
  34.         if (!archivo)
  35.         {
  36.             cout << "No se puede abrir el archivo";
  37.             exit(EXIT_FAILURE);            
  38.         }
  39.         archivo.seekp(0,ios::end);    
  40.         if (archivo.tellg() == 0)
  41.         {            
  42.             // Para evitar un error al imprimir el archivo se comprueba si el archivo es nuevo si es asi escribe solo en la primera
  43.             // fila para generar el primer registro
  44.             archivo << num;
  45.         }
  46.         else
  47.         {
  48.             // de no serlo creala un salto de lina para otro registro
  49.             archivo << endl << num;
  50.         }
  51.         archivo.flush();
  52.         archivo.close();
  53.     }
  54. }
  55.  
  56.  
  57. bool esPrimo(int numero){
  58.     if (numero<2){
  59.         return false;
  60.     }
  61.     int contadorDiv = 0;
  62.     for(int i=numero; i>0; i--){
  63.         if (numero%i == 0){
  64.             contadorDiv += 1;
  65.         }
  66.     }
  67.     if (contadorDiv == 2){
  68.         return true;
  69.     }
  70.     else{
  71.         return false;
  72.  }
  73. }
  74.  
  75.  
  76. void llenarArchivoConPrimos (string archivoNombre, int numero){
  77.     bool verificar = verificarArchivo(archivoNombre);    
  78.     int posicion = 0;
  79.     for (int i= 1; i<=numero; i++){
  80.         if (esPrimo(i)){
  81.             escribirArchivo(archivoNombre, i, verificar);
  82.             posicion += 1;
  83.         }
  84.     }
  85. }
  86.  
  87. int leerArchivo(string archivoNombre)
  88. {
  89.         string linea;
  90.         ifstream archivo;
  91.         string lectura;
  92.         archivo.open("..\\output\\"+ archivoNombre);
  93.         if (!archivo)
  94.         {
  95.             cout << "No se puede abrir el archivo";
  96.             exit(EXIT_FAILURE);
  97.         }
  98.         int i = 0;
  99.         while (!archivo.eof())
  100.         //eof funcion de la clase sftream que detecta el final de un fichero
  101.         {            
  102.             getline(archivo >> ws, linea);
  103.             cout << linea << endl;            
  104.         }          
  105.     return stoi(linea);
  106. }
  107.  
  108. int main(){
  109.     string archivo;  
  110.     int numero  = 20;
  111.     archivo = "Entrada.txt";    
  112.     bool verificar = verificarArchivo(archivo);
  113.     escribirArchivo(archivo, numero, verificar);
  114.     cout<< "Factores Primos de: ";
  115.     numero = leerArchivo(archivo);
  116.    
  117.     archivo = "Salidad.txt";
  118.     llenarArchivoConPrimos(archivo,numero);
  119.     leerArchivo(archivo);
  120. }
  121.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement