Kezdőoldal » Számítástechnika » Programozás » Pascal-ban egy fájl olvasása...

Pascal-ban egy fájl olvasása közben szeretném ha a program kiírná a százalékos arányt. Kérhetnék ebben segítséget? (kód lent)

Figyelt kérdés

Tehát miközben olvassa a fájlt és írja a másik fájlba szeretném a százalékos arányt látni, lehetőleg olyan módon, hogy minden százalékot csak egyszer írjon ki.


A kód:


uses crt, sysutils;

var

inf,outf:file of byte;

data:array[1..250000] of byte;

nr,nw:longint;

fs,fs2:int64;

begin

assign(inf,paramstr(1));

assign(outf,paramstr(2));

reset(inf);

rewrite(outf);

fs:=filesize(inf);

repeat

blockread(inf,data,sizeof(data),nr);

fs2:=filepos(inf);

blockwrite(outf,data,nr,nw);

until(nr=0);

close(inf);

close(outf);

end.



2014. nov. 26. 11:21
1 2
 1/11 anonim ***** válasza:
0%
Minek a százalékos arányát?
2014. nov. 26. 11:33
Hasznos számodra ez a válasz?
 2/11 A kérdező kommentje:
Annak, hogy hol tart éppen a folyamat.
2014. nov. 26. 11:35
 3/11 A kérdező kommentje:
A lekért pozíció és fájlméret ismeretében.
2014. nov. 26. 11:37
 4/11 Tengor ***** válasza:
Fogj egy változót, amiben a százalékot tartod. Minden blokk olvasásakor számold ki az arányt, nézd meg, hogy a mentett értékhez képest változott-e. Ha igen, akkor mentsd az értéket és írasd ki!
2014. nov. 26. 12:05
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

Köszönöm, pont ez az, amiben segítséget kérnék.

Le tudnád írni ezt a kódba?

2014. nov. 26. 12:30
 6/11 Tengor ***** válasza:
Ezer éve nem pascaloztam, szóval talán jobb ha nem kódolok most sem benne.. Ha már összejött a kiolvasás-beírás, akkor nem hiszem, hogy ennek gondot kellene okoznia.
2014. nov. 26. 12:33
Hasznos számodra ez a válasz?
 7/11 coopper ***** válasza:
100%

Szia.


Aránypár (ha jól olvasom a kódot) :


fs = 100 %

fs2 = x %

- - - - -

x=fs2*100/fs mivel itt a szorzás osztás felcsrélhető :

X=fs2/fs*100


Csak ezt kell leprogramoznod illetve kiiratni a % értéket.


Sok sikert.

Üdv.

2014. nov. 26. 14:28
Hasznos számodra ez a válasz?
 8/11 coopper ***** válasza:
100%

Most hogy jobban elolvastam a kérdést :


"szeretném a százalékos arányt látni, lehetőleg olyan módon, hogy minden százalékot csak egyszer írjon ki."


Ez a fenti kóddal nem megvalósitható.


Mivel eleve 25000 byteket olvasol be/irsz ki nem tudod az összes % értéket megjeleniteni (pl nem lesz semmiféle % érték, csak 100 %, ha a fájl mérete kisebb mint 25000 byte, illetve ha 50000 byte alá esik akkor pediglen ezzel a módszerrel csak két % értéket fog megjeleniteni valahol 50+ % és a vége mint 100 %)


Sok sikert.

Üdv.

2014. nov. 26. 14:33
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:

Én nem ragaszkodom hozzá hogy mindenegyes % megjelenjen...

A fenti képlet azt produkálja, hogy kiírja: 0

Végig nullát ír, végén pedig 2x kiírja hogy: 100

Nagy fájlokkal próbálom, amelyek méret nagyobb 20 MB-nél.

uses crt, sysutils;

var

inf,outf:file of byte;

data:array[1..250000] of byte;

nr,nw:longint;

fs,fs2:int64;

begin

assign(inf,paramstr(1));

assign(outf,paramstr(2));

reset(inf);

rewrite(outf);

assign(output,'');

rewrite(output);

fs:=filesize(inf);

repeat

blockread(inf,data,sizeof(data),nr);

fs2:=filepos(inf);

writeln(fs2 div fs*100);

blockwrite(outf,data,nr,nw);

until(nr=0);

close(inf);

close(outf);

end.

2014. nov. 26. 16:27
 10/11 coopper ***** válasza:
100%

Igen.


Ha igy használod akkor persze, hogy nullát ir.


Mivelhogy "fs2" egészosztás "Fs" az ugyebár a ciklus végéig 0, (mivelhogy a file teljes mérete csak akkor lesz meg egyszer az eddig átmásolt bájtok számában, ha már véget ért a másolás) ez megszorzod 100-al akkor is nulla.


Tehát a következő módszereket próbálhatod :


Hogy az én módszeremnél maradjuk :

- writeln (Fs2/fs*100:0:0);


Vagy maradjunk az eredeti képletnél, ha igy szeretnéd :

- writeln((fs2*100) div fs);


Sok sikert.

üdv.

2014. nov. 26. 17:10
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!