Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Błąd sumy kontrolnej

Ostatnio zmodyfikowano 2012-11-22 18:14
Autor Wiadomość
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:

C/C++
#include <iostream>

using namespace std;

int main()
{
    string s;
   
    //cout << "Wpisz numer seryjny: ";
    s = "212567421";
   
    //cout<<"\nSize:"<<s.size()<<endl;
   
    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 :)
P-69695
krzyk
» 2012-11-22 18:00:44
Takie cos?
C/C++
#include <iostream>

using namespace std;
int main()
{
    string s;
   
    //cout << "Wpisz numer seryjny: ";
    s = "212567421";
   
    //cout<<"\nSize:"<<s.size()<<endl;
   
    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;
}
P-69696
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ę ^^
P-69698
« 1 »
  Strona 1 z 1