ISBN Prüfprogramm in C
-
man soll eine 10stellige ISBN Nummer eingeben und das Programm soll prüfen ob diese OK ist. Dies funktioniert so indem er alle die ersten 9 zimmer als quersumme addiert und diese mit modulo 11 bearbeitet. das ergebnis ist die letzte ziffer der isbn nummer.
Wie geht das?
-
Als erstes mußt du alle Trennzeichen in der ISBN-Nummer rauswerfen. Danach kannst du die Ziffern in einer Schleife durchgehen und aufaddieren (zur Umrechnung Ziffernzeichen->Ziffer einfach '0' abziehen).
PS: Und schau dir mal an, wie die ISBN-Prüfziffer tatsächlich berechnet wird - das ist etwas mehr als eine "einfache" Quersumme
-
... for(int i=0;i<10;i++) { cin>>nummer[i]; ergebnis+=nummer[i]%11 } if(ergebnis ==nummer[10]) { .. }
-
ohh ja also die ziffer * die postion der ziffer. wir fange ich denn mit dem programm an. die bindestiche müssen net unbedingt sein, das heißt ich gebe sie gar net mit ein. das ist doch dann einfacher aber ich ahbe keinen ansatz
-
int summe=0; string ISBN="..."; for(int p=0;p<9;++p)//Index 0..8 sind die Ziffern, 9 ist die Prüf"ziffer" summe+=(p+1)*(ISBN[p]-'0'); int pruefr=summe%11;//Prüfziffer aus Rechnung int pruefs=(isdigit(ISBN[9]) ? ISBN[9]-'0' : 10;//Prüfziffer aus Eingabe if(pruefr!=pruefs) cout<<"Falsche Eingabe\n";
-
ok programm läuft erstmal.
jetzt will ich es doch erweitern dass die bindestriche weggehauen werden wenn ich sie eingebe
Hier mal meine arbeit:
-
mit p=ISBN.find("-"); kannst du die Position der Bindestriche bestimmen, mit ISBN.erase(p,1); löschst du sie (am besten erledigst du das in einer while-Schleife).