Kezdőoldal » Számítástechnika » Programozás » Hogy tudnám megoldani hogy...

Barta99 kérdése:

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?

Figyelt kérdés

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.


2017. jún. 29. 20:25
 1/4 anonim ***** válasza:

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.

2017. jún. 29. 21:25
Hasznos számodra ez a válasz?
 2/4 SimkoL ***** válasza:

A Prog.hu-n már megcsináltam neked:

[link]

2017. jún. 29. 22:43
Hasznos számodra ez a válasz?
 3/4 tabaki ***** válasza:

@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.

2017. jún. 30. 03:20
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

Köszönöm a válaszokat.

így már érthetőbb

2017. jún. 30. 11:07

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!