Mr.Kidney Geschrieben 26. November 2003 Geschrieben 26. November 2003 Der vierte Teil der ISBN ist immer einstellig und überprüft die Richtigkeit der anderen Nummern. Weiß jemand zufällig, wie man das angehen könnte? Mein Ansatz: cin>>isbn[1]>>isbn[2]>>isbn[3]>>isbn[4]>>isbn[5]; cin>>isbn[6]>>isbn[7]>>isbn[8]>>isbn[9]>>isbn[10]; a=isbn[1]*10; b=isbn[2]*9; c=isbn[3]*8; d=isbn[4]*7; e=isbn[5]*6; f=isbn[6]*5; g=isbn[7]*4; h=isbn[8]*3; i=isbn[9]*2; j /*Die Summe wird auf nächsthöhere durch 11 teilbare Zahl ergänzt und die Differenz der beiden Zahlen ist die Prüfziffer.*/ z=a+b+c+d+e+f+g+h+i; if (j== "?") { printf("ISBN ist korrekt.");} else { printf("ISBN ist nicht korrekt.");}:confused: Danke... Zitieren
bigpoint Geschrieben 26. November 2003 Geschrieben 26. November 2003 Original geschrieben von Mr.Kidney Der vierte Teil der ISBN ist immer einstellig und überprüft die Richtigkeit der anderen Nummern. Weiß jemand zufällig, wie man das angehen könnte? Mein Ansatz: cin>>isbn[1]>>isbn[2]>>isbn[3]>>isbn[4]>>isbn[5]; cin>>isbn[6]>>isbn[7]>>isbn[8]>>isbn[9]>>isbn[10]; a=isbn[1]*10; b=isbn[2]*9; c=isbn[3]*8; d=isbn[4]*7; e=isbn[5]*6; f=isbn[6]*5; g=isbn[7]*4; h=isbn[8]*3; i=isbn[9]*2; j /*Die Summe wird auf nächsthöhere durch 11 teilbare Zahl ergänzt und die Differenz der beiden Zahlen ist die Prüfziffer.*/ z=a+b+c+d+e+f+g+h+i; if (j== "?") { printf("ISBN ist korrekt.");} else { printf("ISBN ist nicht korrekt.");}:confused: Danke... kannst du einbiesien mehr dein Problem beschreiben ?! Zitieren
Mr.Kidney Geschrieben 26. November 2003 Autor Geschrieben 26. November 2003 Das Problem besteht darin, dass die letzte Stelle auch ein "X" sein kann. Wenn ich das "X" als "char-Variable" deklariere, rechnet er nicht mehr, sondern zeigt Fehler, dass ich "char" nicht mit "int" verbinden kann. Wie bekomme ich das Programm dazu, dass er das "X" in die Zahl "10" umwandelt? Mein Programm sieht inzwischen so aus: int a,b,c,d,e,f,g,h,i,j,y,z; int knr; cin>>a>>b>>c>>d>>e>>f>>g>>h>>i; cin>>knr; //knr ist das letzte Zeichen a*=10;b*=9;c*=8;d*=7;e*=6;f*=5;g*=4;h*=3;i*=2; z=a+b+c+d+e+f+g+h+i; j=z; for (;j%11!=0;) { j=++j; } y=j-z; printf("\nSumme ist: %3d ",z); printf("\nDie durch 11 teilbare Zahl ist: %3d ",j); printf("\nKontrollnummer ist: %3d ",y); if (knr==y) printf("\n\nISBN ist korrekt."); else printf("\n\nISBN ist nicht korrekt."); Zitieren
bigpoint Geschrieben 26. November 2003 Geschrieben 26. November 2003 moment wie kriegst du denn dien ISBN als string oder ..... Zitieren
bigpoint Geschrieben 26. November 2003 Geschrieben 26. November 2003 Original geschrieben von 007ski moment wie kriegst du denn dien ISBN als string oder ..... Bzw. überprüft die letzte „zahl “ ob es int oder char und ersetzt mit 10 Zitieren
Mr.Kidney Geschrieben 27. November 2003 Autor Geschrieben 27. November 2003 Danke Euch. Ich habs rausgefunden: int main() { int a,b,c,d,e,f,g,h,i,j,y,z; char knrc; int knri; cin>>a>>b>>c>>d>>e>>f>>g>>h>>i; cin>>knrc; a*=10; b*=9; c*=8; d*=7; e*=6; f*=5; g*=4; h*=3; i*=2; z=a+b+c+d+e+f+g+h+i; j=z; for (;j%11!=0 ; ) { j=++j; } y=j-z; printf("\nSumme ist: %3d ",z); printf("\nDie durch 11 teilbare Zahl ist: %3d ",j); printf("\nErrechnete Kontrollnummer ist: %3d ",y); printf("\nEingegebene Kontrollnummer ist: %c \n",knrc); if ((knrc == 'X') || (knrc == 'x')) knri = 10; else knri = knrc-48; if(y == knri) printf("\n\nISBN ist korrekt (a)."); else printf("\n\nISBN ist nicht korrekt (."); :marine Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.