Pereiti prie turinio

FPS duomenu skaitymas


Rekomenduojami pranešimai

Sveiki,

iskart prie reikalo.

 

Yra toks txt failas:

 

4 13 Jonas Artojas //A[1]

2 51 Petras Melzejas //A[2]

3 71 Anupras Girininkas //A[3]

1 42 Kazimieras Gaspadorius //A[4]

6 34 Donce Sestas //A[5]

1 12 Kulverstukas Padejejas //A[6]

 

 

Mano record:

type Rekordas = record

pirmas:integer;

antras:integer;

vardas:string[12];

pareigos:string[11];

end;

 

Masyvas = array[1..6] of Rekordas;

 

 

 

Taigi, esme tokia, jog viskas vykste masyve.

tarkim vardo nuskaitymui esu parinkes string[12], nes ilgiausias vardas "Kulverstukas" uzima 12 slotu.

O skaitydamas trumpesni varda, pvz: Jonas, jis nukerpa siek tiek raidziu is zodzio Artojas ir gaunasi nesamone.

 

Tai gal galima kaip nors padaryt, kad programa apskaiciuotu kiek slotu uzima zodis ir nuskaitytu tik ji?

 

Lauksiu atsakymu, dekui!

Nuoroda į pranešimą
Dalintis kituose puslapiuose

duomenis issaugot taip:

4 13 Jonas		   Artojas		//A[1]
2 51 Petras		  Melzejas	   //A[2]
3 71 Anupras		Girininkas	 //A[3]
1 42 Kazimieras	 Gaspadorius  //A[4]
6 34 Donce		   Sestas		 //A[5]
1 12 Kulverstukas  Padejejas	//A[6]

Turi butu sulygiuoti

Redagavo night1
Nuoroda į pranešimą
Dalintis kituose puslapiuose
duomenis issaugot taip:

4 13 Jonas		   Artojas		//A[1]
2 51 Petras		  Melzejas	   //A[2]
3 71 Anupras		Girininkas	 //A[3]
1 42 Kazimieras	 Gaspadorius  //A[4]
6 34 Donce		   Sestas		 //A[5]
1 12 Kulverstukas  Padejejas	//A[6]

Turi butu sulygiuoti

 

Jo, gali skaičiuot tarpus jei neturi ką veikt. :)

Daryk taip: pirma nuskaityk visą eilutę (sakykim kintamasis - eilute), tada pirma žodį - viską iki pirmo tarpo - nukopijuok į kitą kintamąjį (kintamasis - nauja_eilute), kodas atrodytų taip:

nauja_eilute:=copy(eilute,1,pos(' ',eilute));
{eilute - nuo ko kopijuosim, 1 - nuo kurio simbolio pradėti, pos(' ',eilute) - iki kokio simbolio kopijuoti, šiuo atveju iki tarpo - ' ' pozicijos}

 

Tik gali kilti problemų, dėl to, kad yra prieš tai du skaičiai. Bent jau man tai pascalis svaigsta ir nuskaito tekstinę eilutę su tarpu priekyje (tada tarpo pozicija tampa 1 ir nieko nenukopijuoja). ;) Jei taip nutiktų, tą nereikalingą tarpą nuskaityk į kokį papildomą char. :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Daryk taip: pirma nuskaityk visą eilutę (sakykim kintamasis - eilute), tada pirma žodį - viską iki pirmo tarpo - nukopijuok į kitą kintamąjį (kintamasis - nauja_eilute), kodas atrodytų taip:

nauja_eilute:=copy(eilute,1,pos(' ',eilute));
{eilute - nuo ko kopijuosim, 1 - nuo kurio simbolio pradėti, pos(' ',eilute) - iki kokio simbolio kopijuoti, šiuo atveju iki tarpo - ' ' pozicijos}

 

Tik gali kilti problemų, dėl to, kad yra prieš tai du skaičiai. Bent jau man tai pascalis svaigsta ir nuskaito tekstinę eilutę su tarpu priekyje (tada tarpo pozicija tampa 1 ir nieko nenukopijuoja). :D Jei taip nutiktų, tą nereikalingą tarpą nuskaityk į kokį papildomą char. :D

 

idomus tavo variantas, bet tarkim yra eilute:

 

labas rytas

 

nuskaitau kaip string ir man reikia tuos du zodzius atskirt>>

 

okay, zodi "labas" nuskaitau pradedamas nuo pirmos pozicijos:

 

nauja_eilute:=copy(eilute,1,pos(' ',eilute));

 

bet jau norint nuskaityt zodi "rytas", man reik nurodyt nuo kur skaityt.

sikart butu nuo 7 sloto:

 

nauja_eilute:=copy(eilute,7,pos(' ',eilute));

 

kai viena eilute tai viskas ok. o jei man reik masyva daryt:

 

labas rytas
laba diena
viso gero

 

tai kitai eilutej nebetiks skaitymas nuo 7 sloto, nes cia jau kitokios zodziu ismeros..

vadinasi iseina tas pats kas ir string[x]; :)

Redagavo Fantasya
Nuoroda į pranešimą
Dalintis kituose puslapiuose
type Rekordas = record
			  pirmas, antras   : integer;
			  vardas, pareigos : string;
			 end;

  Masyvas = array[1..6] of Rekordas;

 procedure input (var data : Masyvas);
var fin : text;
	nr, id, i : integer;
	curr, line : string;
 begin
assign (fin, 'data.in');
reset (fin);
nr := 0;
while not eof(fin) do
  begin
	inc (nr);
	ReadLn (fin, line);
	id := 1;
	curr := '';
	for i := 1 to length(line) do
	  if line[i] <> ' '
		then curr += line[i]
		else
		  case id of
			1 : begin
				  val (curr, data[nr].pirmas);
				  curr := '';
				  inc (id);
				end;
			2 : begin
				  val (curr, data[nr].antras);
				  curr := '';
				  inc (id);
				end;
			3 : begin
				  data[nr].vardas := curr;
				  curr := '';
				  inc (id);
				end;
		  end;
	data[nr].pareigos := curr;
  end;
close (fin);
 end;

Nuoroda į pranešimą
Dalintis kituose puslapiuose
idomus tavo variantas, bet tarkim yra eilute:

 

labas rytas

 

nuskaitau kaip string ir man reikia tuos du zodzius atskirt>>

 

okay, zodi "labas" nuskaitau pradedamas nuo pirmos pozicijos:

 

nauja_eilute:=copy(eilute,1,pos(' ',eilute));

 

bet jau norint nuskaityt zodi "rytas", man reik nurodyt nuo kur skaityt.

sikart butu nuo 7 sloto:

 

nauja_eilute:=copy(eilute,7,pos(' ',eilute));

 

kai viena eilute tai viskas ok. o jei man reik masyva daryt:

 

labas rytas
laba diena
viso gero

 

tai kitai eilutej nebetiks skaitymas nuo 7 sloto, nes cia jau kitokios zodziu ismeros..

vadinasi iseina tas pats kas ir string[x]; :)

 

Nesakei, kad ir antrą žodį reiks nuskaityt. :D Na tai kiekvienoj eilutėj gali kopijuot, pirmą žodį nuo pradžios iki tarpo pozicijos, antrą žodį nuo tarpo pozicijos iki eilutės galo. Taigi betkokiom eilutėm tinka:

nauja_eilute:=copy(eilute,1,pos(' ',eilute)); // čia nukopijuosim pirmą žodį
nauja_eilute2:=copy(eilute,pos(' ',eilute),length(eilute));

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...