Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Náš Lopuch Vám
vytře zrak

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Archiv klubu Programování [ŽP: neomezená] (kategorie Programování) moderuje tvx.
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
   
[ 413 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
ender Ender 13.4.2005 13:26  168
Právěže ne. Ty tomu předáváš jen pointer na proměnnou, ale jaký má ta proměnná typ(tj. jak s tím má uvnitř pracovat), se dozví jen formátovacího řetězce. No a vzhledem k tomu, že float a double mají odlišnou vnitřní strukturu, to dělá to, co to dělá ;-)

K nahrávání typu double použij "%lf", tedy "long float".
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 13.4.2005 07:19  167
King: Prisahal bych, ze takhle ten zdrojak vypadal, az na to \n, ktere jsem ale mozna dokonce taky zkousel, to ted nevim. Podivam se na to, az dorazim do prace.
Ender: Presneji receno ja jsem tam mel double, ale to by snad u takovejchhle cisel melo bejt jedno, ne?
ender Ender 13.4.2005 00:00  166
Hm, ten fscanf(input_file, "%f", &number) vypadá v pořádku. Snad jen - je to number opravdu float? Tj. není to double, unsigned nebo něco jiného?
king King Born to be king - ... 12.4.2005 23:56  165
to mi funguje...

neni chyba treba v tom \n ??
king King Born to be king - ... 12.4.2005 23:56  164
#include <stdio.h>


int main( int argc, char ** argv) {
FILE * file;
float fl;

file = fopen("pokus","r");

if (!file) {
printf ("nepodarilo se otevrit soubor");
return -1;
}


while ( ! feof(file) ){
fscanf(file,"%f\n",&fl);
printf("|%f|\n",fl);
}
return 0;
}
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 12.4.2005 23:39  162
AL3X [156]: Hezke, trochu realizaci obdobne tomu memu koncovemu reseni. Ale ma to o myslenku navic. :-)
[158]: Hm, to by me fakt nenapadlo. :-(
King: Jo, awk me napadlo, ale to uz jsem davno zapomnel, takze bych to z hlavy nedal. Perl jsem nikdy neumel a o bc slysim prvne, to musim prozkoumat. Zvlast to reseni z 161 vypada velmi zajimave. :-)

Akorat mi jeste vysvetlete, kde mam tu chybu se fscanf().
king King Born to be king - ... 12.4.2005 23:12  161
tohle se mi ale libi viccat pokus | xargs | tr ' ' '+' | bc
king King Born to be king - ... 12.4.2005 23:01  160
a do toho pres | narvat ty cisla... pres AWK by to taky slo, taky umi floaty, stejne jako BC...
king King Born to be king - ... 12.4.2005 23:00  159
perl -e '
$vysl=0;
while(<>) {$vysl+=$_;}
print $vysl;
'
al3x 12.4.2005 18:26  158
Jeste jsem zkusil jinou vec, otevrel jsem to v OO.org jako text, oznacil a vlozil do OO.org Calc (ten "Excel") a nacetlo se to spravne.

To pretypovani na datum mi taky nekdy zlobi a dost me to vytaci.
al3x 12.4.2005 18:06  157
Snad jedinej problem je, ze while read spousti sub-shell, takze $sum tisknes prubezne uvnitr toho cyklu, prestoze te zajima jen posledni "mezisoucet".
al3x 12.4.2005 18:04  156
Kdokoliv: Vyuzit formatu za desetinou carkou. Takze to vynasobis 100 (das pryc desetinou tecku), projedes pres expr, a vysledek zase vydelis 100.

sum=0; cat file | sed 's/\.//' | while read a; do sum=`expr "$a" "+" "$sum"`; echo $sum | sed 's/\(..\)$/.\1/'; done;
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 12.4.2005 17:40  155
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.
king King Born to be king - ... 6.2.2005 01:55  154
Perl bude mit 100% html parser
search.cpan.org
gugux 5.2.2005 14:19  153
Zadost o radu ;-)Pokud bych chtel zautomatizovat ovladni pres webove rozhrani(napr. automaticka odpoved na maily)(HTML Parser, vyplnovani a odesilani formularu.... proste vsechno to, co umi web. prohlizec v kooperaci s uzivatelem), jakou pouzit knihovnu pod linuxem(C,C++,Perl) ? Diky za odpoved.

[ 413 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt