BluePink BluePink
XHost
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink

Un CIF este alcatuit astfel : 
[ |ZZZZZZZZZ| ] |C|
|_________|    |_|
:      :
:      --> Cifra ce control
:
--> Numarul de ordine (maxim 9 caractere)



Algoritmul de validare al unui cod CIF

Pas preliminar: Se testeaza daca codul respecta formatul unui cod CIF. Adica lungimea maxima sa fie de 10 cifre si sa contina doar caractere numerice.

Pas 1: Se foloseste cheia de testare "753217532". Se inverseaza ordinea cifrelor codului CIF precum si a cheii de testare.

Pas 2: Se ignora prima cifra din codul CIF inversat (aceasta este cifra de control) si se inmulteste fiecare cifra cu cifra corespunzatoare din cheia de testare inversata.

Pas 3: Se aduna toate produsele obtinute. Suma rezultata se inmulteste cu 10 si produsul este impartit la 11. Cifra obtinuta, in urma operatiei MODULO 11 reprezita cifra de verificare. Daca in urma impartirii s-a obtinut restul 10 atunci cifra de verificare va fi 0.

Pas 4: Pentru un CIF valid cifra de verificare va trebui sa corespunda cu cifra de control a codului CIF initial.

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
char* inversare(char *cif)
{
        char *icif;
        int i;
        int n;
       for(i=0;cif[i]!=NULL;i++);
        n=i;
        icif[n]=NULL;
       n--;
        while(i>=0)
       {
               icif[n-i]=cif[i];
               i--;
        }
        return icif;
}
int lungime(char *cif)
{
        int i;
       for(i=0;cif[i]!=NULL;i++);
        return i;
}
void ignora(char *cif)
{
        int i;
       for(i=0;cif[i+1]!=NULL;i++)
       cif[i]=cif[i+1];
       cif[i]=NULL;
}
int cc(char *cif)
{
        int i;
        for(i=0;cif[i+1]!=NULL;i++);
        return cif[i]-'0';
}
int validare(char *cif)
{
        char *cheie="753217532";
       cheie=inversare(cheie);
       char *icif;
        icif=inversare(cif);
        int i;
        ignora(icif);
        int s=0;
       for(i=0;icif[i]!=NULL;i++)
        {
               s+=((icif[i]-'0')*(cheie[i]-'0'));
       }
        s*=10;
       s%=11;
        if(s==10)
               s=0;
        if(s==cc(cif))
               return 1;
         else
              return 0;
}
void main()
{
        char *cif;
       cout<<"\nintroduceti codul de identificare fiscala:RO";gets(cif);
        if(lungime(cif)<=10)
       {
        if(validare(cif))
               cout<<"\ncodul este valid";
       else
               cout<<"\nnu este valid";
       }
        else
              cout<<"codul depaseste lungimea maxima permisa";
       getch();
}