Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema concatenación

Estas en el tema de Problema concatenación en el foro de C/C++ en Foros del Web. Hola, tengo un problema, tengo el codigo para hacer busquedas y funciona bien con un archivo dado dandome el tiempo pero ahora necesito es mandar ...
  #1 (permalink)  
Antiguo 20/04/2010, 10:59
 
Fecha de Ingreso: febrero-2005
Mensajes: 17
Antigüedad: 19 años, 3 meses
Puntos: 0
Problema concatenación

Hola, tengo un problema, tengo el codigo para hacer busquedas y funciona bien con un archivo dado dandome el tiempo pero ahora necesito es mandar a llamar 30 archivos de un tamaño de arreglo dado y que me de los tiempos de busqueda de los 30.

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;
	
	
}

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:11.