Ti hogy oldanátok meg ezt a feladatot?
4. Futár rész. Nem konkrét forráskódra vagyok kíváncsi, hanem hogy hogy futnátok neki ennek. Próbáltam táblába beolvasni és úgy operálni velük, vagy stringlistekben kezelni őket, de egyik sem túl hatékony, és időigényesek.
Egy scriptnyelvvel a legegyszerűbb feldolgozni az adatokat.
Beolvasod a fájlt, buborékrendezed, összevonod a feltételnek megfelelő adatokat, majd kiírod egy másik fájlba.
Én a Perlt vagy a Pythont ajánlom, nem kell ide semmilyen grafikus felület, csak lassítaná a munkát.
A hatos egy egyszerű összegzés.
Tegyük fel, hogy tömbben tárolod az adatokat, amik mondjuk egy rekordban vannak rögzítve.
Egyszerűen számlálós ciklussal összegzel adott napokra.
Hetes pofon egyszerű, le se írom.
Nyolcas miatt szerintem érdemes már a legelején rendezni az adatokat, úgy meg az is pofonegyszerű.
9-es megint egy pofon egyszerű összegzés.
Jujj, ezt oldottam tavaly:D
Pascalban csináltam, szimpla array-el. Mit értesz időigényes alatt? A keresés, összegzés tételekkel megoldható, és nem fogsz annyi adatot kapni hogy baj legyen a hatékonysággal.
Utolsó: Akkor le tudnád írni nagyjából, hogy hogy csináltad? Én Lazarusban próbálom meg idén az emeltet így 0 felkészüléssel, aztán ha nem jön össze még van két esélyem.
Programozni soha nem tanultam, magamtól tanultam meg a VB-t és a Delphit, de ilyen jellegű problémákkal soha nem volt még dolgom.
Az egészet olvastad be egy több dimenziós array-be, és úgy nézted őket?
Én valahogy így kezdtem volna hozzá:
program futar;
{$mode objfpc}{$H+}
uses Classes, Sysutils;
type
TUtak=array[1..40] of integer;
var
napok : array[1..7] of TUtak;
adatfile: TStringList;
adatsor: TStringlist;
i: integer;
procedure nullaz;
var i,j: integer;
begin
for i:=1 to 7 do
for j:=1 to 40 do
napok[i][j]:=0;
end;
procedure masodik;
var i,j: integer;
begin
writeln('2. feladat');
for i:=1 to 7 do
begin
for j:=1 to 40 do
begin
if napok[i][j]<>0 then
begin
writeln('A het elso utja km-ben:',napok[i][j]);
exit;
end;
end;
end;
end;
begin
nullaz;
adatfile:=TStringList.Create;
adatfile.LoadFromFile('tavok.txt');
adatsor:=TStringList.Create;
for i:=0 to adatfile.count-1 do
begin
ExtractStrings([' '],[],pChar(adatfile[i]),adatsor);
napok[StrToInt(adatsor[0])][StrToInt(adatsor[1])]:=StrToInt(adatsor[2]);
adatsor.Clear;
end;
masodik;
end.
Mivel itt tömbök vannak, így a rendezéssel már nem kell bajlódnod, az adataid sorban kerülnek a tömbbe. Minden egyes feladathoz létrehozhatsz egy eljárást, ami végigszalad a tömbön és kiszedi, összegzi stb. a benne levő értékeket, ahogy az egyes feladatok kérik.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!