aboutsummaryrefslogtreecommitdiffstats
path: root/C++/Test1.cpp
blob: a3ef13c6618ef8c239b699efba649b181c9e0399 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

struct item {
	string name;
	int num;

	void print_str() {
		cout << name << ": " << num << endl;
	}
};

void merge_items(const vector<item> &vec1, vector<item> &vec2, vector<item> &vec_final) {
	// bool running = false;
	// for(int i = 0; i < vec1.size(); i++) {
	// 	if(vec1[i].name == vec2[i].name) {
	// 		vec2[i].num += vec1[i].num;
	// 		vec_final.push_back(vec2[i]);
	// 	} else if(vec1[i].name < vec2[i].name) {
	// 		vec_final.push_back(vec1[i]);
	// 		vec_final.push_back(vec2[i]);
	// 	} else {
	// 		vec_final.push_back(vec2[i]);
	// 		vec_final.push_back(vec1[i]);
	// 	}
	// }
	int count1, count2;
	count1 = 0; 
	count2 = 0;
	do {
		if(count1 < vec1.size()) {
			if(vec1[count1].name == vec2[count2].name) {
				vec2[count2].num += vec1[count1].num;
				vec_final.push_back(vec2[count2]);
				count1++;
				count2++;
			} else if(vec1[count1].name < vec2[count2].name) {
				vec_final.push_back(vec1[count1]);
				count1++;
			} else if(vec1[count1].name > vec2[count2].name) {
				vec_final.push_back(vec2[count2]);
				count2++;
			}
		} else {
			vec_final.push_back(vec2[count2]);
			count2++;
		}
	} while (vec_final.size() < vec1.size() + vec2.size());
	for(int i = vec1.size(); i < vec2.size(); i++) {
		vec_final.push_back(vec2[i]);
	}	
}

int main() {
	string ware1, ware2;
	ifstream fileware1, fileware2;
	vector<item> vecware1, vecware2, vecfinal;
	item tmpitem;

	ware1 = "Warehouse1.txt";
	ware2 = "Warehouse2.txt";

	fileware1.open(ware1);
	fileware2.open(ware2);

	if(!fileware1.is_open()) {
		cout << "couldn't open fileware1: '" << ware1 << "'" << endl;
	}
	if(!fileware2.is_open()) {
		cout << "couldn't open fileware2: '" << ware2 << "'" << endl;
	}

	while(fileware1 >> tmpitem.name >> tmpitem.num) {
		vecware1.push_back(tmpitem);
	}
	while(fileware2 >> tmpitem.name >> tmpitem.num) {
		vecware2.push_back(tmpitem);
	}

	merge_items(vecware2, vecware1, vecfinal);
	for(int i = 0; i < vecfinal.size(); i++) {
		cout << vecfinal[i].name << ": " << vecfinal[i].num << endl;
	}

	fileware1.close();
	fileware2.close();
	return(0);
}