Napisałem walidator NIPów, który powinien działać, jednak ma następujące problemy:
- NIP to liczba 10-cyfrowa, a więc nie wiem jak zmieścić ją w jakiejkolwiek zmiennej liczbowej (największa jaką znam to long, ale zakres musi być przynajmniej od 1000000000 do 9999999999)
- prawdopodobnie zrobiłem coś nie tak z warunkami
Bardzo proszę, by ktoś znający się na rzeczy przejrzał ten kod i powiedział mi co poprawić (zwłaszcza jak zapisać ten NIP w zmiennej)
// Walidator NIPów
#include <iostream>
using namespace std;
bool validate(long nip)
{
int wagi[9]={7,6,5,4,3,2,7,5,6}; // Wagi do sprawdzania, podane w odwróconej kolejności
int cyfry[10]; //Tablica dla cyfr NIPu
int i,suma=0; // Zmienna pomocnicza, Suma ilorazu wag i cyfr nipu
for (i=0;i==8;i++) // Zapisywanie cyfr NIPu do tablicy
{
cyfry[i]=nip%10; // Dodaje do tablicy pierwszą z prawej cyfrę NIPu,
// pierwsza cyfra NIPu jest cyfrą kontrolną, czyli cyfry[0] to cyfra kontrolna
nip/=10; // Odcina dodanę liczbę z NIPu
}
for (i=1;i==8;i++) suma=suma+(wagi[i]*cyfry[i]); // Sumowanie, z pominięciem liczby kontrolnej
if((suma%11)==cyfry[0]) return true;
else return false;
}
int main () {
long nip;
cout<<"Podaj numer NIP: ";
cin>>nip;
if(validate(nip)==true) cout<<endl<<"Podany NIP "<<nip<<" jest poprawny.\n\n";
else cout<<endl<<"Podany NIP "<<nip<<" NIE jest poprawny.\n\n";
system("pause");
}