Le puedo poner al archivo el nombre que sea, de hecho con el fopen nisiquiera necesito ponerle la extensión txt.
Lo que se me había ocurrido es hacer una concatenación haciendo que un numero se incrementara, tener una cadena de texto y segun sea el tamaño del vector dejando otro fijo para introducirlo manualmente pero no lo puedo hacer espero que me puedan ayudar.
pensé algo así: 1ordenado100 a 30ordenado100
Donde:
1 sería el número a incrementar hasta 30
ordenado es una cadena de texto para separar los números
100 sería el numero del arreglo, ya que voy a tener 30 archivos de 100, 30 de 500, 30 de 1000 y demás
entonces estaría leyendo
1ordenado100
2ordenado100
...
30ordenado100
Espero que me puedan ayudar a resolver mi problema. Gracias!
Borré algunos casos por cuestiones de espacio pero no eran necesarios para ahora
Código:
#include <iostream> #include <fstream> #include <time.h> using namespace std; int a,i,j,n,num,temp; #define _CRT_SECURE_NO_WARNINGS class tiempo{ int h; int m; int s; int ms; float hey; public: tiempo(); void lee_sistema(); float dahora(){return hey;} float daseghora(){return m;} }; tiempo::tiempo() { h=0;m=0;s=0,hey=0; } void tiempo::lee_sistema() { struct tm *newtime; __time64_t long_time; _time64(&long_time); hey = (long(long_time)*1000000); newtime=_localtime64(&long_time); h=newtime->tm_hour; m=newtime->tm_min; s=newtime->tm_sec; //ms=newtime->tm_msec; } void escribe_archivo(int tam, int n) { FILE *p; long i; if (n==1){ p = fopen("Busqueda_Binaria.txt", "w");} if (n==2){ p = fopen("Busqueda_Secuencial.txt", "w");} for (i=0; i<tam; i++) { fprintf (p, "%d \n" , i); } fclose(p); } void lee_archivo(int tam,long num[], int n) { FILE *p; int i; int k; for(k=1;k<=3;k++) { if (n==1){ p = fopen("Busquedabinaria", "r");} if (n==2){ p = fopen("Busqueda_Secuencial.txt", "r");} for (i=0; i < tam; i++) { fscanf(p, "%d", &num[i]); } fclose(p); } } int busBinaria (long a[], int n, int clave) { int central, bajo, alto; int valorCentral; bajo = 0; alto = n-1; while (bajo <= alto) { central = (bajo + alto)/2; valorCentral = a[central]; if (clave == valorCentral) return central; else if (clave < valorCentral) alto = central -1; else bajo = central + 1; } return -1; } int busSecuencial(long a[], int n, int clave) { int i; for(i=0; i<=n; i++) { if(clave == a[i]) { return i; } } return -1; } int menu() { int op; do{system("cls"); cout<<" 1 Busqueda Binaria"<<endl; cout<<" 2 Busqueda Secuencial"<<endl; cout<<" <<endl; cout<<" 4 Salir"<<endl; cout<<"Teclea el numero de la opcion que deseas: "<<endl; cin>>op; }while(op<0 || op>4); return op; } int menu2(){ int op1; do{system("cls"); cout<<"Elige el tamaño del arreglo: "<<endl; cout<<"1.- 100,000"<<endl; cout<<"2.- 500"<<endl; cout<<" "<<endl; cout<<" "<<endl; cin>>op1; }while(op1<0 || op1>4); return op1; } int main() { int x,y,op,op1; long num [100000]; float final=0; tiempo t; tiempo t1; long i,j; do{ op=menu(); switch(op){ case 1: do{ op1=menu2(); switch(op1){ case 1: escribe_archivo(100000,1); lee_archivo(100000,num,1); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = busBinaria(num,100000,x); t1.lee_sistema(); final=float(t1.dahora())-float(t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; if(y == -1) { cout<<"______________________________________________"<<endl; cout<<"\n Elemento no encontrado. "; } else { cout<<"______________________________________________"<<endl; printf("\n Elemento localizado en la posicion: [%d].", y); } system("pause"); break; case 2: escribe_archivo(500,1); lee_archivo(500,num,1); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = busBinaria(num,500,x); t1.lee_sistema(); final=float(t1.dahora())-float(t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; if(y == -1) { cout<<"______________________________________________"<<endl; cout<<"\n Elemento no encontrado. "; } else { cout<<"______________________________________________"<<endl; printf("\n Elemento localizado en la posicion: [%d].", y); } system("pause"); break; case 3: case 4: escribe_archivo(50000,1); lee_archivo(50000,num,1); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); j=t.dahora(); y = busBinaria(num,50000,x); t1.lee_sistema(); i=t1.dahora(); final=i-j; cout<<"Tiempo: "<<final<<" seg"<<endl; if(y == -1) { cout<<"______________________________________________"<<endl; cout<<"\n Elemento no encontrado. "; } else { cout<<"______________________________________________"<<endl; printf("\n Elemento localizado en la posicion: [%d].", y); } system("pause"); break;} }while(op1<0 || op1>4); return 0; break; case 2: do{ op1=menu2(); switch(op1){ case 1: escribe_archivo(100000,2); lee_archivo(100000,num,2); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = busSecuencial(num,100000,x); t1.lee_sistema(); final+=float(t1.dahora()-t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; if(y == -1) { cout<<"______________________________________________"<<endl; cout<<"\n Elemento no encontrado. "; } else { cout<<"______________________________________________"<<endl; printf("\n Elemento localizado en la posicion: [%d].", y); } system("pause"); break; case 2: escribe_archivo(500,2); lee_archivo(500,num,2); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = busSecuencial(num,500,x); t1.lee_sistema(); final+=float(t1.dahora()-t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; if(y == -1) { cout<<"______________________________________________"<<endl; cout<<"\n Elemento no encontrado. "; } else { cout<<"______________________________________________"<<endl; printf("\n Elemento localizado en la posicion: [%d].", y); } system("pause"); break; case 3: case 4: break;} }while(op1<0 || op1>4); return 0; break; case 3: do{ op1=menu2(); switch(op1){ case 1: escribe_archivo(100000,3); lee_archivo(100000,num,3); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = BusquedaInterpolacion(num,100000,x); t1.lee_sistema(); final+=int(t1.dahora()-t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; system("pause"); break; case 2: escribe_archivo(500,3); lee_archivo(500,num,3); cout<<"\n Introduce el elemento a buscar: "; cin>>x; t.lee_sistema(); y = BusquedaInterpolacion(num,500,x); t1.lee_sistema(); final+=int(t1.dahora()-t.dahora()); cout<<"Tiempo: "<<final<<" seg"<<endl; system("pause"); break; case 3: break; case 4: break;} }while(op1<0 || op1>4); return 0; } break; } while(op!=4); return 0; }