2024(e)ko abenduaren 1(a), igandea

Ariketa 15 | Triangeluaren azalera (hasiera)

ZER DAKIDAN:
printf() eta scanf() funtzioak menperatzen ditut. Programan bideak aukeratzeko if agindua ikasi dut ere.



ZER IKASIKO DUDAN:
Aurrera jo baino lehen, if baldintzako kontrol-agindu erabiliko dut programa handiago batean. Planteamendua ikusi Ariketa 15 | Triangeluaren azalera (hasiera) artikulu honetan eta programa aztertu Ariketa 16 | Triangeluaren azalera artikuluan.


XOY lehen koadranteko triangelu bat bere ABC erpinen bitartez definiturik dator (erpinen koordenatuak zenbaki errealak dira). A puntua eta B puntua lotzen dituen AB lerroa ez da bertikala ezta horizontala, eta C puntua ez dago kokaturik AB lerroan. Datuak:
  • A eta B puntuak AB zuzena lortzeko, AB zuzena zeiharra izango da (ez bertikala, ez horizontala)
  • C puntua AB segmentuaren zuzenetik kanpo dago

Algoritmoa:
  1. Emanik A puntua eta B puntua, AB zuzena lortu
  2. Emanik C puntua, AB zuzenaren perpendikularra C puntuan lortu
  3. AB zuzena eta bere perpendikularra C puntuan ditugula, lerro biren ebakidura kalkulatu (P puntua lortu)
  4. Erpinen arteko AB distantzia eta puntuen arteko CP distantzia kalkulatu ondoren azalera zehaztu
Ariketaren urratsak ikusteko Ariketa 16 | Triangeluaren azalera artikulua aztertu.

Goian erakutsi den algoritmoaren 1. urratsa erakusten da programa hasiera honetan. Emanik A puntua eta B puntua, AB zuzena lortu:

/* Ariketa-15_Triangelua: A eta B puntuak emanik, dagokien zuzenaren ekuazioa y=mx+n lortu.  */

// A eta B bi puntu desberdin eman (jakinik ez direla bertikal berean egongo
// ezta horizontal berean) eta dagozkien zuzenaren ekuazioa y = mx + n lortu.

#include <stdio.h>

int main()
{
    float fAx, fAy, fBx, fBy;
    // float fMalda, fDesplazamendua;

    printf("\n");
    // A puntua lehen koadrantekoa da
    do
    {
        printf("\n A puntua:");
        printf("\n OXY lehen koadrantean lan eginez...\n");
        printf(" Eman A puntuaren x koordenatua: ");
        scanf("%f", &fAx);
        printf(" Eman A puntuaren y koordenatua: ");
        scanf("%f", &fAy);
        if (fAx < 0.0 || fAy < 0.0)   // A-ren bi koordenatuak positiboak izan behar dira
        {
            printf(" A puntuaren bi koordenatuak positiboak izan behar dira\n");
            if (fAx < 0.0)
                printf(" A puntuaren x koordenatua ezin daiteke negatiboa izan\n");
            if (fAy < 0.0)
                printf(" A puntuaren y koordenatua ezin daiteke negatiboa izan\n");
        }
    } while (fAx < 0.0 || fAy < 0.0);

    printf("\n");
    // B puntua ere lehen koadrantekoa izango da eta horrez gain
    // B puntua eta A puntua "diagonal" batean egongo dira kokaturik
    do
    {
        printf("\n B puntua:");
        printf("\n OXY lehen koadrantean jarraituz...\n");
        printf(" Eman B puntuaren x koordenatua: ");
        scanf("%f", &fBx);
        printf(" Eman B puntuaren y koordenatua: ");
        scanf("%f", &fBy);

        if (fBx < 0.0 || fBy < 0.0)     // B-ren bi koordenatuak positiboak izan behar dira
            printf(" B puntuaren bi koordenatuak positiboak izan behar dira\n");
        if (fAx == fBx && fAy == fBy)   // A eta B bat dira?
            printf(" A eta B ezin dira bat izan\n");
        else if (fAx == fBx)
                printf(" AB segmentua ezin daiteke bertikala izan\n");
        else if (fAy == fBy)
                printf(" AB segmentua ezin daiteke horizontala izan\n");
    } while (fBx < 0.0 || fBy < 0.0 || fAx == fBx || fAy == fBy);

    printf("\n\n");

    // A eta B ezagunak direla, AB segmentuari dagokion r zuzenaren bi
    // parametroak kalkulatu:
    //                          fMalda := _______________;
    //                          fDesplazamendua := ___________;

    // ALGORITMO OSOA:
    //    1.  Emanik A puntua eta B puntua, AB zuzena lortu
    //    2.  Emanik C puntua, lortu AB zuzenaren perpendikularra C puntuan
    //    3.  AB zuzena eta bere perpendikularra C puntuan ditugula, lerro
    //        biren ebakidura kalkulatu (P puntua lortu)
    //    4.  Erpinen arteko AB distantzia eta puntuen arteko CP distantzia
    //        kalkulatu ondoren azalera zehaztu

    printf(" fMalda eta fDesplazamendua kalkulatu...\n");

    printf("\n");
    return 0;
}


  • Ariketa-15_Triangelua.cbp | main.c  

 

iruzkinik ez:

Argitaratu iruzkina