aboutsummaryrefslogtreecommitdiffstats
path: root/ee1301/wk7/hw7_directory/HouseDB.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ee1301/wk7/hw7_directory/HouseDB.cpp')
-rw-r--r--ee1301/wk7/hw7_directory/HouseDB.cpp58
1 files changed, 46 insertions, 12 deletions
diff --git a/ee1301/wk7/hw7_directory/HouseDB.cpp b/ee1301/wk7/hw7_directory/HouseDB.cpp
index b09aff4..3eb0d73 100644
--- a/ee1301/wk7/hw7_directory/HouseDB.cpp
+++ b/ee1301/wk7/hw7_directory/HouseDB.cpp
@@ -23,7 +23,8 @@ void ProcHeader(ifstream &file);
houseData* ReadRecord(ifstream &file);
houseData* Scanlist(houseData* head, int Zipcode);
void DelRecord(houseData *record);
-
+void bsort(int list[], int length);
+void swap (int &a, int &b);
void printAllHousesByZip(houseData* head);
int main(int argc, char* argv[]) {
@@ -62,9 +63,11 @@ int main(int argc, char* argv[]) {
}
}
}
- int zipSort[1000]; bool newZip=true; int currentUnique=0;
- for (int i=0; i<999; i++) {zipSort[i]=0;}
+
+
houseData* currentZipFind = head;
+ int zipSort[1000]; bool newZip=true; int currentUnique=0;
+ for (int i=0; i<999; i++) {zipSort[i]=0;}
while(currentZipFind!=nullptr) {
for (int i=0; i<999; i++) {
//Find a new zipcode to average
@@ -77,19 +80,32 @@ int main(int argc, char* argv[]) {
}
if ( (newZip) ) {
zipSort[currentUnique]=currentZipFind->zipcode;
- cout << zipSort[currentUnique] << endl;
+ //cout << zipSort[currentUnique] << endl;
currentUnique++;
}
currentZipFind = currentZipFind->nextZip;
}
- houseData* currentAvgFind = head;
- currentUnique=0; int totalCost=0, houseNumber=0;
- while (currentAvgFind!=NULL) {
- totalCost+=currentAvgFind->price;
- houseNumber++;
- currentAvgFind=Scanlist(currentAvgFind, currentAvgFind->zipcode);
- cout << currentAvgFind;
- }
+ bsort(zipSort, 1000);
+
+ houseData* findAvg = head;
+ int costPerZip[1000]={0}, totalPerZip[1000]={0};
+ //Set all of the values to zero
+ for (int i=0; i<999; i++) {costPerZip[i]=0; totalPerZip[i]=0;}
+ while (findAvg!=NULL) {
+ for(int j=0; j<999; j++) {
+ if (zipSort[j]=findAvg->zipcode) {
+ costPerZip[j]+=findAvg->price;
+ totalPerZip[j]++;
+ break; //Break for loop
+ }
+ } //end for
+ findAvg=findAvg->nextZip;
+ } //end while
+ for (int k=0; k<999; k++) {
+ if (zipSort[k]!=0) {
+ cout << zipSort[k] << ":average price=" << totalPerZip[k] << endl;
+ }
+ }
//printAllHousesByZip(head);
@@ -121,6 +137,24 @@ void ProcHeader(ifstream &file) {
}
}
+//This function is the algorithm.
+void bsort(int list[], int length) {
+ for (int i=0; i<length; i++) {
+ for (int j=0; j<length-1; j++) {
+ if (list[j]>list[j+1]) {
+ //This is so the bubble can happen
+ swap(list[j], list[j+1]);
+ }
+ }
+ }
+}
+
+//This function simply swaps two values so the bubbling can commence
+void swap (int &a, int &b) {
+ int temp;
+ temp=a; a=b; b=temp;
+}
+
houseData* ReadRecord(ifstream &file) {
int b = 0;
int endOfHeader = 0;