Sotun tarkastus
/*Esimerkki sotun tarkastuksesta*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <tchar.h>
int LuvunSyotto(int Minimi,int Maksimi);
void SotunTarkastus(char*);
void main()
{
char Sotu[100];
SotunTarkastus(Sotu);
printf("Sotu on %s",Sotu);
getch();
}
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: ");
Merkki=getche();
SyntAika=Paiva*10000000+Kk*100000+Vuosi*1000+JarjNo;
Indeksi=SyntAika%31;
if(Merkki==TarkJono[Indeksi])
{
itoa(SyntAika,Apu,10);//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[8]=Merkki;//laitetaan tarkastusmerkki loppuun
Sotu[9]=0;//päätetäään merkkijono
printf("\nOikein, sotu oli %s",Sotu);
}
else
{
printf("\nVÄÄRIN");
}
}
int LuvunSyotto(int Minimi,int Maksimi)
{
int Paikka=0;
int Luku=0;
char Merkki=0;
char Merkkijono[20];
do{
Merkki=getche();//getche kysyy ja näyttää merkin
Merkkijono[Paikka]=Merkki;
Paikka++;//lisätään paikkaa yhdellä= siirrytään seuraavaan kohtaan
//merkkijonossa
}while(Paikka < 8 && Merkki!=13);//13=ENTER //while silmukka loppuu Merkkijono[Paikka]=0;//laitetaan viimeiseksi merkkijonon lopetusmerkki=0
Paikka=0;
Luku=atoi(Merkkijono);//muutetaan merkkijono luvuksi
if (Luku > Maksimi)//tarkastus onko liian suuri
{
Luku=0;
printf("\nLiian suuri Anna uudelleen\n");
Luku = LuvunSyotto(Minimi,Maksimi);
}
if (Luku < Minimi)//tarkastus onko liian pieni
{
Luku=0;
printf("\nLiian pieni Anna uudelleen\n");
Luku = LuvunSyotto(Minimi,Maksimi);
}
return Luku;
}