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...
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 ?!
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.");
bigpoint Geschrieben 26. November 2003 Geschrieben 26. November 2003 moment wie kriegst du denn dien ISBN als string oder .....
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
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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden