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;
}
#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
Trackback