/* Vedd ki a komment jeleket azon program elol es mogul, amelyiket futtatni akarod! */ /* A többit pedig kommenteld ki komment zarojelekkel! */ /* ------------- CodeBlocks verziók: ------------------ */ /* Kommenteket lasd meg a lenti Borland verziokban is! */ /* M_PI benne van a math.h-ban, de nem minden gepen latja, ezert adtam meg konstanskent. Ha latja, vedd ki a konstanst...*/ /* 1. pelda: Strukturak Irjunk programot komplex szamokkal valo muveletvegzes bemutatasara. Alkalmazzunk ket struct tipust a komplex szam algebrai, valamint trigonometrikus alakjanak megadasara. Keszitsunk eljarasokat, fuggvenyeket a ketfele tipus kozotti konvertalasra, valamint algebrai alaku komplex szamok osszegzesere. */ #include #include #define M_PI 3.1415 typedef struct { float Re, Im; }TALG; typedef struct { float R, szog; }TTRIG; void TrigbolAlg(TTRIG zt, TALG * za) { (*za).Re= zt.R*cos(zt.szog); (*za).Im= zt.R*sin(zt.szog); } void AlgbolTrig(TALG za, TTRIG * zt) { (*zt).R= sqrt(za.Re*za.Re+za.Im*za.Im); (*zt).szog= atan2(za.Im,za.Re); } void OsszegAlg(TALG z1be, TALG z2be, TALG * zki) { zki->Re= z1be.Re+z2be.Re; zki->Im= z1be.Im+z2be.Im; } TTRIG zt; TALG za1,za2; int main() { puts("Atalakitasok es muveletek komplex szamokkal\n"); puts("Add meg a komplex szamokat!\n"); printf("za1.Re= "); scanf("%f",&za1.Re); printf("za1.Im= "); scanf("%f",&za1.Im); printf("za2.Re= "); scanf("%f",&za2.Re); printf("za2.Im= "); scanf("%f",&za2.Im); puts("\nAlgebrai alakbol Trigonometrikus: za1 -> zt"); AlgbolTrig(za1,&zt); printf("zt.R= %10.4f ",zt.R); printf("zt.szog= %10.4f fok\n\n",zt.szog*180/M_PI); puts("Trigonometrikus alakbol Algebrai: zt -> za1"); TrigbolAlg(zt, &za1); printf("za1.Re= %10.4f ",za1.Re); printf("za1.Im= %10.4f",za1.Im); puts("\n\nza1 es za2 osszegzese za1-ben"); OsszegAlg(za1, za2, &za1); printf("za1.Re= %10.4f ",za1.Re); printf("za1.Im= %10.4f",za1.Im); puts("\n\n"); return 0; } /*========================================================================*/ /* 2. pelda: pelda enum tipus alkalmazasara. A program lanyok es fiuk egymas irant erzett rokonszenvenek ismereteben a jovore vonatkozo lehetosegeket prognosztizalja. Adott ket szimpatia matrix, az egyik a lanyok velemenyet adja meg a fiukkal kapcsolatban, a masik a fiuk velemenyet a lanyokkal kapcsolatban. Ez a velemeny a viszonytipus ertekkeszletenek (szimpatikus, kozombos, unszimpatikus) egyiket veheti fel. Adjuk meg azokat a lany-fiu parokat, melyek kolcsonosen szimpatizalnak, valamint azokat, ahol a szimpatia kozombosseggel talalkozik. Az egyik szimpatia matrix a kovetkezo: Adam,.....,fiu,....,Zoli __ __ Aliz I I I . I I I lany I --->szimpatikus I . I I . I I Zita I I -- -- A masik: Adam,.....,fiu,....,Zoli __ __ Aliz I I I . I V I lany I <---szimpatikus I . I I . I I Zita I I -- -- */ /* #include #include #include void randomize() {srand(time(0));} int random(int limit){return rand() % limit;} typedef enum szimpatiatip {szimpatikus, kozombos, unszimpatikus}; typedef enum lanytip {Aliz, Lia, Maya, Zita}; typedef enum fiutip {Adam, Laci, Feri, Peti, Zoli}; enum szimpatiatip LanyokVelemenye[Zita+1][Zoli+1], FiukVelemenye[Zita+1][Zoli+1]; enum lanytip lany; enum fiutip fiu; enum szimpatiatip szimpatia; char Lany[4][10]={"Aliz","Lia","Maya","Zita"}; char Fiu[5][10]={"Adam","Laci","Feri","Peti","Zoli"}; int main() { randomize(); puts ("Eselybecsles szimpatiabol\n"); puts("A szimpatiatomboket veletlen ertekekkel tolti fel a program\n\n"); for (lany=Aliz; lany<=Zita; lany= (enum lanytip)(lany+1)) for (fiu=Adam; fiu<=Zoli; fiu= (enum fiutip)(fiu+1)) { LanyokVelemenye[lany][fiu]= (enum szimpatiatip) random(3); FiukVelemenye[lany][fiu]= (enum szimpatiatip) random(3); } puts("Eselyek:\n"); for (lany=Aliz; lany<=Zita; lany= (enum lanytip)(lany+1)) for (fiu=Adam; fiu<=Zoli; fiu= (enum fiutip)(fiu+1)) { switch (LanyokVelemenye[lany][fiu]+FiukVelemenye[lany][fiu]) {case 1:printf("\n%s es %s kozott meg lehet valami", Lany[lany], Fiu[fiu]); break; case 0:printf("\n%s es %s kozott kolcsonos a szimpatia", Lany[lany], Fiu[fiu]); } } puts("\n\n"); return 0; } */ /* ----------------- Borlanc C verziók: --------------------*/ /* C++ stílusú komentekkel! */ /* #include #include #include // M_PI , atan2() miatt #define M_PI 3.1415 typedef struct { double re; double im;} T_ALG; typedef struct { double r; double fi;} T_TRIG; T_ALG z1a,z2a; T_TRIG z1t,z2t; void AlgbolTrig(T_ALG zbe, T_TRIG * zki) {(*zki).r= sqrt(zbe.re*zbe.re+zbe.im*zbe.im); (*zki).fi= atan2(zbe.im, zbe.re); //az atan2 360 fokos arcus tangens fv, szog helyett a bemeno //parameterek a vektor vegpont koordinatai, y es x sorrendben. } void TrigbolAlg(T_TRIG zbe, T_ALG * zki) { zki->re= zbe.r*cos(zbe.fi); zki->im= zbe.r*sin(zbe.fi); } void OsszegAlg(T_ALG z1be, T_ALG z2be, T_ALG* zki) { zki->re= z1be.re+z2be.re; zki->im= z1be.im+z2be.im; } int main() { puts(" Komplex szamok\n"); printf("\n z1a valos resze= "); scanf("%lf",&z1a.re); printf(" z1a imaginarius resze= "); scanf("%lf",&z1a.im); printf("\n z2a valos resze= "); scanf("%lf",&z2a.re); printf(" z2a imaginarius resze= "); scanf("%lf",&z2a.im); AlgbolTrig(z1a,&z1t); printf("\n z1t sugara= %10.1f, szoge= %10.3f radian, %6.2f fok", z1t.r, z1t.fi, z1t.fi*180/M_PI ); OsszegAlg(z1a,z2a,&z2a); printf("\n z1a+z2a valos resze= %10.3f, kepzetes resze= %10.3f", z2a.re,z2a.im); TrigbolAlg(z1t,&z1a); printf("\n Az oda-vissza konvertalassal kapott z1a.re= \ %10.3f, z1a.im= %10.3f", z1a.re, z1a.im); return 0; } */ /* #include #include #include typedef enum lanytip {Aliz, Ica, Eva, Zita}; typedef enum fiutip {Adam,Laci,Pista,Feri,Zoli}; typedef enum viszonytip {szimpatikus, kozombos, unszimpatikus}; const char L[4][5]={"Aliz","Ica","Eva","Zita"}, F[5][6]={"Adam","Laci","Pista","Feri","Zoli"}; enum viszonytip lanyok_velemenye[Zita+1][Zoli+1], fiuk_velemenye[Zita+1][Zoli+1]; enum viszonytip viszony; enum fiutip fiu; enum lanytip lany; int veletlenszam; void main() { clrscr(); puts("Eselybecsles szimpatiabol\n"); //Szimpatiatombok feltoltese veletlenszeruen: randomize(); for (lany=Aliz; lany<=Zita; lany++) for (fiu=Adam; fiu<=Zoli; fiu++) {veletlenszam= random(3); // 0,1,2 lanyok_velemenye[lany][fiu]= (enum viszonytip) veletlenszam; //vagy egyszeruen: veletlenszam. veletlenszam= random(3); fiuk_velemenye[lany][fiu]= (enum viszonytip) veletlenszam; } //Eselybecsles: for (lany=Aliz; lany<=Zita; lany++) for (fiu=Adam; fiu<=Zoli; fiu++) switch (lanyok_velemenye[lany][fiu]+fiuk_velemenye[lany][fiu]) {case 1:printf("\n%s es %s kozott meg lehet valami", L[lany], F[fiu]); break; case 0:printf("\n%s es %s kozott kolcsonos a szimpatia", L[lany], F[fiu]); } getch(); } */