{code}
#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;
}
{code} |