Standard input output usage
Taking data in and writing data out to a file
In some of the problems in SDE 1 and SDE 2 online coding rounds, you have to take care of the program inputs.
Here is an example of how we can write all inputs to a text file and then run our algorithms.
You must add 2 files called "input.txt" and "output.txt" in the same directory add the function in the code, then in the main()
function just call the function fileIO()
to have the input taken from input.txt and the output written to output.txt.
void fileIO() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
}
int main() {
fileIO();
// ... YOUR CODE ...
return 0;
}
Input
Now in the input.txt file, you design as the inputs are given in the following case the input was
Output
The corresponding output file is written as
Code
#include <iostream>
#include <list>
#include <unordered_map>
#include <vector>
#include <utility>
using namespace std;
// Directed graph implementation
class Graph{
private:
unordered_map<char, list<pair<char, int>>> adj_list;
vector<pair<char, char>> E; // edge set
public:
vector<pair<char, char>> edges(){
return E;
}
void add_edge(char vertex1, char vertex2, int weight){
adj_list[vertex1].push_front(make_pair(
vertex2, weight
));
E.push_back({vertex1, vertex2});
}
void register_vertex(vector<char> vertices){
for (auto v:vertices){
list<pair<char, int>> l;
adj_list.insert({v, l});
}
}
unordered_map<char, list<pair<char, int>>> view(){
return adj_list;
}
};
int main() {
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
Graph g;
int vertex;
cin >> vertex;
vector<char> v;
while (vertex != 0){
char vertex_label;
cin >> vertex_label;
v.push_back(vertex_label);
vertex--;
}
g.register_vertex(v);
int numberofedges;
cin >> numberofedges;
while(numberofedges != 0){
char from, to;
int weight;
cin >> from >> to >> weight;
g.add_edge(from, to, weight);
numberofedges--;
}
unordered_map<char, list<pair<char, int>>> map = g.view();
for (auto data:map){
cout << data.first << " ";
for (auto neighbor:data.second)
cout << "[" << neighbor.first << ": " << neighbor.second << "]";
cout << "\n";
}
cout << "\n";
// print all the edges
auto edges = g.edges();
for (auto edge:edges){
cout << edge.first << "->" << edge.second << "\n";
}
cout << "\n";
}
Comments
This comments system is powered by GitHub Discussions