#include #include #include using namespace std; vector string_to_vector_int(string s) { vector v; for (auto c : s) { v.push_back(c - '0'); } return v; } // använd denna datatyp för att skapa grafen struct Node { int value; Node * grey_line; Node * red_line; }; class Mod7 { public: Mod7() { // Skapa grafen här for (int i{0}; i < 7; ++i) graph.push_back(new Node{i, nullptr, nullptr}); for (int i{0}; i < 6; ++i) graph[i]->grey_line = graph[i+1]; graph[6]->grey_line = graph[0]; graph[0]->red_line = graph[0]; graph[1]->red_line = graph[3]; graph[2]->red_line = graph[6]; graph[3]->red_line = graph[2]; graph[4]->red_line = graph[5]; graph[5]->red_line = graph[1]; graph[6]->red_line = graph[4]; } ~Mod7(){ for (Node* n : graph) delete n; } int remainder(string number) { // Implementera algoritmen här Node* current{graph[0]}; vector digits{string_to_vector_int(number)}; for (int i{0}; i < digits.size(); ++i) { for (int j{digits[i]}; j > 0; --j) current = current->grey_line; if (i + 1 < digits.size()) current = current->red_line; } return current->value; } private: // Lägg eventuella datamedlemmar här std::vector graph; }; int main() { string test1{"243"}; Mod7 modder{}; if (modder.remainder("243") == 5) { cout << "Stämmer!" << endl; } if (modder.remainder("11111111111111111111111111111") == 2) { cout << "Stämmer!" << endl; } if (modder.remainder("4221") == 0) { cout << "Stämmer!" << endl; } }