\#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 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
{ else
{
printf("\nVÄÄRIN");
}
}
int LuvunSyotto(int Minimi,int Maksimi)
{
int luku;
do
{ scanf do
{
scanf("%d",&luku); if
if(luku>Minimi\|\|luku
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\ jono[i+1\]=0;//päätetään merkkijono eli 0 loppuun
while(i>-1)
{
{ apu apu=luku/10; apu
apu=apu*10; numero
numero=luku-apu; //luvun vähiten merkitsevä numero jono\
jono[i\]=48+numero; //muutetaan numero ASCII-arvoksi i
i--; luku
luku=luku/10;
}
return jono;
}
\\ |