tehtävät 1-5, laskuri C++:lla graafinen esitys ei järin näyttävä, mutta oletin että idea on tärkeämpi näppäimet h (lisää H-autoja), k (lisää K-autoja), n (nollaa) ja p (poistu) #include #include #include #include typedef struct { int x; int y; } koord; class cLaatikko { koord vasenyla; koord koko; char *teksti; public: cLaatikko(koord v, char *pteksti) { vasenyla = v; teksti = pteksti; koko.x = strlen(teksti)+1; koko.y = 2; piirra();} void piirra(){ gotoxy(vasenyla.x, vasenyla.y); printf("-"); gotoxy(vasenyla.x+koko.x, vasenyla.y); printf("-"); gotoxy(vasenyla.x, vasenyla.y + koko.y); printf("-"); gotoxy(vasenyla.x+koko.x, vasenyla.y + koko.y); printf("-"); gotoxy(vasenyla.x+1, vasenyla.y + 1); printf("%s", teksti); } void setTeksti(char *pteksti) { teksti = pteksti; piirra(); } }; class cNappula { cLaatikko *nappula; char komentonappain; int komento; int lisaviesti; public: cNappula(koord v, char pnap, char *pteksti, int pkomento, int lisa) { nappula = new cLaatikko(v, pteksti); komentonappain = pnap; komento = pkomento; lisaviesti = lisa; piirra(); } ~cNappula() { delete nappula;} void piirra(){ nappula->piirra(); } int tarkista(char c){ if (c==toupper(komentonappain)) return 1; return 0; } int getLisa(){ return lisaviesti; } int getKomento() { return komento; } }; class cLaskuri { int tunniste; int maara; char format[80]; cLaatikko *kehys; public: cLaskuri(koord v, int ptun){ maara = 0; sprintf(format,"%3d", maara); kehys = new cLaatikko(v, format); tunniste = ptun; } ~cLaskuri() { delete kehys;} void lisaa(){ sprintf(format,"%3d", ++maara); kehys->setTeksti(format); } void piirra() { kehys->piirra();} void nollaa(){ maara=0; sprintf(format,"%3d", maara); kehys->setTeksti(format); } int tarkista(int check){ if (check == tunniste ) return 1; return 0;} }; int luekomento(cNappula *nappaimet, int *lisa){ char c; int i; *lisa = 0; while (1) { c = (char)toupper(getch()); for (i=0;i<4;i++) if(nappaimet[i].tarkista(c)){ *lisa = nappaimet[i].getLisa(); return nappaimet[i].getKomento(); } } } int laske(cNappula *nappaimet, cLaskuri *laskurit){ int komento; int lisa; int i; while (1) { komento = luekomento(nappaimet, &lisa); switch (komento) { case 0 : for(i=0;i<2;i++) if(laskurit[i].tarkista(lisa)) laskurit[i].lisaa(); break; case 1 : laskurit[0].nollaa(); laskurit[1].nollaa(); break; case 2 : return 0; } } } int main(void) { koord k[] = {{1,1},{5,5},{20,5},{10, 15},{5,10},{20,10}}; cNappula pois(k[0], 'p', "Poistu", 2, 0); cNappula ha(k[1], 'h', "H-autoja", 0, 0); cNappula ka(k[2], 'k', "K-autoja", 0, 1); cNappula nollaa(k[3], 'n', "Nollaa", 1, 0); cLaskuri hlask(k[4], 0); cLaskuri klask(k[5], 1); cNappula nappaimet[4] = {pois, ha, ka, nollaa}; cLaskuri laskurit[2] = { hlask, klask }; laske(nappaimet, laskurit); return 0; } tehtävä 8: TextOut Delphillä unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormPaint(Sender: TObject); begin with Canvas do begin TextOut(30,30, 'Matti Äijänen'); TextOut(30,43, 'Kannaksenkatu 38'); TextOut(30,56, '050-5405486'); end end; end.