Naturligt språk klocka för RaspberryPi (2 / 2 steg)
Steg 2: Programmet
Kopiera detta program till din RaspberryPi.
Kompilera den med kommandot: gcc -o klocka clock.c
Och köra det med kommandot:. / klocka
/*********************************************************
* Filnamn: clock.c
*
* Ett naturligt språk klockprogram för RaspberryPi.
*
* Kompilera med kommandot:
* gcc -o klocka clock.c
*
* Köra med kommandot:. / klocka
*
**********************************************************/
#include < time.h >
#include < stdio.h >
#define clrscr() printf("\e[1;1H\e[2J")
char timmar [24] [7] = {"tolv",
"En",
"Två",
"Tre",
"Fyra",
"Fem",
"Sex",
"Seven",
"Åtta",
"Nio",
"Tio",
"Eleven",
"Tolv",
"En",
"Två",
"Tre",
"Fyra",
"Fem",
"Sex",
"Seven",
"Åtta",
"Nio",
"Tio",
"Elva"};
char minuter [60] [13] = {"noll",
"En",
"Två",
"Tre",
"Fyra",
"Fem",
"Sex",
"Seven",
"Åtta",
"Nio",
"Tio",
"Eleven",
"Tolv",
"Tretton",
"Fjorton",
"Femton",
"Sexton",
"Sjutton",
"Arton",
"Nitton",
"Tjugo",
"21",
"Twenty-two",
"23",
"24",
"Tjugofem",
"26",
"27",
"Tjugo-åtta",
"29",
"Trettio",
"Trettioen",
"Trettiotvå",
"Thirty-three",
"Trettio-fyra",
"Thirty-five",
"36",
"37",
"38",
"39",
"Fyrtio",
"Fyrtioen",
"42",
"43",
"Fyrtiofyra",
"45",
"46",
"47",
"Fyrtioåtta",
"Fyrtionio",
"Femtio",
"Femtioen",
"52",
"53",
"54",
"55",
"Femtiosex",
"57",
"58",
"59",};
char dow [7] [10] = {"Söndag", "Monday", "Tisdag", "Onsdag",
"Torsdag", "Fredag", "Lördag"};
char månader [12] [10] = {"Januari", "Februari", "mars", "April",
"Maj", "Juni", "Juli", "Augusti", "September",
"Oktober", "November", "December"};
char dagar [32] [14] = {"noll",
"Första",
"Andra",
"Tredje",
"Vidare",
"Femte",
"Sjätte",
"Sjunde",
"Åttonde",
"Nionde",
"Tionde",
"Elfte",
"Tolfte",
"Trettonde",
"Fjortonde",
"Femtonde",
"Sextonde",
"Sjuttonde",
"1700",
"1800",
"1900",
"Tjugoförsta",
"Tjugoandra",
"Tjugotredje",
"Tjugo-tillbaka",
"Tjugofemte",
"E",
"Tjugosjunde",
"Tjugo-åttonde",
"Tjugonionde",
"Minutersvideo",
"Trettioförsta"};
struct tm tm2;
int timeh, timem, gånger; Aktuella timmar och minuter och sekunder.
int datum, månad, år, wday;
/*********************************************************
* gettime() funktion - läser in den aktuella tiden i den
* globala variabler. Det sätter timmarna i variabeln
* timeh och minuter i timem och så vidare.
*********************************************************/
void gettime()
{
tid nu;
char * str;
nu = time(NULL); Får tid.
Str = ctime(&now); Konvertera den till en sträng.
strptime (str, "%a %b %d % H: % m %S %Y", & tm2); Konvertera från strängversion.
timeh = tm2.tm_hour; Kopiera timmar, minuter och sekunder
timem = tm2.tm_min; i globala variabler.
tider = tm2.tm_sec;
datum = tm2.tm_mday;
månad = tm2.tm_mon;
år = tm2.tm_year;
WDAY = tm2.tm_wday;
}
/*********************************************************
* dspsec() funktion - visar sekunder i den
* variabel gånger. Sekunder använder samma matrisen som minuter.
*********************************************************/
void dspsec(T2)
{
IF(Times>0) printf ("och %s sekunder", * minutes+(T2*13));
}
/*********************************************************
* dsptime() funktion - rensar skärmen och visar den
* tid i naturligt språk. Den använder antalet timmar i den
* variabel timeh och minuter i timem.
*********************************************************/
void dsptime()
{
int timem2, timeh2, times2;
printf ("\n\n\n\n\n\n\n\n\n tid är nu: \n");
Switch(timem)
{
fall 0:
printf ("%s O'clock\n",*hours+(timeh*7));
dspsec(Times);
bryta;
fall 1: mål 2: fall 3: fall 4: fall 5: ärende 6: fall 7: fall 8: fall 9: fall 10:
fall 11: fall 12: fall 13: 14 i mål: fall 15: fall 16: fall 17: fall 18: 19 i mål: fall 20:
i mål 21: fall 22: fall 23: fall 24: fall 25: fall 26: fall 27: fall 28: fall 29: fall 30:
fall 31: fall 32: 33 i mål: mål 34: fall 35: fall 36: 37 i mål: fall 38: case 39: fall 40:
i mål 41: fall 42: 43 i mål: mål 44: fall 45:
IF(timem==1) printf ("%s minut", * minutes+(timem*13));
annars printf ("%s minuter", * minutes+(timem*13));
dspsec(Times);
printf ("tidigare %s o'clock",*hours+(timeh*7));
bryta;
fall 46: 47 i mål: mål 48: fall 49: fall 50:
i mål 51: fall 52: 53 i mål: fall 54: fall 55: i mål 56: fall 57: i mål 58: 59 i mål:
timem2 = 60-timem;
timeh ++;
IF(timem2==1) printf ("%s minut", * minutes+(timem2*13));
annars printf ("%s minuter", * minutes+(timem2*13));
dspsec(60-Times);
printf ("till %s o'clock",*hours+(timeh*7));
bryta;
}
IF(timeh<13) printf ("AM\n");
annars printf ("PM\n");
printf ("%s, %s %s %d\n\n\n\n\n\n\n", * dow+(wday*10), * months+(month*10), *days+(date*14), (1900 + år));
}
/**************************************************************
* Main () funktion
**************************************************************/
Main)
{
int ptime = 70. tidigare tid efter gettime()
While(1)
{
getTime();
om (ptime! = gånger)
{
clrscr();
ptime = gånger;
dsptime();
}
}
}