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;
}
Comments