1 / 14

Struktuurid vol2

Struktuurid vol2. 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 " };

conway
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

  2. Struktuuride initsialiseerimisest • Struktuuri initsialiseerimine, kui andmed on järjest esitatud:toodekaup1={4.00, "Kurk"}; • Struktuuri initsialiseerimine, kui andmed on suvalises järjekorras:toodekaup2={.hind=0.50, .nimetus="Kapsas"}; • Struktuuride massiivi initsialiseerimine esimesel meetodil:toodekaubad[]={{0.40, "Kiirnuudlid"}, {0.70,"Pelmeenid"}};

  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 }

  4. Struktuur struktuuris • Ühe struktuuri saab teise sisse paigutada • Struktuuride järjestus kirjeldamisel on oluline! • Eraldajana struktuuride vahel kasutusel punkt typedefstruct{ unsigned paev; unsigned kuu; unsigned aasta; } kuuPaev; typedefstruct{ char eesnimi[15]; char perenimi[15]; kuuPaevkp; } isik;

  5. Näide 2 intmain() { isiktootaja; strcpy(tootaja.eesnimi, "Andres"); strcpy(tootaja.perenimi, "Haab"); tootaja.kp.aasta= 1985; tootaja.kp.kuu= 4; tootaja.kp.paev= 14; printf("%s %s - %u.%u.%u", tootaja.eesnimi, tootaja.perenimi, tootaja.kp.paev, tootaja.kp.kuu, tootaja.kp.aasta); return 0; } typedefstruct{ unsigned paev; unsigned kuu; unsigned aasta; } kuuPaev; typedefstruct{ char eesnimi[15]; char perenimi[15]; kuuPaevkp; } isik;

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

  7. Näide 3 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 }

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

  9. Viitadest visuaalselt #include <stdio.h> intmain(void){ intnum=25, *p; p=&num; return 0; } *p0199FF8A num 25

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

  11. Viidad ja struktuurid • Struktuuridele annab samamoodi viidata structtootaja{ inttootajaKood; char eesnimi[20]; char perenimi[20]; float tunnitasu; }; structtootaja indrek; structtootaja *strPtr; strPtr = &indrek;

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

  13. Näide 4 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 }

  14. 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!

More Related