Struktuurid vol2
This presentation is the property of its rightful owner.
Sponsored Links
1 / 12

Struktuurid vol2 PowerPoint PPT Presentation


  • 108 Views
  • Uploaded on
  • Presentation posted in: General

Struktuurid vol2. Risto Heinsar & Ott Madis Ozolit. Struktuuride initsialiseerimisest. Struktuuri initsialiseerimine, kui andmed on järjest esitatud: toode kaup1 ={ 4.00 , " Kurk " };

Download Presentation

Struktuurid vol2

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Struktuurid vol2

Struktuurid vol2

Risto Heinsar & Ott Madis Ozolit


Struktuuride initsialiseerimisest

Struktuuride initsialiseerimisest

  • Struktuuri initsialiseerimine, kui andmed on järjest esitatud:toode kaup1={4.00, "Kurk"};

  • Struktuuri initsialiseerimine, kui andmed on suvalises järjekorras:toode kaup2={.hind=0.50, .nimetus="Kapsas"};

  • Struktuuride massiivi initsialiseerimine esimesel meetodil:toodekaubad[]={{0.40, "Kiirnuudlid"}, {0.70,"Pelmeenid"}};

Risto Heinsar & Ott Madis Ozolit


N ide 1

Näide 1

1 #include <stdio.h>

2

3 typedefstruct{

4 float hind;

5 char nimetus[30];

6 } toode;

7

8 intmain(void){

9 toodekaup= {.hind=0.50, .nimetus="Kapsas"};

10 toodekaubad[]={

11 {0.40, "Kiirnuudlid"}, {0.70,"Pelmeenid"}

12 };

13 printf("%.2f eur - %s\n", kaup.hind, kaup.nimetus);

14 printf("%.2f eur - %s\n", kaubad[0].hind, kaubad[0].nimetus);

15 printf("%.2f eur - %s\n", kaubad[1].hind, kaubad[1].nimetus);

16 return 0;

17 }

Risto Heinsar & Ott Madis Ozolit


Struct tagastusega funktsioon

Struct tagastusega funktsioon

  • Meenutame, et struktuur oli andmetüüp – seega ka funktsiooni tagastus võib olla struktuur

  • Struktuur tüüpi funktsioon tagastab ühetervikliku struktuuri.

Loome struktuuri tüübidefinitsiooni

Loome funktsiooni prototüübi

Loome funktsiooni

typedefstruct{

intx, y;

} punkt;

punktsisestaPunkt();

punktsisestaPunkt(){

punktajutine;

ajutine.x = 5;

ajutine.y = 7;

return ajutine;

}

Risto Heinsar & Ott Madis Ozolit


N ide 2

Näide 2

1 #include <stdio.h>

2 #include <math.h>

3

4 typedefstruct{

5 intx, y;

6 } punkt;

7

8 punktsisestaPunkt(intnr);

9

10 intmain(){

11 punktsirge[2];

12 sirge[0]=sisestaPunkt(1);

13 sirge[1]=sisestaPunkt(2);

14 printf("Loigupikkus on %.2f", sqrt(pow(sirge[1].x - sirge[0].x, 2) + pow(sirge[1].y - sirge[0].y, 2)));

15 return 0;

16 }

17

18 punktsisestaPunkt(intnr){

19 punktajutine;

20 printf("Sisestapunkti %d x ja y kordinaat\n> ", nr);

21 scanf("%d %d", &ajutine.x, &ajutine.y);

22 return ajutine;

23 }

Risto Heinsar & Ott Madis Ozolit


Viitamisega seotud operatsioonid

Viitamisega seotud operatsioonid

  • int *p// viida deklareerimine

  • &muutuja// muutujalt aadressi pärimine

  • *p// viidatava väärtuse poole pöördumine

  • p=&muutuja// viidale muutuja aadressi omistamine

  • *p=55// viidatavale mälupesale andmete kirjutamine

  • printf("%p", p)// viidal salvestatud aadressi trükkimine

  • printf("%d", *p)// viidataval aadressil olevate andmete trükkimine

Risto Heinsar & Ott Madis Ozolit


Viitadest visuaalselt

Viitadest visuaalselt

#include <stdio.h>

intmain(void){

intnum=25, *p;

p=&num;

return 0;

}

*p0199FF8A

num

25

Risto Heinsar & Ott Madis Ozolit


Viidad ja massiivid visuaalselt

Viidad ja massiivid visuaalselt

*p48F9AC91

intarray[]={5,3,7,3,5};

int*p;

p=array;

array[0]5

array[1]3

array[2]7

array[3]3

array[4]5

*(p+0)

*(p+1)

*(p+2)

*(p+4)

*(p+3)

Risto Heinsar & Ott Madis Ozolit


Viidad ja struktuurid

Viidad ja struktuurid

  • Struktuuridele annab samamoodi viidata

structtootaja{

inttootajaKood;

char eesnimi[20];

char perenimi[20];

float tunnitasu;

};

structtootaja indrek;

structtootaja *strPtr;

strPtr=&indrek;

Risto Heinsar & Ott Madis Ozolit


Viida kaudu p rdumine

Viida kaudu pöördumine

Need 2 kirjutusviisi on samaväärsed!

(*strPtr).tootajakood;

(*strPtr).eesnimi;

(*strPtr).perenimi;

(*strPtr).tunnitasu;

strPtr->tootajakood;

strPtr->eesnimi;

strPtr->perenimi;

strPtr->tunnitasu;

Peab meeldima!

Risto Heinsar & Ott Madis Ozolit


N ide 3

Näide 3

1 #include <stdio.h>

2 #include <string.h>

3

4 typedefstruct{

5 inttootajaKood;

6 char eesnimi[20];

7 char perenimi[20];

8 float tunnitasu;

9 } tootaja;

10

11 void trykiInfo(tootaja*ptr);

12

13 intmain(void) {

14 tootajaindrek={75, "Indrek", "Tamm", 2.75};

15 trykiInfo(&indrek);

16 return 0;

17 }

18

19 void trykiInfo(tootaja*ptr){

20 printf("Tootaja %06d, %s %s teenibtunnis %2.2f",

21 ptr->tootajaKood, ptr->eesnimi, ptr->perenimi, ptr->tunnitasu);

22 }

Risto Heinsar & Ott Madis Ozolit


Tunnit

Tunnitöö

  • Loe sisse failidest ja salvesta struktuuridesse:

    • Tooted – tootekood, toote nimetus

    • Laoseis – tootekood, laoseis

  • Sorteeri tooted toote nime alusel tähestikulises järjekorras

  • Väljasta ainult need tooted, mille laojääk on alla 5 ühiku

  • Kasuta vähemalt ühes funktsioonis viitasid struktuurile!

Risto Heinsar & Ott Madis Ozolit


  • Login