#include #include #include // Berechnet die Fehlende Zahl int getMissingNumber(int sum, int missingMultiplier){ int search = 0; while((sum + search * missingMultiplier) % 11) search++; return search; } // Konvertiert ein char zu einer Zahl int convertNumber(char p[], int index){ char temp[] = {p[index], '\0'}; if (*temp != 'X') return atoi(temp); else return 10; } void main(){ static const int n = 14; char c[n]; std::ifstream ifs("isbn.in"); ifs.getline(c, n); std::cout << "Gelesene ISBN-Nummer: "<< c << std::endl; ifs.close(); int m_idx = 0, m_mult = 0, sum = 0, mult = 10; for(int i = 0; i < n-1; ++i){ switch(c[i]) { case '-': // Trennzeichen break; case '.': //Fehlende Ziffer m_idx = i; m_mult = mult--; break; default: // Eine Zahl sum += mult-- * convertNumber(c,i); break; } } int missing = getMissingNumber(sum, m_mult); c[m_idx] = missing == 10 ? 'X' : ('0' + missing); std::cout << "Korrekte ISBN-Nummer: " << c << std::endl; }