Opis forum
NIP to numer 10-cio cyfrowy odpowiednio dzielony myślnikami (np. 768-000-24-66).
Wagi to cyfry reprezentujące tablicę, które wyglądają tak: 6, 5, 7, 2, 3, 4, 5, 6, 7
1. Teraz każdą cyfrę NIP (prócz ostatniej) mnożymy zgodnie z cyfrą wagi:
NIP: 7 6 8 0 0 0 2 4 6 6<== suma kontrolna, którą na tym etapie nie bierzemy pod uwagę;
WAGI: 6 5 7 2 3 4 5 6 7
_ _ _ _ _ _ _
7x6=42; 6x5=30; .............................................
2. Teraz sumujemy wyniki: 42+30+..............................=204
3. Teraz dzielimy sumę modulo przez 11:
204 mod 11 = 6
Jeśli modulo liczby wynosi 10, wówczas liczbą kontrolną jest 0
4. Wynik porównujemy z sumą kontrolną: 6 = 6.
Wynik taki sam jak suma kontrolna, a więc numer jest prawidłowy.
Napisz program, który dla podanego ciągu 10 liczb, sprawdzi czy mogą być one numerem NIP.
W zależności jakie zostaną wpisane trzy pierwsze cyfry numeru NIP oznaczające kod Urzędu Skarbowego ma pojawić się komunikat:
Dla 223 – Urząd Skarbowy w Olkuszu
Dla 257 - Urząd Skarbowy Kraków-Krowodrza
Offline
/*
16.II.2011
*/
#include<iostream.h>
int main()
{
int nip[10], wagi[9]={6,5,7,2,3,4,5,6,7}, i, suma=0, mod;
for(i=0;i<10;i++)
{
do
{
cout<<"podaj "<<i+1<<" cyfrę NIP: "<<endl;
cin>>nip[i];
}
while((nip[i]<0)||(nip[i]>9));
}
//sumowanie
for(i=0;i<=8;i++)
{
suma=suma+(nip[i]*wagi[i]);
}
cout<<"suma wynosi: "<<suma<<endl;
//dzielenie sumy przez 11
mod=suma%11;
if(mod==10)
{
mod=0;
}
cout<<"mod wynosi "<<mod<<endl;
//sprawdzenie poprawności
if(mod==nip[9])
{
cout<<"NIP poprawny"<<endl;
}
else
{
cout<<"NIP niepoprawny"<<endl;
}
//Olkusz lub Kraków-Krowodża
if((nip[0]==2)&&(nip[1]==2)&&(nip[2]==3))
{
cout<<"NIP dla Urzędu Skarbowego w Olkuszu"<<endl;
}
if((nip[0]==2)&&(nip[1]==5)&&(nip[2]==7))
{
cout<<"NIP dla Urzędu Skarbowego w Krakowie-Krowodrzy"<<endl;
}
system("pause");
}
Offline