I need help please

runs only the first part.



#include<iostream>
#include<fstream>
#include<time.h>
#include<conio.h>
#include<stdlib.h>
#define T (char*)

void almacenar(ofstream & f1)
{
int i,na,n,m,sd;
srand(time(0));
f1.open("aleatorio.dat",ios::binary);
cout<<"cuantos numeros desea almacenar :";cin>>n;
for(i=1;i<=n;i++)
{
n=1000+rand()%(9999+1-1000);
m=n;
for(sd=0;m>0;m/10)
sd=sd+m%10;
f1.write(T(&n),sizeof(n));
f1.write(T(&sd),sizeof(sd));

}

}


void reporte (ifstream & f2)
{
int n, m ;
f2.open("aleatorio.dat",ios::binary);
f2.read(T(&n),sizeof(n));
for(;f2.peek()!=EOF;)
{
f2.read(T(&m),sizeof(m));
cout<<n<<"\t"<<m<<endl;
f2.read(T(&n),sizeof(n));
}
f2.close();
}
void buscar(ifstream &f2)
{
int a, nr,n , m ,tbytes,tam;
f2.open("aleatorio.dat",ios::binary);
f2.seekg(0,ios::end);
tbytes=f2.tellg();
tam=sizeof(n)+ sizeof(m);
nr=tbytes/tam;
cout<<"el tamaño del archivo es :"<<tbytes<<endl;
cout<<"el tamaño del registro es :"<<tam<<endl;
cout<<endl<<"el archivo tiene "<<nr<<" registros"<<endl;
cout<<endl<<"registro a busacar ";cin>>a;
if(a>0 && a<=nr)
{
f2.seekg((n-1)*tam,ios::beg);
f2.read(T(&n),sizeof(n));
f2.read(T(&m),sizeof(m));
cout<<"\t"<<n<<"\t"<<m<<endl;


}
else
cout<<"registro no existe "<<endl;

}
int main()
{
ofstream a1;
ifstream a2;
almacenar(a1);
reporte(a2);
buscar(a2);
getche();
}
There are a lot of things wrong with this code. A major one is that the variable 'n' in buscar() is not initialised.
Topic archived. No new replies allowed.