ZER DAKIDAN: Badakit testu bat pantailan idazten. Badakit aldagaien balioak teklatuz irakurtzen eta zenbakizko datuekin eragiketa matematikoak egiten. Baina, edozein datuekin programaren agindu guzti-guztiak exekutatzen dira. ZER IKASIKO DUDAN: Erabakiak hartzen ikasiko dut. Horrela, datuaren arabera programaren agindu batzuk exekutatuko dira ala ez. Adibide honetan baldintzazko if agindua ikasiko dut eta do-while agindu errepikakorra ikasiko dut. Bide batez, aldagai baten balio nola behartu (edo derrigortu) ikasiko dut. |
ESKATZEN DEN PROGRAMA
ADI!2. astea | radianak bihurtu gradu-minutu-segundo ariketa hau eta Ariketa 11 | Segundoen kopuruak desberdinak dira, batean abiapuntuko datua float datu-motakoa delako eta bestean short/int datu-motakoa delako. |
rRadianak aldagaiak angelu baten radianak gordeko ditu, teklatuaren bitartez irakurriko den angelua hain zuzen ere. Radianetan datutzat aukeratu den angeluari dagozkion gradu, minutu eta segundo kalkulatuko dituen programa idatzi.
![]() |
Sarrerako datua radianetan 0.0 eta PI/2 artekoa izango da |
Sarrerako datua zenbaki erreala izango da, erreala eta positiboa. Graduak eta minutuak zenbaki osoak izango dira, eta segundoak zenbaki erreala izango da (segundoak zenbaki osoa balitz doitasuna gal daiteke).
Hauxe izan daiteke Ariketa-12_RadianakBihurtu.cbp proiektua exekutatzean lortzen den irteeraren bat:
![]() |
fMinutuak aldagaiaren edukia behartu da iMinutuak aldagaian gordetzera. Horretarako, (int) marka erabili da |
Zergatik angeluak neurtzeko gradu-minutu-segundo unitateak erabiltzen dira? Besterik gabe ohitura delako, Orduak banatzerakoan minutuak eta segundoak darabilkigun formatuaren arrazoi historiko beragatik.
/* Ariketa-12_RadianakBihurtu: erreal baten zati osoa eta zati hamartarra */ // Lehen koadranteko angelua radianetan adierazten duen // zenbaki erreal positiboa gradu-minutu-segundo formatura igaro. // Zenbaki erreal baten behartzea-derrigortzea aplikatuko dugu osoko bat lortzeko. #include <stdio.h> #define PI 3.141592653 int main() { float fRadianak; // teklatuz irakurriko den datua radianetan float fDatuaGradutan; // teklatuz irakurriko den datua graduetan int iGraduak; // emaitzaren zati bat float fHondarra; // zenbaki errealaren alde dezimala float fMinutuak; int iMinutuak; // emaitzaren zati bat float fSegundoak; // emaitzaren zati bat printf("\n"); do { printf("\n Eman lehen koadranteko angelua radianetan: "); scanf("%f", &fRadianak); if ((fRadianak < 0.0) || (fRadianak >= PI/2)) printf("\n\a Angeluaren behemuga 0.0 radian eta goimuga %f radian", PI/2); } while ((fRadianak < 0.0) || (fRadianak >= PI/2)); fDatuaGradutan = fRadianak*360/(2*PI); printf("\n fDatuaGradutan = %9.6f", fDatuaGradutan); iGraduak = (int)fDatuaGradutan; printf("\n iGraduak = %2d", iGraduak); fHondarra = fDatuaGradutan - iGraduak; printf("\n fHondarra = %9.6f", fHondarra); fMinutuak = 60*fHondarra; printf("\n fMinutuak = %9.6f", fMinutuak); iMinutuak = (int)fMinutuak; printf("\n iMinutuak = %2d", iMinutuak); fHondarra = fMinutuak - iMinutuak; printf("\n fHondarra = %9.6f", fHondarra); fSegundoak = 60*fHondarra; printf("\n fSegundoak = %9.6f", fSegundoak); printf("\n\n %f radian = %02d:%02d:%f gradu-minutu-segundo", fRadianak, iGraduak, iMinutuak, fSegundoak); printf("\n\n"); return 0; }
|
iruzkinik ez:
Argitaratu iruzkina