-----------------------------------------------------------------------------------------------------------------------
Name: Anton Teremetskyi
SID: 068937093
E-mail: [mailto:ateremetskyi@learn.senecac.on.ca?subject=oop344-jsantos13 ateremetskyi@learn.senecac.on.ca]
Blog: [http://ateremetskyi.blogspot.com/ Anton's Blog]
Skype: Teremetskyi_Anton
IRC Nick: ateremetskyi
-----------------------------------------------------------------------------------------------------------------------
My Links:
[[Student List 20121 - OOP344 | Student List]]
[http://zenit.senecac.on.ca/wiki/index.php/OOP344 OOP344 Main Page]
[[Team .RU - OOP344 20121 | Team Page]]
-----------------------------------------------------------------------------------------------------------------------
'''Class notes :''' 09.02.2012
int(*fptr[3])(int, int){name1, name2, name3};
The better way to validate any attribute is to use functions .
ValidYear = getYear(Year); // Bool function
Check what do functions cin.clear()and others mean .
I like the way the teacher sends the output to the function
sendMsg("The number is", double number); // Something like that
bool validCCV(int ccv){
return ccv >= 100 && ccv <= 999;
} // Better example of the function above .
HomeWork - I have to understand how the program the teacher used works. I can find that program by the date in SVN. Then, I have to finish the assignment 1 (I did not send it yet, some errors appear).
The class on Monday is going to be in T2107 lab.
-----------------------------------------------------------------------------------------------------------------------
'''Class notes :''' 23.02.2012
1. Virtual functions 2. Frames 3. CField
-----------------------------------------------------------------------------------------------------------------------
Exception
#include <iostream>
using namespace std;
int main(void)
{
int x = 10;
try
{
while(x--)
{
if(x == 4) { throw x; }
cout << " pass" << x << endl ;
}
}
catch(int x)
{
cout << "got it >> " << x << " << " << endl;
}
return 0;
}
---
Pretty TXT stream ( WRITE )
FILE Datafile.txt
Hello, I am jack and I am
35
years old.
==
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ofstream fout("datafile.txt");
fout<<"Hello, I am jack and I am "<<endl<<35<<endl<<"years old.\n";
return 0;
}
---------------
int main(){
ifstream fin("datafile.txt");
char str[100];
fin>>str;
cout<<str<<endl; // Hello,
fin.getline(str, 99, '\n');
cout<<str<<endl; // I am jack and I am
str[0] = fin.get();
cout<<str[0]; // 3
cout<<"TheEnd"<<endl;
return 0;
}
---
Interesting Custom print statement
#include <cstdio>
using namespace std;
class Output{
public:
Output& print(const char* str){
printf(str);
return *this;
}
Output& print(int a){
printf("%d", a);
return *this;
}
};
int main(){
Output fout;
fout.print("Hello, I am jack and I am ").print(35).print(" years old.\n");
return 0;
}
OR
#include <cstdio>
using namespace std;
class Output{
public:
void print(const char* str){
printf(str);
}
void print(int a){
printf("%d", a);
}
};
int main(){
Output fout;
fout.print("Hello, I am jack and I am ");
fout.print(35);
fout.print(" years old\n");
return 0;
}
---
Read the written in the prev example file
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
class Employee{
char _name[15];
char _lastname[30];
int _empno;
double _salary;
public:
Employee(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
set(name, lastname, empno, salary);
}
void set(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
strcpy(_name, name);
strcpy(_lastname, lastname);
_empno = empno;
_salary = salary;
}
ostream& print(ostream& OS)const{
return OS<<"Name: "<<_name<<" "<<_lastname<<endl<<"EmpNo: "<<_empno
<<", Salary: "<<_salary;
}
virtual ~Employee(){
//print(cout)<<"is dead!!!!"<<endl;
}
};
ostream& operator<<(ostream& OS, const Employee& E){
return E.print(OS);
}
int main(){
Employee E;
fstream file("emp.bin",ios::in|ios::binary);
for(int i=0;i<5;i++){
file.read((char*)&E, sizeof(Employee));
cout<<E<<endl<<endl;
}
return 0;
}
OR
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
class Employee{
char _name[15];
char _lastname[30];
int _empno;
double _salary;
public:
Employee(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
set(name, lastname, empno, salary);
}
void set(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
strcpy(_name, name);
strcpy(_lastname, lastname);
_empno = empno;
_salary = salary;
}
ostream& print(ostream& OS)const{
return OS<<"Name: "<<_name<<" "<<_lastname<<endl<<"EmpNo: "<<_empno
<<", Salary: "<<_salary;
}
virtual ~Employee(){
//print(cout)<<"is dead!!!!"<<endl;
}
};
ostream& operator<<(ostream& OS, const Employee& E){
return E.print(OS);
}
int main(){
Employee E;
fstream file("emp.bin",ios::in|ios::binary);
file.seekg((ios::off_type)0, ios::end);
int loc = file.tellg();
while(loc > 0 ){
loc -= sizeof(Employee);
file.seekg((ios::pos_type)loc);
file.read((char*)&E, sizeof(Employee));
cout<<E<<endl;
}
return 0;
}
---
Write classes to the file
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
class Employee{
char _name[15];
char _lastname[30];
int _empno;
double _salary;
public:
Employee(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
set(name, lastname, empno, salary);
}
void set(const char* name="", const char* lastname="", int empno=0, double salary=0.0){
strcpy(_name, name);
strcpy(_lastname, lastname);
_empno = empno;
_salary = salary;
}
ostream& print(ostream& OS)const{
return OS<<"Name: "<<_name<<" "<<_lastname<<endl<<"EmpNo: "<<_empno
<<", Salary: "<<_salary;
}
virtual ~Employee(){
//print(cout)<<"is dead!!!!"<<endl;
}
};
ostream& operator<<(ostream& OS, const Employee& E){
return E.print(OS);
}
int main(){
Employee E[5]={
Employee("John", "Doe", 1234,12345.67),
Employee("Jack", "Brown", 22345,212345.67),
Employee("Bill", "Red", 3234,32345.67),
Employee("Louis", "Clark", 41234,42345.67),
Employee("Homer", "Simpson", 5234,52345.67)
};
fstream file("emp.bin",ios::out|ios::binary);
for(int i=0;i<5;i++){
file.write((const char*)&E[i], sizeof(Employee));
}
return 0;
}