Veröffentlicht 26. November 200321 j 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...
26. November 200321 j 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 ?!
26. November 200321 j 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.");
26. November 200321 j 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
27. November 200321 j 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
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.