This program compiles but it's not searching properly.
[COLOR="Red"]Circle.h[/COLOR]
[code=c++]
#ifndef CIRCLE_H
#define CIRCLE_H
#include <iostream>
#include <fstream>
using namespace std;
class Circle
{
friend ostream& operator <<(ostream& output, const Circle& aCircle);
friend istream& operator >>(istream& input, Circle& aCircle);
public:
Circle();
Circle(double radius, int id);
Circle(const Circle& aCircle);
void SetCircleRadius (double radius) { _circleRadius = radius; }
void SetCircleId(int id) { _circleId = id; }
double GetCircleRadius () const { return _circleRadius; }
int GetCircleId() const { return _circleId; }
private:
double _circleRadius;
int _circleId;
};
#endif
[/code]
[COLOR="Red"]Circle.cpp[/COLOR]
[code=c++]
#include "Circle.h"
Circle::Circle( )
{
_circleId = 0;
_circleRadius = 0.0;
}
Circle::Circle( double radius, int id)
{
_circleId = id;
_circleRadius = radius;
}
Circle::Circle( const Circle& aCircle)
{
_circleId = aCircle._circle Id;
_circleRadius = aCircle._circle Radius;
}
ostream& operator <<(ostream& output, const Circle& aCircle)
{
output << "\n ------------" << endl;
output << " Id radius" << endl;
output << " ------------" << endl;
output << " " << aCircle._circle Id << " " << aCircle._circle Radius << endl;
output << " ------------" << "\n\n";
return (output);
}
istream& operator >>(istream& input, Circle& aCircle)
{
int quantity;
cout << "\nHow many circles do you want to add ";
input >> quantity;
for (int i = 0; i < quantity; ++i)
{
cout << "\n\nEnter the ID of Circle #" << (i + 1) << " : ";
input >> aCircle._circle Id;
cout << "Enter Radius of Circle #" << (i + 1) << " : ";
input >> aCircle._circle Radius;
cout << endl;
}
return (input);
}
[/code]
[COLOR="Red"]main.cpp[/COLOR]
[code=c++]
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
#include "Circle.h"
int main ()
{
Circle aCircle;
fstream file;
int option;
do
{
cout << "Menu \n"
<< " (1) Add Circle(s) \n"
<< " (2) Find a Circle by ID \n"
<< " (3) Exit \n"
<< "Your Selection -> ";
cin >> option;
switch (option)
{
case 1:
file.close();
file.clear();
file.open("Circ le.dat", ios::out | ios::app | ios::binary);
if (!file)
{
cerr << "\n\nFailed to open file.\n\n";
system("PAUSE") ;
exit(1);
}
else
{
cin >> aCircle;
file.write(rein terpret_cast<ch ar*> (&aCircle), sizeof(Circle)) ;
}
break;
case 2:
file.close();
file.clear();
cout << "Enter id: ";
int id;
cin >> id;
aCircle.SetCirc leId(id);
file.open("Circ le.dat", ios::in | ios::app | ios::binary);
if (!file)
{
cerr << "\n\nFailed to open file.\n\n";
system("PAUSE") ;
exit(1);
}
else
{
file.seekg(id * sizeof(Circle), ios::beg);
file.read(reint erpret_cast<cha r *> (&aCircle), sizeof(Circle)) ;
cout << aCircle;
}
break;
case 3:
file.close();
cout << "\n\nG o o D B y E\n\n";
exit(0);
break;
default:
cerr << "\nERROR: Wrong Option menu. Please try again.\n\n";
}
} while (option != 3);
return EXIT_SUCCESS;
}
[/code]
[COLOR="Red"]Circle.h[/COLOR]
[code=c++]
#ifndef CIRCLE_H
#define CIRCLE_H
#include <iostream>
#include <fstream>
using namespace std;
class Circle
{
friend ostream& operator <<(ostream& output, const Circle& aCircle);
friend istream& operator >>(istream& input, Circle& aCircle);
public:
Circle();
Circle(double radius, int id);
Circle(const Circle& aCircle);
void SetCircleRadius (double radius) { _circleRadius = radius; }
void SetCircleId(int id) { _circleId = id; }
double GetCircleRadius () const { return _circleRadius; }
int GetCircleId() const { return _circleId; }
private:
double _circleRadius;
int _circleId;
};
#endif
[/code]
[COLOR="Red"]Circle.cpp[/COLOR]
[code=c++]
#include "Circle.h"
Circle::Circle( )
{
_circleId = 0;
_circleRadius = 0.0;
}
Circle::Circle( double radius, int id)
{
_circleId = id;
_circleRadius = radius;
}
Circle::Circle( const Circle& aCircle)
{
_circleId = aCircle._circle Id;
_circleRadius = aCircle._circle Radius;
}
ostream& operator <<(ostream& output, const Circle& aCircle)
{
output << "\n ------------" << endl;
output << " Id radius" << endl;
output << " ------------" << endl;
output << " " << aCircle._circle Id << " " << aCircle._circle Radius << endl;
output << " ------------" << "\n\n";
return (output);
}
istream& operator >>(istream& input, Circle& aCircle)
{
int quantity;
cout << "\nHow many circles do you want to add ";
input >> quantity;
for (int i = 0; i < quantity; ++i)
{
cout << "\n\nEnter the ID of Circle #" << (i + 1) << " : ";
input >> aCircle._circle Id;
cout << "Enter Radius of Circle #" << (i + 1) << " : ";
input >> aCircle._circle Radius;
cout << endl;
}
return (input);
}
[/code]
[COLOR="Red"]main.cpp[/COLOR]
[code=c++]
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
#include "Circle.h"
int main ()
{
Circle aCircle;
fstream file;
int option;
do
{
cout << "Menu \n"
<< " (1) Add Circle(s) \n"
<< " (2) Find a Circle by ID \n"
<< " (3) Exit \n"
<< "Your Selection -> ";
cin >> option;
switch (option)
{
case 1:
file.close();
file.clear();
file.open("Circ le.dat", ios::out | ios::app | ios::binary);
if (!file)
{
cerr << "\n\nFailed to open file.\n\n";
system("PAUSE") ;
exit(1);
}
else
{
cin >> aCircle;
file.write(rein terpret_cast<ch ar*> (&aCircle), sizeof(Circle)) ;
}
break;
case 2:
file.close();
file.clear();
cout << "Enter id: ";
int id;
cin >> id;
aCircle.SetCirc leId(id);
file.open("Circ le.dat", ios::in | ios::app | ios::binary);
if (!file)
{
cerr << "\n\nFailed to open file.\n\n";
system("PAUSE") ;
exit(1);
}
else
{
file.seekg(id * sizeof(Circle), ios::beg);
file.read(reint erpret_cast<cha r *> (&aCircle), sizeof(Circle)) ;
cout << aCircle;
}
break;
case 3:
file.close();
cout << "\n\nG o o D B y E\n\n";
exit(0);
break;
default:
cerr << "\nERROR: Wrong Option menu. Please try again.\n\n";
}
} while (option != 3);
return EXIT_SUCCESS;
}
[/code]
Comment