Rekurzív pogram és grep
2008-10-22T19:42:52+02:00
2008-10-26T22:01:01+01:00
2022-06-29T09:55:37+02:00
  • Kedves Elvira,

    ket ok miatt "fujok" Nio-ra: 1. keszen varja a sultgalambot; 2. "tanarok hulyek, egyetem hulye, linux hulye, bash hulye"-attitude miatt. Nem akar erteni bash-hez, neki egyszeruen kene az a nyamvadt megoldas, hogy atmehessen ebbol a tantargybol.

    Minden esetre keves randabb nyelvet (vagy scriptet, vagy mi a szosz ez) lattam mint a bash.


    Sok nyelvhez kepest szerintem is randa meg fura, es nekem sem ment startbol. Szerintem neki sem ez lenne az elso programozasi nyelve (allitolag ert C++-hoz), es szerintem nem tegnaprol mara kellett megoldania ezt a feladatot 0 bash tudassal... Az, hogy ide jon panaszkodni a xar helyzeterol, engem nem hat meg.
    Mutasd a teljes hozzászólást!
  • Megpróbáltam, levettem egészen addig amíg csak \ maradt a csillag előtt, de nem ment. Viszont nem csináltam végig vele azt, amit az előzővel Vi-n keresztül.

    Köszönöm, hogy ennyire segítőkész és megértő vagy velem - egy a bash-hez és a linuxhoz abszolút kezdővel -, Elvira.
    Mutasd a teljes hozzászólást!
  • Kedves Klorand,

    mi eddig eleg joban voltunk es remelem ezutan sem valtozik a helyzet, de nem igazan ertem miert fujsz ily erossen Nio-ra. Par eve programozom, egy darabig voltam az embedded vilagban is, bar linux csak erintolegesen volt, de egy ket toolt hasznaltam elsosorban cygwin alol. Minden esetre keves randabb nyelvet (vagy scriptet, vagy mi a szosz ez) lattam mint a bash. Es mit mondjak egy kezdonek nem bisztos, hogy ezt a nyelvet adnam oda, hogy na nesze hasznald, elvezd, tanulj... bar bisztos sok linux guru nem igy gondolja... En spec NI Labview-val kezdtem programozoi palyafutasomat
    Mutasd a teljes hozzászólást!
  • Egyébként, ha nem sikerül egy működőképes progit összehozni megbukok a tárgyból.


    Remelem, hogy egy cm-el sem kerulsz kozelebb az oklevelhez, amig nem valtoztatsz a hozzaallasodon!

    Szerk: ha jol fizetsz, megirom neked! Amikor megkaptam a pizt, megy a kod! Ajanlatot privibe tegyel!

    Szerk2: igen, ezzel a szerkkel ellentmondtam magamnak. Csak azert, hogy ne mas vegye eszre!
    Mutasd a teljes hozzászólást!
  • Egyébként, ha nem sikerül egy működőképes progit összehozni megbukok a tárgyból. Amit meg is értenék, ha az lenne a neve, hogy "Linux programozás". De nem, valáójában - hivatalos tantárgy kiírás szerint - Operációs Rendszerek (ergo nem linux nem windows hanem az összes oprendszer).
    Mutasd a teljes hozzászólást!
  • a csillag elott a \\-ek szama sok, valtoztatgasd addig amig csak \* marad a replace utan...
    Mutasd a teljes hozzászólást!
  • Most próbálom a legutóbbi forráskódod, Elvira.

    Nekem ezt adja ki:

    ./expr2 "(3+4)*(4-6)"

    a beadott egyenlet:
    -------
    (3+4)*(4-6)

    korbevesszuk spacekkal a +,-,\ operatorokat
    ------
    s/\([+,-,\/,(,)]\)/\ \1\ /g
    ( 3 + 4 ) * ( 4-6 )

    lecsereljuk a * operatort \a-ra
    ----------------
    s/\*/\ \\\\\*\ /g
    ( 3 + 4 ) \\* ( 4-6 )

    lecsereeljuk az esetleges kettos spaceokat
    -----------------
    s/\ \ /\ /g
    ( 3 + 4 ) \\* ( 4-6 )

    az eredmeny:
    --------------
    expr: syntax error
    Mutasd a teljes hozzászólást!
  • Feladom, nincs otlet, mar igy is tobb idot oltem a temaba, mint amennyit valaha is megerdemelne.

    TanarUr csak egy kettest adjon es mar itt sem vagyok!
    Mutasd a teljes hozzászólást!
  • Én tudom, hogy az expr-rel is lehet zárójelezni, de nekem az a feladatom , hogy készítsek egy olyan programot, ami képes a zárójelezést így megoldani azt expr-rel;
    hogy az egyszerre csak két számmal számoljon.
    Mutasd a teljes hozzászólást!
  • No hat sajna el volt cseszve vmi:


    #!/bin/bash echo "" echo "a beadott egyenlet:" echo "---------------------------------------" echo "$1" echo "" echo "korbevesszuk spacekkal a +,-,\ operatorokat" echo "---------------------------------------" SED="s/\([+,-,\/,(,)]\)/\ \1\ /g" echo $SED res=`echo $1 | sed "$SED"` echo "$res" echo "" echo "lecsreljuk a * operatort \*-ra" echo "---------------------------------------" SED='s/\*/\ \\\\\*\ /g' echo $SED res=`echo "$res" | sed -e"$SED"` echo "$res" echo "" echo "lecsereljuk az esetleges kettos spacekat" echo "---------------------------------------" SED='s/\ \ /\ /g' echo $SED res=`echo "$res" | sed -e"$SED"` echo "$res" echo "" echo "az eredmeny:" echo "---------------------------------------" expr $res echo ""

    a fentit probald ki legyszi.

    Egy futtatas eredmenye:

    bash-3.2$ ./proba "(3+2)*(1+1)"

    a beadott egyenlet:
    ---------------------------------------
    (3+2)*(1+1)

    korbevesszuk spacekkal a +,-,\ operatorokat
    ---------------------------------------
    s/\([+,-,\/,(,)]\)/\ \1\ /g
    ( 3 + 2 ) * ( 1 + 1 )

    lecsreljuk a * operatort \*-ra
    ---------------------------------------
    s/\*/\ \\\\\*\ /g
    ( 3 + 2 ) \* ( 1 + 1 )

    lecsreljuk az esetleges kettos spacekat
    ---------------------------------------
    s/\ \ /\ /g
    ( 3 + 2 ) \* ( 1 + 1 )

    az eredmeny:
    ---------------------------------------
    10
    bash-3.2$
    Mutasd a teljes hozzászólást!
  • Az egyik hexa 60 a masik hexa 27. A masodik a jo az elso nem.

    No de valszeg nem ez a baj. legyszives probald ki ugy, hogy szorzas jelet (*) nme hasznalsz,pl (3+2)-(1+1)
    Mutasd a teljes hozzászólást!
  • az melyik laptopon? XD nekem az enter mellett nincs ilyesmi.
    Mutasd a teljes hozzászólást!
  • az nem jo, az enter melett levovel hasznald, angol billentyun amin a " is van. Billemtyu -> ', shift+ billentyu -> "

    Elvira
    Mutasd a teljes hozzászólást!
  • azok szimpla ' (shift+1)
    Mutasd a teljes hozzászólást!
  • Csillagot ne tartalmazzon az egyenlet!

    Azzal van ugyanis a baj ez latszik.

    Tovabba a ' az milyen karakter ` vagy ', balra vagy jobbra idezojel?
    Mutasd a teljes hozzászólást!
  • "
    ezt rekurzívan kellen véghezvinnie tetszőleges zárójelezéssel
    ", a sed+expr nem rekurzív ...
    Mutasd a teljes hozzászólást!
  • prcoaag@moria:~$ ./veg '(3-4)*(6+9)'
    s/\([+,-,\/,(,)]\)/\ \1\ /g
    ( 3-4 ) 1 2.sh a.out a.txt bell.sh b.sh calc.sh cat cntr.sh diskmeret.sh d.sh e.sh funct.sh grappler hazi hazi1.sh hazi2 hazi2.sh hazi3 hazi.sh hesna hm.sh lk ma myscript.sh nagy_diskhasznalok.sh op.html op.txt pcsaba.txt pl1.c rt.sh tmpfile try.sh valami.txt van.sh vari.sh veg vmi.sh w webcrawler wget-log www.altermeta.net ( 6 + 9 )
    ( 3-4 ) 1 2.sh a.out a.txt bell.sh b.sh calc.sh cat cntr.sh diskmeret.sh d.sh e.sh funct.sh grappler hazi hazi1.sh hazi2 hazi2.sh hazi3 hazi.sh hesna hm.sh lk ma myscript.sh nagy_diskhasznalok.sh op.html op.txt pcsaba.txt pl1.c rt.sh tmpfile try.sh valami.txt van.sh vari.sh veg vmi.sh w webcrawler wget-log www.altermeta.net ( 6 + 9 )
    expr: syntax error


    ezt adja ki arra, ha beírom az általad adott kódot és elvégzem a sorvég cserét, amit mutattál. Az a sok cucc a könyvtár tartalma amiben dolgozom. valamiért nem védte meg a shelltől a csillagot.
    Mutasd a teljes hozzászólást!
  • probald ki, hogy a masodik sed-es parancsot kommentezd ki, es ne adj be *-t tartalmazo egyenletet, akkor mukodik-e?

    Vagy mutasd mit ir ki az eredeti program futasa kozbe...
    Mutasd a teljes hozzászólást!
  • Nem, továbbra sem ismeri fel numerikus argumentumként az expr amit beleküldtünk a $res-sel. :(

    Talán a második sed sornál van a gond, de azt nem tudom, hogy pontosan mi.
    Arra gondoltam, hogy talán, azzal hogy levádjük a *-ot teszünk elé egy \-t és talán azzal együtt kapja meg az expr.
    Mutasd a teljes hozzászólást!
  • elindulni elindul, de nem azt adja eredményül amit kellene.
    az expr-nél bukuk el a dolog.
    De teszek még egy próbát a módosított záró paranccsal.
    Mutasd a teljes hozzászólást!
  • Bocs a vi tenyleg nem ismeri a :qw-t, de a :wq-t igen (write, quit).

    A bash-hez elvileg jónak kell lennie az elérési útnak, mert - miután elvégeztem am it mondtál és :exit-tel léptem ki - elindult és le is futott a progi.


    Na akkor most megy vagy nem megy?
    Mutasd a teljes hozzászólást!
  • Nem megy.
    Az expr nem numerikus értéket kap. Vagy, syntax error, a \-ekből marad bent amikor a váltózót átadjuk az expr-nek.

    A Vi nem ismeri a :qw parancsot. AMikor beírtam man vi akkor a Vim -hez tartozó man oldal jött be. Talán mégis a különbséggel van a baj? A bash-hez elvileg jónak kell lennie az elérési útnak, mert - miután elvégeztem am it mondtál és :exit-tel léptem ki - elindult és le is futott a progi.
    Mutasd a teljes hozzászólást!
  • no havernal linuxon kiprobaltuk, ugyanazt a hibauzanatet kapta mint te....

    Lecsereltuk a \n-t \r -re es maris mukodott, a sorveget csereld le az a baj.

    hogyan:

    vi fajlnev (megnyilik a vi benne a cucc)
    :%s/\n/\r/gc (begepeled enter)
    a (begepled eneter)
    :qw (begepeld enter)

    keszen vagyunk lehet probalni

    Elvira

    ui: meg az lehet hogy mas az eleresi ut a bash-hoz, nem /bin/bash...
    Mutasd a teljes hozzászólást!
  • Azok stimmelnek. A kommenteket hagytam ki belőle, de úgy sem megy.
    Mutasd a teljes hozzászólást!
  • nem hiszem hogy ez lenne, nezd meg a sorvegeket inkabb
    Mutasd a teljes hozzászólást!
  • akkor itt a baj.
    megpróbálom átírni az enyémre, ha tudom
    Mutasd a teljes hozzászólást!
  • az enyem:
    GNU bash, version 3.2.39(20)-release-(i686-pc-cygwin)


    de nem hiszem hogy ez lenne a gond
    meddig fut le, mikor irja ki, hogy bad....
    Mutasd a teljes hozzászólást!
  • expre fennt kell legyen, és a ./ sem maradt el.
    Szerintem verzió különbség lehet a kettőnk között.
    az enyém:

    GNU bash, version 3.2.39(1)-release (i486-pc-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.


    Mutasd a teljes hozzászólást!
  • az expr fel van installalva?

    a ./ nem maradt le a proba elol? a file neve nyilvan nem szamit

    egyebkent nincs otletem nalam minden megy szepen
    Mutasd a teljes hozzászólást!
  • Onnan meglehet kimaradt,


    Hehe, akkor használhatatlan kódokat kaptál
    Mutasd a teljes hozzászólást!
Ez a téma lezárásra került a moderátor által. A lezárás oka: �gy l�tszik, az �ll�s rovatba t�rt�nt �tt�tel nem �rte el a c�lj�t!
Címkék
abcd