Help kéne, programozáshoz

Fórumok

Help kéne, programozáshoz

Hozzászólások

És még cifrázzák is! Csináld meg több variációban is, hogy ne hasonlítsanak egymásra a megoldások... :lol:

sztem, ha már ilyen szőrszálhasogatás megy, hogy nem lehet bct használni, akkor én awk biztos, de lehet, hogy sed-et sem engedtem volna :)

nade azt elérték, hogy elhatároztam, hogy mostmár csakazértis meg fogom írni én is - nem lehet az olyan nehéz :D

Azért köszi...

[quote:629dcdd93f="Vendég"]

Tipp: fogd a két számot, szedd szét egy arrayba (bash supportál ilyet), és hátulról adogasd össze, ahogy papíron tennéd. Ugyanazt az algoritmust kell lekódolni, az meg csak megy

[code:1:629dcdd93f]echo $((00000000000002+00000000000003))[/code:1:629dcdd93f]

Szerinted ez mit csinál :?:

Méghogy tömbök :lol:

Esetleg próbáld meg valami nagyobb számmal. Cirka 32bites intig expr-el is megy, és az mégcsak nem is bash specifikus. Meglepődnék ha a shelled két kétszáz jegyből álló (sok 0 elöl nem számít :P) számot össze tudna adni csak úgy :P

Kivéve persze, ha 64 bites architekturán vagy, de még ott is van limit :)

[quote:c8c2124b5d="vmiklos"]sztem, ha már ilyen szőrszálhasogatás megy, hogy nem lehet bct használni, akkor én awk biztos, de lehet, hogy sed-et sem engedtem volna :)

nade azt elérték, hogy elhatároztam, hogy mostmár csakazértis meg fogom írni én is - nem lehet az olyan nehéz :D

Awk nélkül megcsináltam, amire sedet használok azt lehet, sőt valószínű, hogy bash builtinekkel is meg tudtam volna csinálni, és akkor csak expr-t használ a script, mint külső program, minden más bash builtin :)

Cirka 15 perc, szal nem egy nagy ördőngősség... Csak logika és man bash kell hozzá ;)

gondoltam, hogy nem egy nagy dolog :lol:

Erre a feladatra kéne megoldásban segítség, vagy teljes megoldás :) :

Írjon Unix scriptet, ami a paraméterként kapott két tetszőleges hosszúságú (amit a Unix megenged), előjel nélküli numerikus egész stringet összeadja, és az eredményt a standard outputra írja.
Ha az összeadás sikerült akkor 0, egyébként (paraméterhiba esetén) 1 legyen a parancs státusz kimenete. Utóbbi esetben a megfelelő hibaüzenet a standard error-ra kerüljön.

A kiindulási adatok tartalmazhatnak értéktelen vezető nullákat, az eredmény nem.

A script nem használhatja a bc és dc parancsokat! (A megoldás a "bc" vagy "dc" stringet sem tartalmazhatja!)

Örülnék ha valaki megszánna és segítene...

Köszi

Szia!

Nézted a Bash programozás topikot a fórum/Programozás....... alatt? Szerintem ott megtalálod azt amit keresel :wink:.

Átkukkantok oda is...

Köszi

[quote:a950b5f62a="Tope"]Erre a feladatra kéne megoldásban segítség, vagy teljes megoldás :) :

...

Ejnyebejnye... programozási környezet feladat megoldását itt keresni... :)

Tipp: fogd a két számot, szedd szét egy arrayba (bash supportál ilyet), és hátulról adogasd össze, ahogy papíron tennéd. Ugyanazt az algoritmust kell lekódolni, az meg csak megy :)

Tipp: fogd a két számot, szedd szét egy arrayba (bash supportál ilyet), és hátulról adogasd össze, ahogy papíron tennéd. Ugyanazt az algoritmust kell lekódolni, az meg csak megy

[code:1:bbc7dfcdaf]echo $((00000000000002+00000000000003))[/code:1:bbc7dfcdaf]

Szerinted ez mit csinál :?:

Méghogy tömbök :lol:

Tfh. egyik szam van a $bignum1-ben a masik a $bignum2-ben. Ekkor

tmp=${bignum1%?};
d1=${bignum#$tmp};
bignum1=$tmp;

utan $d1 tartalmazza $bignum1 utolso jegyet, ami lecsipodik a vegerol.

Ha ugyanezt vegrehajtjuk $bignum2-re akkor adjuk ossze $d1-et es $d2-t.

ds=$[ d1 + d2 ];

Kepezzuk az osszeg utolso szamjegyet (hasznalhatjuk
a beepitett aritmetikat mert $ds <= 18) es rakjuk el emlekbe.

o=$[ ds % 10 ];
sum="${sum}${o}";

Shifteljuk ds-t.

ds=$[ ds / 10 ];

Ezek utan $ds carryerkent szolgal, amelynek erteket hozza kell majd
adni a tovabbi $d1+$d2 osszegekhez.

A ciklust folytassuk addig amig $bignum1 es $bignum2 elfogy.
Irjuk ki $sum-ot.

echo "$sum";

That's all.

[quote:93b9bf9d27="Vendég"]

Tipp: fogd a két számot, szedd szét egy arrayba (bash supportál ilyet), és hátulról adogasd össze, ahogy papíron tennéd. Ugyanazt az algoritmust kell lekódolni, az meg csak megy

[code:1:93b9bf9d27]echo $((00000000000002+00000000000003))[/code:1:93b9bf9d27]

Szerinted ez mit csinál :?:

Méghogy tömbök :lol:

[code:1:93b9bf9d27]

hmm, szerinted ezt mit csinál
echo $((20000000000000000000000000000+1)) ;)
mert nem azt amit kéne, es erre is mukodie kell. ( tudom mert en is megirtam mar a magam + ado scriptjet, termesztesen nem magamnak.

ps: szánalmas hogy minden egy progmatos itt iratja a prog-korny feladatát, csak leégetik a progmatot.
[/code:1:93b9bf9d27]

hmm, szerinted ezt mit csinál
echo $((20000000000000000000000000000+1)) ;)
mert nem azt amit kéne, es erre is mukodie kell. ( tudom mert en is megirtam mar a magam + ado scriptjet, termesztesen nem magamnak.

Írjon Unix scriptet, ami a paraméterként kapott két tetszőleges hosszúságú (amit a Unix megenged)

Én a zárójelben foglaltak miatt úgy értelmeztem hogy max 32 bites előjel nélküli egész, amit a unix megenged 8)

Ha mégsem így van akkor bocs...

ha még olvassa valamelyik progmatos ezt a topicot, akkor ideírhatná, hogy végülis a legnagyobb számnak csak akkornának kell lenni, amit a $(())-lel össze lehet adni, vagy télleg le kellett kódolni az "összeadást írásban"-t :wink:

A CSA oldalan vannak teszt adatok a feladatokhoz es ott van igenigenigen hosszu tobb sor !!! bankifero szamok is.

kösz az infót, akkor tehát nem sikerült túlbonyolítani a feladatot :oops:

[quote:9262a05657="selli"]
ps: szánalmas hogy minden egy progmatos itt iratja a prog-korny feladatát, csak leégetik a progmatot.

az az igazság, hogy senki semmit nem szólna, ha 1valaki megkérdezné
de ha tömegesen jönnek... :wink: