Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

#include <iostream> #include <memory> #include <string> #include <map> #include

ID: 3547476 • Letter: #

Question

#include <iostream>

#include <memory>

#include <string>

#include <map>

#include <vector>

#include <queue>

#include <sstream>


using namespace std;


// --------------------------------------------------------------------

class ConnectingCity {

public:


string name;

int distance;

ConnectingCity(string,int);

};


ConnectingCity::ConnectingCity(string a, int b){

name = a;

distance = b;

}


// --------------------------------------------------------------------


// class State{

// public:

// string city;

// string path;

// int distance;


// State(string,string,int);

// State();

// };


// State::State(string c, string p, int d){

// TODO

// }


// --------------------------------------------------------------------


class Map {

map<string, vector<ConnectingCity> > connections;

public:

Map();

vector<ConnectingCity> connectsTo(string);

};



Map::Map(){

// constructing this by hand

connections["Arad"] = vector<ConnectingCity>{ConnectingCity("Zerind", 75), ConnectingCity("Sibiu", 140), ConnectingCity("Timisoara", 118)};

connections["Bucharest"] = vector<ConnectingCity>{ConnectingCity("Urziceni", 85), ConnectingCity("Giurgiu", 90), ConnectingCity("Pitesti", 101), ConnectingCity("Fagaras", 211) };

connections["Craiova"] = vector<ConnectingCity>{ConnectingCity("Pitesti", 138), ConnectingCity("Drobeta", 120), ConnectingCity("Rimnicu Vilcea", 146)};

connections["Drobeta"] = vector<ConnectingCity>{ConnectingCity("Mehadia", 75), ConnectingCity("Craiova", 120)};

connections["Eforie"] = vector<ConnectingCity>{ConnectingCity("Hirsova", 86)};

connections["Fagaras"] = vector<ConnectingCity>{ConnectingCity("Bucharest", 211), ConnectingCity("Sibiu", 99)};

connections["Giurgiu"] = vector<ConnectingCity>{ConnectingCity("Bucharest", 90)};

connections["Hirsova"] = vector<ConnectingCity>{ConnectingCity("Eforie", 86), ConnectingCity("Urziceni", 98)};

connections["Iasi"] = vector<ConnectingCity>{ConnectingCity("Vaslui", 92), ConnectingCity("Neamt", 87)};

connections["Lugoj"] = vector<ConnectingCity>{ConnectingCity("Mehadia", 70), ConnectingCity("Timisoara", 111)};

connections["Mehadia"] = vector<ConnectingCity>{ConnectingCity("Lugoj", 70), ConnectingCity("Drobeta", 75)};

connections["Neamt"] = vector<ConnectingCity>{ConnectingCity("Isai", 87)};

connections["Oradea"] = vector<ConnectingCity>{ConnectingCity("Sibiu", 151), ConnectingCity("Zerind", 71)};

connections["Pitesti"] = vector<ConnectingCity>{ConnectingCity("Bucharest", 101), ConnectingCity("Craiova", 138), ConnectingCity("Rimnicu Vilcea", 97)};

connections["Rimicu Vilcea"] = vector<ConnectingCity>{ConnectingCity("Pitesti", 97), ConnectingCity("Craiova", 146), ConnectingCity("Sibiu", 80)};

connections["Sibiu"] = vector<ConnectingCity>{ConnectingCity("Fagaras", 99), ConnectingCity("Arad", 140), ConnectingCity("Rimnicu Vilcea", 80), ConnectingCity("Oradea", 151)};

connections["Timisoara"] = vector<ConnectingCity>{ConnectingCity("Arad", 118), ConnectingCity("Lugoj", 111)};

connections["Urziceni"] = vector<ConnectingCity>{ConnectingCity("Vaslui", 142), ConnectingCity("Hirsova", 98), ConnectingCity("Bucharest", 83)};

connections["Vaslui"] = vector<ConnectingCity>{ConnectingCity("Isai", 92), ConnectingCity("Urziceni", 142)};

}


vector<ConnectingCity> Map::connectsTo(string theCity){

return connections[theCity];

}

// --------------------------------------------------------------------


//-------------------------------------

//

// F I N D R O U T E

//

// need to implement

//

//-------------------------------------


//string findRoute(string startCity, string goalCity, Map theMap){

//

// create a queue

// create a start state and put it on the queue

// while the queue is not empty

// pop a state off the queue & call it current state

// if current state equals goal state

// return a string containing the path and the distance

// else

// for every city you can get to from the current city

// construct a state representing that city

// put that state on the queue

// DONE

//}


void test(Map theMap){

// show how iterators work

vector<ConnectingCity> c = theMap.connectsTo("Sibiu");

for (auto it = c.begin(); it != c.end(); ++it){

cout << it->name << endl;

}

//

//

//

// how queues work

//


cout << " QUEUE EXAMPLE ";


queue<string> myQueue;

myQueue.push("Sibiu");

myQueue.push("Arad");

myQueue.push("Budapest");

myQueue.push("Lugoj");


while(!myQueue.empty()){

cout << myQueue.front() << endl;

myQueue.pop();

}


}


int main(){

Map map = Map();

test(map);

//cout << findRoute("Arad", "Arad", map) << endl;

//cout << findRoute("Arad", "Zerind", map) << endl;

//cout << findRoute("Arad", "Bucharest", map) << endl;


}

Explanation / Answer

/* * CVE-2012-2122 checker * * You may get differing results with/without -m32 * * Joshua J. Drake */ #include #include int main(void) { int one, two, ret; time_t start = time(0); time_t now; srand(getpid()*start); while (1) { two = rand(); ret = memcmp(&one, &two, sizeof(int)); if (ret < -128 || ret > 127) break; time(&now); if (now - start > 10) { printf("Not triggered in 10 seconds, *probably* not vulnerable.. "); return 1; } } printf("Vulnerable! memcmp returned: %d ", ret); return 0; }