#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> char* itoa(int luku, char*jono); int LuvunSyotto(int Minimi,int Maksimi); void SotunTarkastus(char*); int main() { char any; char Sotu[100]; SotunTarkastus(Sotu); printf("Sotu on %s",Sotu); scanf("%c",&any); return 1; } void SotunTarkastus(char* Sotu) { int JarjNo; char Apu[100]; char Merkki; int SyntAika,Indeksi,Paiva,Kk,Vuosi; char TarkJono[]="0123456789ABCDEFHJKLMNPRSTUVWXY"; printf("\nAnna paiva: "); Paiva = LuvunSyotto(1,31); printf("\nAnna kuukausi: "); Kk = LuvunSyotto(1,12); printf("\nAnna vuosi: "); Vuosi = LuvunSyotto(0,99); printf("\nAnna vuoden jalkeiset KOLME numeroa: "); JarjNo = LuvunSyotto(1,999); printf("\nAnna viimeinen merkki huom! ISO KIRJAIN:\n "); scanf("%c",&Merkki); scanf("%c",&Merkki); SyntAika=Paiva*10000000+Kk*100000+Vuosi*1000+JarjNo; Indeksi=SyntAika%31; if(Merkki==TarkJono[Indeksi]) { itoa(SyntAika,Apu);//Muutetaan luku merkkijonoksi if(SyntAika<100000000) strcpy(Sotu,"0");//jos päivä<10 lisätään 0 alkuun else strcpy(Sotu,"");//muuten tyhjennetään merkkijono strcat(Sotu,Apu);//lisätään merkkijonoon syntaika ja järjestysnumero Sotu[9]=Merkki;//laitetaan tarkastusmerkki loppuun Sotu[10]=0;//päätetäään merkkijono printf("\nOikein, sotu oli %s",Sotu); } else { printf("\nVÄÄRIN"); } } int LuvunSyotto(int Minimi,int Maksimi) { int luku; do { scanf("%d",&luku); if(luku>Minimi||luku<Maksimi) break; }while(1); return luku; } char* itoa(int luku, char*jono) { int i=0; int apu,numero; i=log10((double)luku);//luvussa on i+1; numeroa jono[i+1]=0;//päätetään merkkijono eli 0 loppuun while(i>-1) { apu=luku/10; apu=apu*10; numero=luku-apu; //luvun vähiten merkitsevä numero jono[i]=48+numero; //muutetaan numero ASCII-arvoksi i--; luku=luku/10; } return jono; }