2024(e)ko otsailaren 5(a), astelehena

3. astea | angelua 1. koadrantera eraman

Demagun angelu bat irakurriko dugula teklatuaren bitartez, bere balioa aldagai erreal batean gordez. Berdintsu litzateke angelua radianetan zein graduetan ematea, edozein modutan honelako lau egoera batean egongo ginateke:










Goiko irudi horietan erakusten den bezala, datua den angelua handia denean, hainbat bira eman ondoren koadranteren batean eroriko da. Datua den angeluaren baliokidea kalkulatzea helburutzat harturik, emaitza bi hauek zehaztu behar ditugu:
  • Teklatuz eman den angeluaren koadrantea
  • 1. koadranteko angelu efektiboa

Emaitza horiek lortzeko bidean, sarrerako datuak izan ditzakeen soberazko birak kentzea da lehen lana. Soberazko birak kendu ondoren jarraian erakusten diren egoerak izango genitzake. Non, sarrerako angeluaren koadrantea ezaguna delarik, helburuko angelu efektiboa kenketa batez kalkulatzen den:










Hona hemen balizko programaren irteera bat:


Eta hemen programaren kodea: 

{ -----------------------------------------------------------------------------
   Edozeien koadranteko angelua eman radianetan eta 1. koadranteko
   angelu baliokidea kalkulatu graduetan. Horrek esan nahi du emaitzak
   bi izango direla:
         - jatorrizko angeluaren koadrantea
         - 1. koadranteko angelu efektiboa 
  -----------------------------------------------------------------------------}

program Radianak_1_KoadranteraEraman;
var
   rDatuaRadianetan: real;      // datua (radianak)
   rDatuaGradutan: real;        // laguntzailea (datua gradutan)
   rItzuliKopurua: real;        // laguntzailea (itzuliak)
   rItzuliOsoak: real;          // laguntzailea (itzuli osoak ahaztu)
   rItzulienHondarra: real;     // laguntzailea (itzulien hondarra)
   rGraduMoldatuak: real;       // laguntzailea (hondarra gradutan)
   iKoadrantea: integer;        // emaitza
   rGraduEfektiboak: real;      // emaitza
   rSinua: real;                // laguntzailea
   rKosinua: real;              // laguntzailea
begin
   writeln;
   writeln('//////////////////////////////////////////////////////////////////////////');
   writeln;
    
   repeat
      writeln('Eman edozein koadranteko angelu positiboa radianetan, adibidez:');
      writeln('   32.76 radian badira, angelu efektiboa 1. koadrantekoa izango da');
      writeln('   34.43 radian badira, angelu efektiboa 2. koadrantekoa izango da');
      writeln('   28.31 radian badira, angelu efektiboa 3. koadrantekoa izango da');
      writeln('   31.24 radian badira, angelu efektiboa 4. koadrantekoa izango da');
      write('Radianak eman: ');
      readln(rDatuaRadianetan);
   until rDatuaRadianetan >= 0.0;
    
   writeln;
   writeln('-----Gradu Moldatuak kalkulatu-------------------------------------');
    
   writeln('rDatuaRadianetan = ':35, rDatuaRadianetan:0:5, ' radian');
    
   rDatuaGradutan := (rDatuaRadianetan*360)/(2*PI);
   writeln('rDatuaGradutan = ':35, rDatuaGradutan:0:5, ' gradu');
    
   rItzuliKopurua := rDatuaGradutan/360;
   writeln('rItzuliKopurua = ':35, rItzuliKopurua:0:5, ' itzuli');
    
   rItzuliOsoak := int(rItzuliKopurua);
   writeln('rItzuliOsoak = ':35, rItzuliOsoak:0:5, ' itzuli (itzuli osoak ahaztu)');
   
   rItzulienHondarra := frac(rItzuliKopurua);
   writeln('rItzulienHondarra = ':35, rItzulienHondarra:0:5, ' itzuli');
 
   rGraduMoldatuak := rItzulienHondarra*360;
   writeln('rGraduMoldatuak = ':35, rGraduMoldatuak:0:5, ' gradu');
    
   writeln;
   writeln('-----Koadrantea eta gradu efektiboak kalkulatu---------------------');
    
   if (rGraduMoldatuak < 90.0) and (rGraduMoldatuak >= 0.0) then
   begin
      iKoadrantea := 1;
      rGraduEfektiboak := rGraduMoldatuak;
   end;
       
   if (rGraduMoldatuak < 180.0) and (rGraduMoldatuak >= 90.0) then
   begin
      iKoadrantea := 2;
      rGraduEfektiboak := 180 - rGraduMoldatuak;
   end;
       
   if (rGraduMoldatuak < 270.0) and (rGraduMoldatuak >= 180.0) then
   begin
      iKoadrantea := 3;
      rGraduEfektiboak := rGraduMoldatuak - 180;
   end;
       
   if (rGraduMoldatuak < 360.0) and (rGraduMoldatuak >= 270.0) then
   begin
      iKoadrantea := 4;
      rGraduEfektiboak := 360 - rGraduMoldatuak;
   end;
 
   writeln('Koadrantea = ':35, iKoadrantea, '. koadrantea');
   writeln('rGraduEfektiboak = ':35, rGraduEfektiboak:0:5, ' gradu');
    
   writeln;
   writeln('-----Emaitzak konprobatu sin() eta cos() funtzioak aplikatuz-------');
    
   writeln('Datua den angeluaren sinua = ':35, sin(rDatuaRadianetan):8:5);
   rSinua := sin(rGraduEfektiboak*(2*PI)/360);
   if (iKoadrantea = 3) or (iKoadrantea = 4) then
      rSinua := -rSinua;
   writeln('Angelu efektiboaren sinua = ':35, rSinua:8:5);
   
   writeln('Datua den angeluaren kosinua = ':35, cos(rDatuaRadianetan):8:5);
   rKosinua := cos(rGraduEfektiboak*(2*PI)/360);
   if (iKoadrantea = 2) or (iKoadrantea = 3) then
      rKosinua := -rKosinua;
   writeln('Angelu efektiboaren kosinua = ':35, rKosinua:8:5);
    
   writeln;
   writeln('//////////////////////////////////////////////////////////////////////////');
    
   writeln; writeln; writeln; writeln;
   readln;
end.
 

iruzkinik ez:

Argitaratu iruzkina

Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.