adding cs142 code
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#include <algorithm>
|
||||
|
||||
#include "sm_array.h"
|
||||
|
||||
garray::garray(): size(0) {};
|
||||
|
||||
bool garray::add(string name) {
|
||||
if(name == "") {
|
||||
throw string("cannot add empty string");
|
||||
}
|
||||
if((not contains(name)) and size < MAX_DATA_SIZE) {
|
||||
data[size] = name;
|
||||
size++;
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool garray::contains(string name) {
|
||||
for(int i = 0; i < size; i++) {
|
||||
if(name == data[i])
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool garray::remove(string name) {
|
||||
bool reduce = false;
|
||||
if(contains(name)) {
|
||||
reduce = true;
|
||||
}
|
||||
else {
|
||||
return reduce;
|
||||
}
|
||||
garray tmp;
|
||||
for(int i = 0; i < size; i++) {
|
||||
if(data[i] != name) {
|
||||
tmp.add(data[i]);
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < MAX_DATA_SIZE; i++) {
|
||||
data[i] = tmp.data[i];
|
||||
}
|
||||
if(reduce)
|
||||
size--;
|
||||
return reduce;
|
||||
}
|
||||
|
||||
void garray::randomize() {
|
||||
random_shuffle(&data[0], &data[size]);
|
||||
}
|
||||
|
||||
ostream & operator<<(ostream & os, garray & g) {
|
||||
os << "[";
|
||||
for(int i = 0; i < g.size; i++) {
|
||||
os << i << "-" << g.data[i];
|
||||
if (i != g.size - 1) {
|
||||
os << ", ";
|
||||
}
|
||||
}
|
||||
os << "]";
|
||||
return os;
|
||||
}
|
||||
Reference in New Issue
Block a user