1 / 12

Struktuurid vol2

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Struktuurid vol2 Risto Heinsar & Ott Madis Ozolit

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. Viitadest visuaalselt #include <stdio.h> intmain(void){ intnum=25, *p; p=&num; return 0; } *p0199FF8A num 25 Risto Heinsar & Ott Madis Ozolit

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

More Related