2023(e)ko apirilaren 23(a), igandea

13. astea | fitxategi bat bitan banatu


















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:


  • C:\Datuak\Bakoitiak.DAT

  • C:\Datuak\Bikoitiak.DAT   (0 zenbakia bikoititzak hartu)




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