[C++] Błąd sumy kontrolnej
Ostatnio zmodyfikowano 2012-11-22 18:14
crash Temat założony przez niniejszego użytkownika |
[C++] Błąd sumy kontrolnej » 2012-11-22 17:51:19 Siema, HiÓston mamy problem :) Mam do napisania program, rysuje ładnie pięknie kody kreskowe i zachciało mi się, żeby jeszcze sumę kontrolną sprawdzał. Napisałem więc algorytm, ale nie działa. Pała z podstaw matmy, mimo dobrze napisanej matury :P Algorytm: 1. Mnożenie kolejnych cyfr numeru bez jego ostatniej liczby, przez wagi: 1 dla cyfry pierwszej, 3 dla cyfry drugiej, 7 dla cyfry siódmej, 9 dla cyfry ósmej, itp cyklicznie. 2. Sumowanie uzyskanych iloczynów 3. Wyznaczenie reszty z dzielenia całkowitego przez 10, uzyskana liczba to suma kontrolna W przykładzie jest numer: 212567421, wychodzi dla niego cyfra 8, ale na pewno nie u mnie w kodzie... Kod: #include <iostream>
using namespace std;
int main() { string s; s = "212567421"; int chksum = 0, order = 0; for( int i = 0; i <= 9; ++i ) { switch( order ) { case 0: chksum = chksum +( 1 *( s[ i ] - 48 ) ); break; case 1: chksum = chksum +( 3 *( s[ i ] - 48 ) ); break; case 2: chksum = chksum +( 7 *( s[ i ] - 48 ) ); break; case 3: chksum = chksum +( 9 *( s[ i ] - 48 ) ); break; } if( order == 4 ) order = 0; else ++order; } cout << "\nSuma: " << chksum; chksum %= 10; cout << ", " << chksum; return 0; }
Heeelp :) |
|
krzyk |
» 2012-11-22 18:00:44 Takie cos?
#include <iostream>
using namespace std; int main() { string s; s = "212567421"; int chksum = 0, order = 0; for( int i = 0; i <= 8; ++i ) { switch( order ) { case 0: chksum = chksum +( 1 *( s[ i ] - 48 ) ); break; case 1: chksum = chksum +( 3 *( s[ i ] - 48 ) ); break; case 2: chksum = chksum +( 7 *( s[ i ] - 48 ) ); break; case 3: chksum = chksum +( 9 *( s[ i ] - 48 ) ); break; } if( order == 3 ) order = 0; else ++order; } cout << "\nSuma: " << chksum; chksum %= 10; cout << ", " << chksum; return 0; }
|
|
crash Temat założony przez niniejszego użytkownika |
» 2012-11-22 18:14:14 Tak to jest jak się nie robi przerw siedząc przy kompie. Dziękuję ^^ |
|
« 1 » |