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

Ariketa 18 | switch: Aukera anitzen arteko hautapena

ZER DAKIDAN:
if baldintzazko egitura eta if-else baldintzazko egitura menperatzen ditut.



ZER IKASIKO DUDAN:
Aldagai aukeratzailea zenbaki oso bat izanik, switch baldintzazko egitura ikasiko dut.

Ariketa 13 | Ekuazioa sistema artikulua edo Ariketa 14 | Bigarren graduko ekuazioa artikulua gogora ekarriz, programaren fluxua desbideratu daiteke if agiduari esker eta if-else aginduari esker. Baina fluxuaren aukerak hiru edo gehiago direnean switch kontrol-agindua erabil daiteke.



ESKATZEN DEN PROGRAMA

Demagun lurrazaleko lau leku ditugula, bakoitza hemisferiko banakoa. Lau lekuak hauek dira: 1 Adelaide, 2 Brasilia, 3 Calgary eta 4 Donetsk. Lau leku horiek zenbaki oso baten bitartez identifikatuko ditugu. Zenbaki identifikatzailea teklatuz irakurri eta balioaren arabera, lurrazaleko lekuari dagokion informazioa pantailaratu:



  1 identifikatzailea:
Adelaide
Latitudea: -34.927499
Longitudea: 138.600000
Hego-Ekialdeko hemisferioa

  2 identifikatzailea:
Brasilia
Latitudea: -15.793889
Longitudea: -47.882778
Hego-Mendebaldeko hemisferioa

  3 identifikatzailea:
Calgary
Latitudea: 51.047500
Longitudea: -114.062500
Ipar-Mendebaldeko hemisferioa

  4 identifikatzailea:
Donetsk
Latitudea: 48.008889
Longitudea: 37.804167
Ipar-Ekialdeko hemisferioa


Exekuzioan 1 zenbakia aukeratzean lortzen dena

Exekuzioan 4 zenbakia aukeratzean lortzen dena


LASTER ESKATUKO DEN PROGRAMA

char datu mota ikasiko dugunean, sarrerako datua zenbaki bat izan ordez karaktere bat izango da: A Adelaide, B Brasilia, C Calgary eta D Donetsk. Beraz, ataria identifikatzeko sarrerako datua A, B, C edo D letrak izango dira. Bide batez, laster eskatuko den programa horretan, system("cls") aginduaren bitartez, pantaila garbitzen ikasiko dugu ere.

Esan bezala, switch batean aukeratzailea balio diskretua izango da beti, ikusi zer gertatzen den 1 eta 2 arteko balio zatigarria aukeratzen bada:




switch baldintzazko aginduak aldagai aukeratzaile bat darabil eta aukeratzaile hori datu-mota ordinal bat izango da (zenbaki osoa adibidez edo karakterea adibidez). Sintaxiari dagokiolarik, switch kontrol-aginduan break bati esker bukatzen da agindua hurrengo aukerak ebaluatu gabe.

Ebaluazio baten nota adierazten duen zenbaki osoa irakurri ondoren dagokion hitzezko kalifikazioa pantailaratu:
Hau da Ariketa-18a_AukeraAnitzenArtekoHautapena.cbp proiektuaren iturburu-programa



Ebaluazio baten nota adierazten duen zenbaki ez-osoa irakurri eta dagokion hitzezko kalifikazioa pantailaratu:
Ariketa-18b1_AukeraAnitzenArtekoHautapena.cbp proiektuaren kodea non esparruak mugatzeko baldintza konposatua daukaten hainbat if kontrol-egiturak erabiltzen diren

Goian erakutsi den Ariketa-18b1_AukeraAnitzenArtekoHautapena.cbp proiektuaren baldintza konposatuak sahiestu ahal izateko if-else sorta bat kateatuz lor daiteke; esate baterako, Ariketa-18b2_AukeraAnitzenArtekoHautapena.cbp proiektuan egiten den bezala. Lehen if-aren bitartez behemuga zaintzen da eta azken else-aren bitartez goimuga zaintzen da, tartean dauden else if bikoteak bloke bana definitzen du. Kodea ikusi:

/* Ariketa-18b2_AukeraAnitzenArtekoHautapena: Zenbaki errealekin,
                                              kalifikazioak pantailaratu. */

// switch kontrol-agindua ezin daiteke erabili aldagai aukeratzailea
// float bat delako, horregatik if-else kateatuekin programatuko da.


#include <stdio.h>

#define NOTAMINIMOA 0.0
#define NOTAMAXIMOA 10.0

int main()
{
    float fNota;

    printf("\n");

    printf("\n Notari dagokion zenbakia eman");
    printf(" (0.0 eta 10.0 arteko datua): ");
    scanf("%f", &fNota);

    if (fNota <= 0.0)
        printf("\n Nota %.1f eta %.1f artean egongo da!", NOTAMINIMOA, NOTAMAXIMOA);
    else if (fNota < 3.0)
        printf("\n %.2f puntu | Oso txarto!", fNota);
    else if (fNota < 5.0)
        printf("\n %.2f puntu | Txarto!", fNota);
    else if (fNota < 6.0)
        printf("\n %.2f puntu | Nahiko!", fNota);
    else if (fNota < 7.0)
        printf("\n %.2f puntu | Ondo!", fNota);
    else if (fNota < 9.0)
        printf("\n %.2f puntu | Oso ondo!", fNota);
    else if (fNota <= 10.0)
        printf("\n %.2f puntu | Bikain!", fNota);
    else  // bestelako daturik ematean
        printf("\n Nota %.1f eta %.1f artekoa izango da!", NOTAMINIMOA, NOTAMAXIMOA);

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






  • Ariketa-18_MenuBat.cbp | main.c  
  • Ariketa-18a_AukeraAnitzenArtekoHautapena | main.c  
  • Ariketa-18b1_AukeraAnitzenArtekoHautapena | main.c  
  • Ariketa-18b2_AukeraAnitzenArtekoHautapena | main.c  

 

iruzkinik ez:

Argitaratu iruzkina