samma som 3 men den kollar att det inte är ex. månad 23

#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>



void printIntArray2(int a[], int len)
{
     int i;
     for (i = 0; i < len; i++)
     {
       printf("%d", a[i]);
     }
     printf("\n");  }   


/**** Här delar vi upp personnumret i [åååå] [mm] [dd] [xxxx] ****/

void uppdelning(int year[], int month[], int day[], int number[], char str[]){
    
          year[0] = str[0] - 48;
          year[1] = str[1] - 48;      
          year[2] = str[2] - 48;
          year[3] = str[3] - 48;      
          
          month[0]=str[4] -48;                
          month[1]=str[5] -48;
          
          day[0]=str[6] -48;
          day[1]=str[7] -48;      
          
          number[0]=str[8] -48;
          number[1]=str[9] -48;
          number[2]=str[10] -48;
          number[3]=str[11] -48;
          
          
}




/*** Scanna in ****/
int readpersonnummer(int year[], int month[], int day[], int number[], char str[]) {
    char nr[20];
   
    printf("%s\n", str);            //skriv in ett giltigt personnummer
    scanf("%s", nr);  
   
    uppdelning(year, month, day, number, nr);      //anropar funktionen "uppdelning"
   
    printf("%d", CheckPersonnummer( year, month, day, number));
}







/**** funktion som kontrollerar månad och dagar ****/

int CheckPersonnummer(int year[], int month[], int day[], int number[]){
int yearnr, monthnr, daynr, kontroll=1;    
 
 

    
yearnr  =year[0]*1000+year[1]*100+year[2]*10+year[3];    //SAMMA som nedan    
monthnr =month[0]*10+month[1];                           //gör om till 10-talssystemet
daynr   =day[0]*10+day[1];                               //gör om till 10-talssystem


if((monthnr==1||monthnr==3||monthnr==5||monthnr==7||monthnr==8||monthnr==10||monthnr==12)&& (daynr>31))
kontroll=0;



     if (monthnr==2 && daynr>28)            // Kontroll = 0 visar att nåt är fel                                                           
        {kontroll=0;}
     if (daynr>30)
        {kontroll=0;}
         
    
else if (yearnr>2009) kontroll=0;               // är man född efter 2009 är nåt fel.
    
printf("personnumret är ");

if (kontroll==0) printf("inte ");          // har något blivit fel någonstans skrivs "inte" ut.

printf("korrekt!!");

if (kontroll=1) return 1;                 // returnera 1 om personnumret var okej
         
return 0;                                  //returnera 0 om personnumret inte var okej
}




/****** MAIN ******/

int main(void){
   int year[4];
   int month [2];
   int day [2];
   int number[4];
   char *str = "skriv in ett giltigt personnummer enligt modellen ååååmmddxxxx";
      
      
      
      readpersonnummer(year,month,day,number,str);       //anropar funktionen "readpersonnummer"


    getch();
    return 0;
}

Kommentarer

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback
RSS 2.0