Aktív témák

  • vanek

    tag

    A feladat:

    van egy etr azonosítom, + jel, hogy jelen volt "-" hogy nem volt jelen az orán és van 3 zh pontszám..

    a problémám pedig az lenne, hogy kiderítsem, hogy a 3 szám közül melyik 2 a legnagyobb..az első kettő blokk jól működik..vagyis ami példákat néztem, azok jók voltak..

    viszont a 3 blokkban, ahol, az 1. és a 2. szám a legnagyobb,
    a 2. szám a legnagyobb és a másik kettő egyenlő valamint a 2. és a 3. szám a legnagyobb

    ha ezekre adok példát, akkor valami miatt a második blokk

    if(a[17] > a[18])

    részénél leragad..sőt nem is jó eredményt ad..

    #! /bin/awk -f
    BEGIN {
    split("NAGRAAT.SZE + + + + - - + + + + + + + + 5 6 5", a, " ")
    max1=a[16]+a[17]
    max2=a[16]+a[18]
    max3=a[17]+a[18]

    if (a[16] > a[17])
    {
    if(a[17] > a[18])
    {
    if(max1 >= 10)
    {
    print a[1]"vizsgazhat1+2elso"
    }
    else
    {
    print a[1] "nem vizsgázhat"
    }
    }else
    {
    if (a[16] >= a[18])
    {
    if (max2>=10)
    {
    print a[1] " vizsgazhat1+3elso"
    }
    else
    {
    print a[1] "nem vizsgazhat"
    }
    }
    else
    {
    if (max2>=10)
    {
    print a[1] "vizsgazhat11+3elso"
    }else
    {
    print a[1] "nem vizsgázhat"
    }
    }
    }
    }
    else if (a[16] = a[17])
    {
    if(a[17] > a[18])
    {
    if(max1>=10)
    {
    print a[1]"vizsgazhat1+2masodik"
    }
    else
    {
    print a[1] "nem vizsgázhat"
    }
    }else
    {
    if (a[16] >= a[18])
    {
    if (max2>=10)
    {
    print a[1] " vizsgazhat1+3masodik"
    }
    else
    {
    print a[1] "nem vizsgazhat"
    }
    }
    else
    {
    if (max2>=10)
    {
    print a[1] "vizsgazha11+3masodik"
    }else
    {
    print a[1] "nem vizsgázhat"
    }
    }
    }
    }
    else
    {
    if (a[16] >= a[18])
    {
    if (max1 >=10)
    {
    print a[1]"vizsgazhat1+2"
    }else
    {
    print a[1] " nem vizsgázhat"
    }
    }else
    {
    if (a[16] = a[18])
    {
    if (max3 >=10)
    {
    print a[1] " vizsgazhat 2+1=3"
    }else
    {
    print a[1] " nem vizsgazhat"
    }
    }else
    {if(max3>=10)
    {
    print a[1]" vizsgazhat 2+3"
    }else
    {
    print a[1] "nem vizsgazhat"
    }
    }
    }
    }

    }

    köszi előre is..minden segítséget elfogadok!

  • Chipi333

    csendes tag

    válasz vanek #1 üzenetére

    Nem különösebben értek az AWK-hoz, az viszont biztos, hogy túlbonyolítod. Ha úgyis kiszámoltad max1, max2, max3-at akkor elég megézni hogy ezekből melyik a legnagyobb és akkor már tudod, hogy az a 2 szám volt a nagyobb amelyikekből azt összeraktad, és akkor erre a végtelen if-else fára nincs is szükség. És valszeg a problémád is megszűnik :)

  • vanek

    tag

    válasz Chipi333 #2 üzenetére

    Köszi :D így máris jó lett és rövidebb is lett :D jóval!!

    ezer hála! :)

    Üdv

  • vanek

    tag

    válasz vanek #3 üzenetére

    Sajna linuxban nem nagyon vagyok jó.. így cygwin segítségével csináltam meg a szkriptet..de a feladat azt írja, hogy

    $ ./vizsgaztato.awk pontszamok.txt így kell futtatni..

    a pontszamok.txt tárolja "NAGRAAT.SZE + + + + - - + + + + + + + + 5 6 5" ezt..

    hogy tudom beolvastatni a sorokat?:\

    köszi

Aktív témák