90 likes | 235 Views
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 ];
E N D
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) structtootaja{ inttootajaKood; char eesnimi[20]; char perenimi[20]; float tunnitasu; }; structtootaja indrek;
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> typedefstruct{ inttootajaKood; char eesnimi[20]; char perenimi[20]; float tunnitasu; } andmed; intmain(void){ andmed tootaja[10]; }
Struktuuris väljade poole pöördumine • Tavaliselt eraldatakse stuktuuri nimi ja välja nimi üksteisest punktigastruktuurinimi.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;
Näide 1 1 #include <stdio.h> 2 #include <string.h> 3 4 structtootaja{ 5 inttootajaKood; 6 char eesnimi[20]; 7 char perenimi[20]; 8 float tunnitasu; 9 }; 10 11 intmain(void) { 12 structtootajaindrek; 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 teenibtunnis %2.2f", 18 indrek.tootajaKood, indrek.eesnimi, indrek.perenimi, indrek.tunnitasu); 19 return 0; 20 }
Näide 2 1 #include <stdio.h> 2 #include <math.h> 3 4typedefstruct{ 5intx; 6inty; 7} punkt; 8 9intmain(void){ 10double pikkus; 11punktsirge[2]; 12sirge[0].x=10; 13sirge[0].y=6; 14sirge[1].x=9; 15sirge[1].y=2; 16pikkus=sqrt(pow(sirge[1].x-sirge[0].x, 2)+pow(sirge[1].y-sirge[0].y, 2)); 17printf("Lõigupikkus on %lg", pikkus); 18return 0; 19}
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
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!
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!