Hogy tudnám megoldani hogy egy txt-ből (amiben nevek és jegyek vannak Például: Példa Béla) beolvassam külön a neveket és külön a jegyeket?
Szeretném beolvasni külön a neveket és külön a jegyeket
A beolvasásnál van gondom.Nem tudom külön-külön beolvasni.
Valahogy meg kellene oldani hogy a jegyeket a második Space után kezdje el kiírni
program txt_rendezes;
type adat=record
nev:string;
jegy:integer;
end;
var adatok:adat;
diakok:array[1..100] of adat;
darab_elso,darab_masodik:integer;
f,t:text;
i,j,index_elso,index_masodik:integer;
szoveg:string;
begin
assign(f, 'adat.txt');
rewrite(f);
writeln('Elso nevsor:');
assign(t,'elso.txt');
reset(t);
index_elso:=0;
while not eof(t) do
begin
readln(t,adatok.jegy);
writeln(f,adatok.jegy);
writeln(adatok.jegy);
inc(index_elso);
end;
readln;
end.
Ezzel van egy kis gond:
1.: te egy sorban akarod tárolni a neveket és hozzájuk tartozó jegyeket, pedig ha mondjuk az egyik sorban csak a nevek lennének a másikban meg csak jegyek felváltva, máris könnyebben beolvasnád.
2.: vannak olyan emberek akiknek 3 nevük van, és így máris nem a 2-dik space után jön a jegy, hanem a 3-dik után.
A Prog.hu-n már megcsináltam neked:
@SimkoL:
Ahogy látom, így nem pont ugyanaz a feladat, a program neve és az erős ráutaló magatartás ellenére nincs benne a rendezés, viszont a rekordhasználat érdekében szét kell szedni a neveket és a jegyeket.
@Kérdező:
Nem jó a megközelítésed, a szóközök számlálása értelmetlen, ld. Igaz Mondó második paragrafusát. A ReadLn() pedig be fogja olvasni a teljes sort, ha fene fenét eszik is, tehát nem külön-külön tudod beolvasni, hanem egyben, és majd utána feldolgozod. A jegy leválasztása nem jelent problémát, mivel egyszerűen a sor utolsó karaktere, ezt kell számértékké alakítanod, például a Val() függvénnyel, vagy az Ord(karakter)-48 fortéllyal (mellesleg minek tárolsz 0..5 számokat integerben?). Ha meg az utolsó két karaktert (szóköz+jegy) törlöd, megmarad a név.
Egyébként pedig nem mondhatnám, hogy világos, mit szeretnél a kiírt adatok fájljában látni. A mostani programod kijavítása után ugyanis pontosan ugyanaz lesz benne, mint a beolvasottban -- gondolom, a végső cél mégiscsak a rendezett adatok kiírása lenne, de azt nyilván nem oldhatod meg ugyanebben a ciklusban, hanem csak a rekordtömb feldolgozása után. A másik lehetőség, hogy a rekordokat akarod a fájlba írni, ekkor azonban az output nem lehet text, hanem file of adat -- és ezt majd csak egy másik programmal tudod majd beolvasni.
Nem túl elegáns, hogy a majdani elképzelésed szempontjából vélhetőleg hasznos, de a közölt programodban fölösleges változók csokrát mellékeled, a statikus tömb helyett meg tisztességesebb megoldás lenne dinamikusat használni (ld. SimkoL programja), de ezt félreteheted addig, amíg a többi nincs kész. A megnyitott fájlokat pedig be kell zárnod, és punktum. Ha minden megvan, jöhet a hibakezelés, mert annak még a sejtelme is hiányzik a programodból.
Én mindenesetre megírtam szövegből szövegbe, szövegből rekordba, rekordból szövegbe, rekordból rekordba mentő változatokban, természetesen a programon belül mindegyik használja a rekordtömböt. Ha végképp nem jutsz dűlőre, majd bemutatom a próbálkozásaimat.
Köszönöm a válaszokat.
így már érthetőbb
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!