Struktuurid ( a.k.a . kirjed)

Preview:

DESCRIPTION

Struktuurid ( a.k.a . kirjed). Risto Heinsar & Ott Madis Ozolit. Mis asi on struktuur. Järjekordne andmetüüp Struktuuri sisu saad ise koostada Stuktuur koosneb teistest andmetüüpidest ( int , float , double jt). struct tootaja { int tootajaKood ; char eesnimi [ 20 ]; - PowerPoint PPT Presentation

Citation preview

Struktuurid (a.k.a. kirjed)

Risto Heinsar & Ott Madis Ozolit

2

Mis asi on struktuur

• Järjekordne andmetüüp• Struktuuri sisu saad ise koostada• Stuktuur koosneb teistest andmetüüpidest (int, float, double jt)

struct tootaja{ int tootajaKood; char eesnimi[20]; char perenimi[20]; float tunnitasu; };struct tootaja indrek;

2013

3

Struktuurile tüübi loomine

• Luues struktuurile tüübi, saame hiljem vältida iga struktuuri eraldi määramist• Struktuuri tüübid kirjutatakse programmi päisesse pärast preprotsessori

direktiive.

#include <stdio.h>typedef struct{ int tootajaKood; char eesnimi[20]; char perenimi[20]; float tunnitasu;} andmed; int main(void){ andmed tootaja[10];}

2013

4

Struktuuris väljade poole pöördumine• Tavaliselt eraldatakse stuktuuri nimi ja välja nimi üksteisest punktiga

struktuurinimi.väljanimi indrek.tunnitasu=15.4; printf("%f", indrek.tunnitasu); tootaja[5].tunnitasu=indrek.tunnitasu; strcpy(tootaja[3].eesnimi, "Indrek");

• Struktuuridel saab kasutada ka omistustehet! struktuurA=struktuurB; tootaja[5]=indrek;

2013

5

Näide 1 1 #include <stdio.h>

2 #include <string.h>

3

4 struct tootaja{

5 int tootajaKood;

6 char eesnimi[20];

7 char perenimi[20];

8 float tunnitasu;

9 };

10

11 int main(void) {

12 struct tootaja indrek;

13 indrek.tootajaKood = 75;

14 indrek.tunnitasu = 2.75;

15 strcpy(indrek.eesnimi, "Indrek");

16 strcpy(indrek.perenimi, "Tamm");

17 printf("Tootaja %06d, %s %s teenib tunnis %2.2f",

18 indrek.tootajaKood, indrek.eesnimi, indrek.perenimi, indrek.tunnitasu);

19 return 0;

20 }2013

6

Näide 2 1 #include <stdio.h>

2 #include <math.h>

3

4 typedef struct {

5 int x;

6 int y;

7 } punkt;

8

9 int main(void) {

10 double pikkus;

11 punkt sirge[2];

12 sirge[0].x = 10;

13 sirge[0].y = 6;

14 sirge[1].x = 9;

15 sirge[1].y = 2;

16 pikkus = sqrt(pow(sirge[1].x - sirge[0].x, 2) + pow(sirge[1].y - sirge[0].y, 2));

17 printf("Lõigu pikkus on %lg", pikkus);

18 return 0;

19 }

2013

7

Kodutöö I

• Nüüdseks on kõik vajalik kodutöö I sooritamiseks läbi võetud!

• Meenutame, et korrektne kodutöö eeldab järgnevat:• Failide kasutamine• Struktuuride (kirjete) kasutamine• Funktsioonide kasutamine• Trepitud kood

2013

8

Kodutöö I

• Kodutöö variant vastavalt matriklinumbri viimasele numbrile:http://www.tud.ttu.ee/im/Vladimir.Viies/PROGRAMMEERIMINE/PR2/Progra_II_12/Pr2_kodu_I_12/

• Esitada tuleb ainult kood ja vajalikud andmefailid selle jooksutamiseks!

• Kodutööd moodustavad 35% hindest!• Tähtaeg on enne I KT toimumist – st 4. õppenädala lõpuks!2013

9

Tunnitöö

• Loe failist sisse töötaja isikuandmed: isikukood, eesnimi, perekonnanimi ja linn.• Programm peab olema võimeline töötama erineva arvu

lähteandmetega!• Andmed tuleb lugeda struktuuridesse (struktuuri massiiv)• Kasutaja sisestab klaviatuurilt linna nime• Programm trükib ekraanile kõik küsitud linnas elavate inimeste isikuandmed• Kui ühtegi isikut ei leitud, siis tuleb sellekohane teade!

2013

Recommended