/*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; } |