plik list.txt
plik person.h
Kod: Zaznacz cały
#ifndef person_H
#define person_H
#include "stdafx.h"
#include <string>
using namespace std;
class personType
{
public:
string getLastName() const;
string getFirstName()const;
void setLastName(string lName);
void setFirstName(string fName);
void extractLastName(ifstream& inData);
void extractFirstName(ifstream& inData);
personType(string fName = "UNKNOWN" , string lName = "UNKNOWN");
private:
string firstName;
string lastName;
};
#endif
Kod: Zaznacz cały
#include "stdafx.h"
#include <iostream>
#include <string>
#include "person.h"
#include <fstream>
using namespace std;
personType::personType(string fName , string lName)
{
setFirstName(fName);
setLastName(lName);
}
string personType::getLastName() const
{
return lastName;
}
string personType::getFirstName() const
{
return firstName;
}
void personType::setLastName(string lName)
{
lastName = lName;
}
void personType::setFirstName(string fName)
{
firstName = fName;
}
void personType::extractFirstName(ifstream& inData)
{
inData>>firstName;
}
void personType::extractLastName(ifstream& inData)
{
inData>>lastName;
}
Kod: Zaznacz cały
student.h
#ifndef student_H
#define student_H
#include "person.h"
class studentType : public personType
{
public:
int getAlphabeticalNum() const;
int getID() const;
int getPoints() const;
void printAll() const;
void setAlphabeticalNum( int aNum);
void setID( int IDnum);
void setPoints( int pts);
void extractAlphabeticalNum(ifstream& inData);
void extractID(ifstream& inData);
void extractPoints(istream& inData);
void extractAll(ifstream& inData);
studentType(string fName= "UNKNOWN", string lName="UNKNOWN", int aNum = 0 , int IDnum = 0 , int pts = 0);
private:
int alphabeticalNum;
int ID;
int points;
};
#endif
Kod: Zaznacz cały
#include "stdafx.h"
#include <string>
#include <iostream>
#include "student.h"
#include <fstream>
using namespace std;
int studentType::getAlphabeticalNum() const
{
return alphabeticalNum;
}
int studentType::getID() const
{
return ID;
}
int studentType::getPoints() const
{
return points;
}
void studentType::setAlphabeticalNum(int num)
{
alphabeticalNum = num;
}
void studentType::setID( int IDnum)
{
ID = IDnum;
}
void studentType::setPoints( int pts)
{
points = pts;
}
studentType::studentType(string fName, string lName, int aNum , int IDnum , int pts) : personType(fName, lName)
{
alphabeticalNum= aNum;
ID = IDnum;
points = pts;
}
void studentType::extractAlphabeticalNum(ifstream& inData)
{
inData >> alphabeticalNum;
}
void studentType::extractID(ifstream& inData)
{
inData >> ID;
}
void studentType::extractPoints(istream& inData)
{
inData >> points;
}
void studentType::extractAll(ifstream& inData)
{
extractAlphabeticalNum(inData);
extractID(inData);
personType::extractFirstName(inData);
personType::extractLastName(inData);
extractPoints(inData);
}
void studentType::printAll() const
{
cout<<getAlphabeticalNum()<<" "<<getID()<<" "<<personType::getFirstName()<<" "<<personType::getLastName()<<" "<<getPoints();
}
Kod: Zaznacz cały
// sorting_list.cpp : main project file.
#include "stdafx.h"
#include <string>
#include <iostream>
#include <fstream>
#include "student.h"
using namespace std;
const int NUMBER_OF_RECRUITS = 364;
void readSortByPointsAndPrint(ifstream& inData);
int main()
{
ifstream inFile;
ofstream outFile;
cout<<"Program sorts student's list from the alphabetical form to the score form \n";
inFile.open("list.txt");
readSortByPointsAndPrint(inFile);
inFile.close();
cout<<endl;
system("PAUSE");
return 0;
}
void readSortByPointsAndPrint(ifstream& inData)
{
studentType recruit[NUMBER_OF_RECRUITS];
int firstOutOfOrder,location;
studentType temp;
for (int i=0; i<NUMBER_OF_RECRUITS ; i++)
recruit[i].extractAll(inData);
for(firstOutOfOrder=0; firstOutOfOrder<NUMBER_OF_RECRUITS ; firstOutOfOrder++)
{
if(recruit[firstOutOfOrder].getPoints() < recruit[firstOutOfOrder-1].getPoints())
{
temp=recruit[firstOutOfOrder];
location = firstOutOfOrder;
do
{
recruit[location] = recruit[location - 1];
location--;
}
while (location > 0 && recruit[location - 1].getPoints() > temp.getPoints());
recruit[location] = temp;
}
}
for(int i =0; i<NUMBER_OF_RECRUITS ; i++)
recruit[i].printAll();
}
O co chodzi? Nie znalazłem żadnej tablicy wychodzącej poza przydzielony jej obszar.An unhandled exception of type 'System.AccessViolationException' occurred in sorting_list.exe
Additional information: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.