Uz jsem vazne asi neskonale blbej. Potreboval bych prastit nejakym trivialnim resenim problemu, se kterym jsem si tu ted silene dlouho hral a nakonec vyresil, protoze to, co jsem s tim provadel ja, uz neni mozny.
Vstup: textovy soubor, kde na kazdem radku je jedno realne cislo (dokonce vime, ze je vzdy vetsi nez nula a mensi nez sto a ze ta realna cast jde "po ctvrtinach", cili .25, .50, .75 nebo .00; navic ta desetinna cast vzdy vypada takto (dve mista), cast pred desetinnou teckou ma bud jedno misto (kdyz je cislo mensi nez deset), nebo dve mista (ostatni pripady)). Cili vyskytuji se tam cisla jako 23.75, 16.50, 8.00 a podobne, kazde na vlastnim radku.
Ukol: zjistit jejich soucet.
Povoleny jsou libovolne prostredky.
Jako prvni me napadlo nacist to do tabulky v OpenOffice, lec tam mi to udelalo u nekterych poli buhviproc automatickou konverzi na datum a zaboha jsem nebyl schopen se toho zbavit. Kdybych prisel na to, jak tehle konverzi zabranit, asi by to bylo nejjednodussi.
Jako druhou moznost jsem to chtel vzit bashem a pouzit na to expr, lec narazil jsem na to, ze expr umi jenom cela cisla (coz jsem dosud nevedel) - prinejmensim teda ten expr, co jsem mel k dispozici (HP-UX).
Jako treti moznost uz jsem teda v zoufalstvi sahl po Cecku a tady se ukazalo, jak ho uz totalne neumim - ja jsem proste ty floaty nebyl schopen nacist. Co je spatneho na volani fscanf(input_file, "%f", &number)? To mi totiz do toho number prirazovalo nejaky absolutne zmateny hodnoty.
Nakonec jsem to udelal uplne uchylne - nacital to do dvou intu stylem fscanf(input_file, "%d.%d", &x, &y) a z tech dvou intu si ten spravnej float spocital…
Tak a rad bych slysel nejakou radu, ktera mi ukaze, ze se to dalo vyresit do pul minuty. |