Keresés

Új hozzászólás Aktív témák

  • Lortech

    addikt

    válasz lamadou #660 üzenetére

    A változtatás abban van a tiedhez képest, hogy egy logikai segédváltozóval vizsgáltam meg, hogy prím-e, illetve ezzel jeleztem. Ha volt osztója ( ha ''külső for ciklus indexe'' mod ''belső for ciklus indexe''=0), akkor nem prím (volt:=false lett), és ki lett íratva. Egyébként fejlettebb megoldás az, hogy csak a vizsgálandó szám négyzetgyökéig keresi és nézi az osztókat. (szerk: lehet még sokkal tovább is szépítgetni persze, van pár jó ötlet a linken)
    Én is csináltam belőle benchmarkot, meg többen is rajtam kívül, csak tudnám merre van... :D
    Bővebben: link


    [Szerkesztve]

  • VladimirR

    nagyúr

    válasz lamadou #660 üzenetére

    idomereshez hasznalhatod a gettime() (esetleg melle meg lehet a getdate()) fuggvenyt (asszem dos unit)
    a progi elejenlekerdezed az idod, meg a vegen is, es a kettot kivonod egymasbol

  • Lortech

    addikt

    válasz lamadou #658 üzenetére

    Leírnád, hogy hogy gondolkodtál? Nézegetten az előzőt is, de elég nehezen fogom fel. Az s változó szerepét nem nagyon tudom hova tenni. Pl megadsz neki más értéket, és akkor is ugyanaz lesz az eredmény.
    Az előzőt amúgy erre javítottam ki, vagyis inkább átírtam: :)


    program prim;
    uses crt;

    var i,k : integer;
    volt:boolean;
    begin
    clrscr;
    for i:=2 to 10 do
    begin
    volt:= false;
    for k:=2 to i-1 do
    begin
    if i mod k =0 then volt:=true;
    end;
    if volt=false then writeln(i);
    end;
    readkey;
    end.


    [Szerkesztve]
  • lamadou

    senior tag

    válasz lamadou #657 üzenetére

    Meg van a hiba. A helyes program:


    program prim;
    uses crt;
    var i,k,s : integer;
    begin
    clrscr;
    s:=10;
    for i:=1 to 10 do
    begin
    for k:=2 to i-1 do
    begin
    if i mod k <s then s:=i mod k;
    end;
    if s>0 then writeln(i);
    s:=10;
    end;
    readkey;
    end.
  • Steelheart

    senior tag

    válasz lamadou #542 üzenetére

    Azért néha hasznos lehet a rename(fajlindex,'valami.txt') <átnevez> és az erase(fajlindex) <töröl> parancs is (a fájlokat előbb close-al be kell csukni, ha meg voltak nyitva, és pascal nem tud partíciók közt ilyen műveletet végezni!)

  • VladimirR

    nagyúr

    válasz lamadou #531 üzenetére

    tipusok:
    text -> szoveges file, sorokat tudunk bele ini/olvasni (irni lehet stringet is, akar tobbet is egy sorba)
    file -> tipus nelkuli file, blokkokat irunk/olvasunk
    file of xxx -> tipusos file, ahol xxx lehet szinte barmely tipus

    eljarasok:

    assign(var f, name:string)
    f allomany tipusu valtozohoz (logikai allomanyhoz) hozzarendeli name fizikai allomanyt. a logikai allomanyra vonatkozo minden tovabbi muvelet name fizikai allomanyra vonatkozik. a kapcsolat a program vegeig tart, hacsak egy ujabb assign eljarassal nem rendelunk a logikai valtozohoz egy masik fizikai allomanyt. name tartalmazhat teljes utvonalleirast is, hossza maximalisan 79 karakter lehet. name azonosithat dos periferiat is: con, lpt1 (=prn), lpt2, lpt3, com1 (=aux), com2, nul. ha name ures karakterlanc, az eljaras f-hez a con periferiat rendeli
    *nyitott allomanyra nem szabad hasznalni

    append(var f: text) (A kettőspont és a ''t'' közé nem kell space, de a fórummotor smiley-vá alakította, ezért tettem. Bash)
    megnyitja irasra az f szoveges allomanyt es az allomany aktualis poziciojat az allomany vegere allitja - a kovetkezo irasok bovitik az allomanyt. ha az allomany nyitva volt, akkor az eljaras bezarja, majd ujranyitja azt. amennyiben az utolso 128 bajtos blokkban volt allomanyvegjel (^Z, vagyis #26 karakter), akkor az aktualis pozicio az elso ilyenre all. f allomanybaltozot elozoleg az assign eljarassal egy letrezo fizikai allopmanyhoz kell rendelni. ha f-hez az ures karakterlancot rendeljuk, akkor az iras a szabvanyos b/k eszkozre (con) tortenik. $I- eseten az ioresult figgvennyel a nyitas eredmenye lekerdezheto

    reset(var f [ :file; recsize:word)
    megnyitja az assign eljarassal elozoleg f-hez rendelt, letezo fizikai allomanyt es az allomanymutatot az allomany elejere allitja (filepos(f)=0). ha az allomany ures (0 hosszusagu, illetve szoveges allomany eseten az elso karakter a ^Z), akkor eof(f)=true. ha f szoveges tipusu, akkor csak olvasni lehet az allomanybol, mig tipusos es tipus nelkuli allomanyok irhatoak es olvashatoak is lesznek az eljaras hivasa utan. tipusnelkuli allomanyok eseteben megadhato a rekordmneret is recsize parameterben, ha nem adjuk, meg, 128bajt lesz. ha f allomanyvaltozohoz ures karakterlancot rendeltunk, akkor az input allomanyt nyitja meg - ez az inicializalo reszben automatikusan megtortenik a program inditasakor. ha az eljaras nyitott allomanyra alkalmazzuk, akkor azt automatikusan lezarja az ujranyitas elott. $I- eseten az ioresult fuggvennyel a nyitas eredmenyessege lekerdezheto

    rewrite(var f [ :file; recsize:word)
    ha az assign eljarassal elozoleg f allomanyvaltozohoz rendelt fizikai allomany meg nem letezik, letrehozza azt es szoveges allomany eseteben irasra, tipusos es tipus nelkuli allomany eseteben irsra es olvasasra megnyitja. ha a fizikai allomany mar letezik, akkor elobb torli annak tartalmat. az allomanymutato az allomany elejere all (filepos(f)=0) es az allomany ures lesz (filesize(f)=0). ha f allomanyvaltozohoz ures karakterlancot rendelunk, akkor az output allomanyt nyitja meg irasra - az az inicaializalo reszben automatikusan megtortenik a program indulasakor. tipus nelkuli allaomanyok eseten a recsize parameterret a rekordmeret adhato meg, egyebkent az 128 bajt lesz. $I- eseten az ioresult fuggvennyel a nyitas eredmenyessege lekerdezheto

    close(var f) lezarja az elozoleg reset, rewrite, vagy append eljarassal; megnyitott f logikai allomany. lezaras elott meg a pufferben maradt adatokat kiirja az allomanyba, a katalogust aktualizalja. vegul felszabaditja az allomanyhoz tartozo kezeloszamot (dos handle) tovabbi felhasznalas celjara. a muvelet eredmenyessege $I- mellett az ioresult fugvennyel lekerdezheto

    (volna meg legalabb ennyi, de most lusta vagyok begepelni, ha keritek beirom a tobbit is)

    forras: Angster Erzsébet - Kertész Lászóo: Turbo Pascal 6.0 'A' .. 'Z'

  • Gyuri16

    senior tag

    válasz lamadou #531 üzenetére

    program filekezeles;

    var
    valami: text;

    begin
    assign(valami,'c:/file.txt');
    reset(valami);
    write(valami,'amit bele akarsz irni');
    close(valami);
    end.

    assign - megnevezi
    reset - megnyitja
    write/read - ir/olvas belole
    close - becsukja
    reset es rewrite kozt annyi a kulonbseg, hogy reset megnyitja a file, es leteznie kell, rewrite meg letrehozza/kitorli. read, write mukodik, persze a readln, writeln is.

    [Szerkesztve]

  • _thomas_

    tag

    válasz lamadou #527 üzenetére

    hi!

    ebben a pldában egy TButton komponenst mentünk ki háttártárra, a test.dat fileba.

    procedure save();
    var
    f : TFileStream;
    begin
    try
    f := TFileStream.Create('c:\test.dat',fmCreate);
    f.Seek(0,500);
    //komponenst mentünk ki vinyóra a TButton helyett természetesen a nevét kell megadni!
    f.WriteComponent(TButton);
    finally
    f.Free;
    end;
    end;


    [Szerkesztve]

Új hozzászólás Aktív témák

Hirdetés