Aurreko 13. astea | bi fitxategi nahastu ariketaren aurkakoa dela esan genezake!
Zenbakien fitxategi bateko datuak banatu Demagun abiapuntuko fitxategiak zenbaki osoak dituela, eta datuak sailkatzeko baldintza zenbakia bakoitia/bikoitia izatea dela. Horren arabera progamak banaketa hau egingo du: zenbaki bakoitak fitxategi batera eta zenbaki bikoitiak beste fitxategi batera. Abiapuntuko fitxategia ez da existitzen horregatik berria sortzen da Abiapuntuko fitxategia existitzean datuak gehitzen dira Hasierako fitxategiaren izena erabiltzaileak erabakiko du, goiko irudietan sartzen den izena Zenbakiak da eta programak C:\Datuak\Zenbakiak.DAT osatzen du. Ariketaren emaitza diren bi fitxategien izenak ez ditu erabiltzaileak hautatzen, emaitza diren fitxategiak hauek izango dira:
Hona hemen, proposatutako ariketaren emaitza: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | program FitxategiBatBitanBanatzen; uses sysutils; type tfFitxategia = file of integer ; tsKatea199 = string [ 199 ]; procedure FitxategiaIkusi(sFitxIzen: tsKatea199); var f: tfFitxategia; iElementua: integer ; begin { uztartu } assign(f, sFitxIzen); reset(f); writeln (sFitxIzen, ' fitxategiak ' , filesize(f), ' elementu ditu, bere edukia:' ); while not eof(f) do begin read(f, iElementua); write (iElementua: 5 ); end ; writeln ; { itxi } close(f); end ; procedure FitxategiaBete(sFitxIzen: tsKatea199); var f: tfFitxategia; iElementua, k, iKopurua: integer ; begin { uztartu } assign(f, sFitxIzen); rewrite(f); write ( 'Zenbat elementu nahi dituzu ' , sFitxIzen, ' fitxategian? ' ); readln(iKopurua); randomize; { Random-aren hazia hasieratu } for k:= 1 to iKopurua do begin iElementua:=random( 10 ); { 0 eta 9 arteko zenbakia } write (f,iElementua); { fitxategian idatzi eta hurrengo elementura pasa } end ; { itxi } close(f); end ; procedure FitxategiariElementuakGehitu(sFitxIzen: tsKatea199); var f: tfFitxategia; iElementua: integer ; cErantz: char ; begin {uztartu} assign(f, sFitxIzen); reset(f); seek(f, filesize(f)); repeat write (sFitxIzen, ' fitxategian gordetzeko zenbaki bat eman: ' ); readln(iElementua); write (f, iElementua); write ( 'Datu gehiagorik gorde nahi duzu?(B/E): ' ); readln(cErantz); cErantz := Upcase(cErantz); until cErantz <> 'B' ; { itxi } close(f); end ; procedure FitxategiaBanatu(sFitxIzen, sFitxIzen1, sFitxIzen2: tsKatea199); var f, f1, f2: tfFitxategia; iElementua: integer ; begin { uztartu } assign(f, sFitxIzen); reset(f); assign(f1, sFitxIzen1); rewrite(f1); assign(f2, sFitxIzen2); rewrite(f2); while not eof(f) do begin read(f, iElementua); if iElementua mod 2 <> 0 then write (f1, iElementua) else write (f2, iElementua); end ; { itxi } close(f); close(f1); close(f2); end ; {===================PROGRAMA NAGUSIA=====================} var sIzena, sIzen1, sIzen2: tsKatea199; begin writeln ( 'Zenbakiak gordeko dituen fitxategiaren izena ' 'Zenbakiak' ' izan daiteke' ); write ( 'Fitxategiaren izena: ' ); readln(sIzena); sIzena := 'C:\' + sIzena + ' .DAT'; if fileexists(sIzena) then begin FitxategiaIkusi(sIzena); FitxategiariElementuakGehitu(sIzena); FitxategiaIkusi(sIzena); end else begin FitxategiaBete(sIzena); FitxategiaIkusi(sIzena); end ; sIzen1 := 'C:\' + ' Bakoitiak ' + ' .DAT'; sIzen2 := 'C:\' + ' Bikoitiak ' + ' .DAT'; writeln ( 'Datuak banatzean ' , sIzen1, ' eta ' , sIzen2, ' fitxategietan gordeko dira' ); FitxategiaBanatu(sIzena, sIzen1, sIzen2); FitxategiaIkusi(sIzen1); FitxategiaIkusi(sIzen2); writeln ; write ( 'RETURN sakatu programa bukatzeko' ); readln; end . |
iruzkinik ez:
Argitaratu iruzkina