Keresés

Új hozzászólás Aktív témák

  • dabadab

    titán

    válasz #36268800 #5230 üzenetére

    "A kérdésem az volna ezzel kapcsolatban, hogy mi a különbség az egyszerű "if" és az "else-if" között?"

    Az, hogy sima if-eknél (megfelelő feltételek esetén) a program akár az összes if-be belemehet, if-else-eknél viszont legfeljebb csak egybe. Neked itt pont az else-if kell, mert egymást kölcsönösen kizáró feltételeid vannak.

    "Esetleg valamelyik gyorsabban lefut?"

    Ez is benne van, ha if-else-eknél belemegy valamelyik ágba, akkor utána a komplett blokk végére ugrik, nem nézi meg a többi feltételt. Mondjuk ez olyan különbség, ami tipikusan olyan kicsi, hogy mérések sem mutatják ki.

    "A Microsoft Visual Studio-t használom, hol találom benne a program gyorsaságát?"

    VS 2013-ban van profiler, de őszintén szólva nem hiszem, hogy jelenleg neked erre bármi szükséged lenne. Az ekkora programok futási ideje bőven mérési hibán belül van.

    "Mi a véleményetek a kódom tagoltságáról?"

    Így azért jóval olvashatóbb (ez az else-if szokásos írásmódja):

    int main(void)
    {
    float num1, num2;

    printf("Enter two numbers\nFirst: "); scanf("%f", &num1);
    printf("Second: "); scanf("%f", &num2);
    if (num1 == num2)
    {
    printf("They are equal: %f = %f", num1, num2);
    }
    else if (num1 > num2)
    {
    printf("They are not equal, %f > %f", num1, num2);
    }
    else
    {
    printf("They are not equal, %f < %f", num1, num2);
    }
    getch();
    return 0;
    }

    Ezen túlmenően ekkora kódnál azért különösebb tagoltságról nem lehet beszélni :)

    ÁLtalános megjegyzésként még annyi, hogy lebegőpontos számoknál a == csak nagyon korlátozottan használható (itt mondjuk pont igen), mert ott a kerekítési hibák miatt előfordulhat, hogy két érték, aminek elméletben azonosnak kellene lennie, mégsem lesz pont ugyanannyi.

  • Ereshkigal

    őstag

    válasz #36268800 #5230 üzenetére

    Az else ág csak akkor hajtódik végre, ha az if-ben szereplő állítás hamis volt. Mivel itt egymást kizáró feltételek vannak, lehet külön is írni az if-eket, mindig csak egy lesz igaz, így mindkét esetben azt csinálja a program, amit szeretnénk, de az if-else megoldás a jobb (nem vizsgáljuk mindig mind a három feltételt feleslegesen).

Új hozzászólás Aktív témák

Hirdetés