Pereiti prie turinio

Pascalio programa


Rekomenduojami pranešimai

Sveiki, niekaip neiseina parasyt programos kuri nuskaitytu duomenis is failo ir juos atspauzdintu. Kazkaip iki galo nenuskaito duom.txt faile esanciu duomenu, nesuprantu kas cia blogai.

 

duom.txt failiukas:

 

2

4

Lukas 7

Gedas 10

Rokas 10

Adomas 12

3

Petras 5

Ona 12

Jonas 8

 

Mano rasyta programa:

program Bevardë2;
type group=record
       v:string[7];
       sk:integer;
    end;
type mas=array[1..20] of group;

var i,n,m:integer; Rf,Df:text; G:mas;

procedure skaitom;
begin
Assign(Df,'duom.txt'); Reset(Df);
ReadLn(Df,n);
for i:=1 to n do
begin
ReadLn(Df,m);
for i:=1 to m do
ReadLn(Df,G[i].v,G[i].sk);
close(Df);
end;
end;


begin
skaitom;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to n do
begin
for i:=1 to m do
WriteLn(Rf,G[i].v,G[i].sk);
close(Rf);
end;
end.

 

Sukompiliaves programa, rez.txt faile gaunu atspauzdinta tik pirma grupe zmoniu ir skaiciu. Gal galetumet paziuret kas cia blogai ir ko truksta..

Redagavo LukasM
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, niekaip neiseina parasyt programos kuri nuskaitytu duomenis is failo ir juos atspauzdintu. Kazkaip iki galo nenuskaito duom.txt faile esanciu duomenu, nesuprantu kas cia blogai.

 

duom.txt failiukas:

 

2

4

Lukas 7

Gedas 10

Rokas 10

Adomas 12

3

Petras 5

Ona 12

Jonas 8

 

Mano rasyta programa:

program Bevardë2;
type group=record
       v:string[7];
       sk:integer;
    end;
type mas=array[1..20] of group;

var i,n,m:integer; Rf,Df:text; G:mas;

procedure skaitom;
begin
Assign(Df,'duom.txt'); Reset(Df);
ReadLn(Df,n);
for i:=1 to n do
begin
ReadLn(Df,m);
for i:=1 to m do
ReadLn(Df,G[i].v,G[i].sk);
close(Df);
end;
end;


begin
skaitom;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to n do
begin
for i:=1 to m do
WriteLn(Rf,G[i].v,G[i].sk);
close(Rf);
end;
end.

 

Sukompiliaves programa, rez.txt faile gaunu atspauzdinta tik pirma grupe zmoniu ir skaiciu. Gal galetumet paziuret kas cia blogai ir ko truksta..

 

 

Nuo kada ciklas cikle abiems ciklams turi tą patį kintamąjį "i", ir nuo kada uždarome failą pačiame cikle?

Turiu omeny šitas vietas:

 

for i:=1 to n do

begin

ReadLn(Df,m);

for i:=1 to m do

ReadLn(Df,G.v,G.sk);

close(Df);

end;

 

Be to kad ir sutvarkysi tai, tai vistiek į masyvą kiekvieną grupę rašai vėl nuo pirmo indekso. Tai reiškia, kad liks gale nuskaitymo tik paskutinė duomenų grupė (šiuo atveju čia kažkokių vardų antra grupė)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aukščiau klaidas esmines pasakė

program Bevarde;
type group=record
   	v:string[7];
   	sk:integer;
	end;
type mas=array[1..20] of group;

var i,j,n,m,k:integer; Rf,Df:text; G:mas;

procedure skaitom;
begin
k:=0;
Assign(Df,'duom.txt'); Reset(Df);
ReadLn(Df,n);
for i:=1 to n do
begin
   	ReadLn(Df,m);
   	for j:=1 to m do
   	begin
       	k:=k+1;
       	ReadLn(Df,G[k].v,G[k].sk);
       	writeln(G[k].v);
   	end;
end;
close(Df);
end;

begin
skaitom;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to k do
WriteLn(Rf,G[i].v,G[i].sk);
close(Rf);
readln;
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose
  • po 3 savaičių...

Sveiki, prikelsiu tema nes iskilo dar vienas klausimelis su tuo paciu kodu.

 

Taigi prie savo praejusios programo pridejau rikiavimo koda kuris turetu surikiuoti vardus su jiem priskirtais skaiciais mazejimo tvarka ir nesuprantu kodel man meta klaida jei viskas atrodo lyg ir gerai.

 

Stai duom.txt failiukas

2
4
Lukas  7
Gedas  9
Rokas  10
Adomas 12
3
Petras 5
Ona    11
Jonas  8

 

 

programa:

program praktine1;
type group= record
           v:string[7];
           sk:integer;
           end;
type mas= array[1..30] of group;
var i,n,m,j,k,c,d,b:integer; G:mas; Df,Rf:text;

procedure skaitom;
begin
       k:=0;
       Assign(Df,'duom.txt'); Reset(Df);
       readln(Df,n);
       for i:=1 to n do
       begin
       readln(Df,m);
       for j:=1 to m do
       begin
       k:=k+1;
       Readln(Df,G[k].v,G[k].sk);
       end;
       end;
       close(Df);
end;

procedure rikiuot;
begin
   for i:=1 to k-1 do
   begin
   d:=i;
   for j:=i+1 to k do
   if G[d].sk < G[j].sk then d:=j;
   c:=G[d].sk; G[d].sk:=G[i].sk; G[i].sk:=c;
   b:=G[d].v;  G[d].v:=G[i].v;   G[i].v:=b
end;
end;

begin
skaitom;
rikiuot;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to k do
WriteLn(Rf,G[i].v,G[i].sk);
close(Rf);
end.

 

O cia ka tureciau gaut rez.txt faile:

Adomas 12
Ona    11
Rokas  10
Gedas  9
Jonas  8
Lukas  7
Petras 5

 

Padekit jei galit, dekui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Rikiavimas blogas buvo, bandei integer priskirti string kuo daryti negalima ir pats rikiavimas šiek tiek keistas tavo buvo

program praktine1;
type group= record
       	v:string[7];
       	sk:integer;
       	end;
type mas= array[1..30] of group;
var i,n,m,j,k,skk:integer; G:mas; Df,Rf:text;
vard:string[7];

procedure skaitom;
begin
   	k:=0;
   	Assign(Df,'duom.txt'); Reset(Df);
   	readln(Df,n);
   	for i:=1 to n do
   	begin
   	readln(Df,m);
   	for j:=1 to m do
   	begin
   	k:=k+1;
   	Readln(Df,G[k].v,G[k].sk);
   	end;
   	end;
   	close(Df);
end;

procedure rikiuot;
begin
for i:=1 to k-1 do
   	for j:=i+1 to k do
       	if G[i].sk < G[j].sk
           	then
               	begin
                   	skk:=G[j].sk;
                   	G[j].sk:=G[i].sk;
                   	G[i].sk:=skk;

                   	vard:=G[j].v;
                   	G[j].v:=G[i].v;
                   	G[i].v:=vard
                	end;
end;

begin
skaitom;
rikiuot;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to k do
WriteLn(Rf,G[i].v,G[i].sk);
close(Rf);
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai norime visas to pačio record tipo reikšmės perduoti iš vieno kintamojo į kitą galime tai padaryti vienu sakiniu.

 

procedure rikiuot;
var temp:group;
begin
   for i:=1 to k-1 do
     for j:=i+1 to k do
     if G[i].sk < G[j].sk then
       begin
         temp:=G[i];
         G[i]:=G[j];
         G[j]:=temp;
       end;
end;

Redagavo Valdas3
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dekui uz pataisymus :)

 

Dar turiu viena klausimeli, kaip reiktu nuskaityt ir atspausdint truputi kitaip isdestytus duomenis. Kazka bandziau padaryt analogiskai kaip ir su praeitu nuskaitymu bet nieko nesigauna. Gal galetumet pataisyt.

 

duom.txt:

 

4
Petras         3
5 13 8
4 0 5
16 1 0
Algis          1
9 6 13
Jurgis         4
4 14 2
4 4 15
16 15 251
1 2 3
Rita           2
6 65 4
4 4 13

 

programa:

program Bevarde;
type group= record
               v:string[15];
               b,r,l:integer;
               end;
type mas= array[1..30] of group;
var i,n,m,j,k:integer; G:mas; Df,Rf:text;

procedure skaitom;
begin
       k:=0;
       Assign(Df,'duom.txt'); Reset(Df);
       readln(Df,n);
       for i:=1 to n do
       begin
       readln(Df,G[i].v,m);
       for j:=1 to m do
       begin
       k:=k+1;
       Readln(Df,G[k].b,G[k].r,G[k].l);
       end;
       end;
       close(Df);
end;

begin
skaitom;
Assign(Rf,'rez.txt'); Rewrite(Rf);
for i:=1 to n do
WriteLn(Rf,G[i].v);
for i:=1 to k do
WriteLn(Rf,G[i].b,' ',G[i].r,' ',G[i].l);
close(Rf);
end.

 

rez.txt turetu buti:

Petras         
5 13 8
4 0 5
16 1 0
Algis          
9 6 13
Jurgis         
4 14 2
4 4 15
16 15 251
1 2 3
Rita           
6 65 4
4 4 13

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ką tavo nuomonė dar šis ciklas?

for j:=1 to m do
       begin
       k:=k+1;
       Readln(Df,G[k].b,G[k].r,G[k].l);
       end;

Nes man atrodo, kad tu nelabai suvoki ką darai.

 

P.S. Programoje jokios struktūros. Bet koks žmogus pažvelgęs į tavo kodą turėtu lengvai atskirti vieną kodo bloką nuo kito.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip, nelabai suvokiu nes pascalis man niekada nepatiko, plius ji pradejau mokytis tik 12klasej, bet kadangi ryt egzaminas tai tikiuosi nors imsokt nuskaityt teisingai duomenis is failo ir juos atspausdinti, galbut net ir surikiuot ka nors, kad gauciau nors kiek tasku uz praktine dali.

 

Mano manymu, tas ciklas nuskaito grupeje esancius narius ir ju kieki priskiria k.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip, nelabai suvokiu nes pascalis man niekada nepatiko, plius ji pradejau mokytis tik 12klasej, bet kadangi ryt egzaminas tai tikiuosi nors imsokt nuskaityt teisingai duomenis is failo ir juos atspausdinti, galbut net ir surikiuot ka nors, kad gauciau nors kiek tasku uz praktine dali.

 

Mano manymu, tas ciklas nuskaito grupeje esancius narius ir ju kieki priskiria k.

 

Nuskaitymas toks bus

for i:=1 to n do
begin
readln(Df,G[i].v,m);
for j:=1 to m do
begin
   	k:=k+1;
   	Readln(Df,G[k].b,G[k].r,G[k].l);
end;
end;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gerai, man smegenys šiek tiek perkaito, bet tavo nuskaitymas veikia ne taip, kaip reikia (nors be uždavinio sąlygos sunku pasakyti). Dabar procedūra kiekviena trijų skaičių eilutę priskiria vis naujam masyvo elementui, o tau kaip suprantu reikia tuos skaičius priskirti vienam elementui. Pvz. skaičiai:

5 13 8

4 0 5

16 1 0

Turi būti susieti su Petru, kuris yra pirmas masyvo elementas. Skaičiai:

9 6 13

Turi būti susieti su Algiu, kuris yra antras masyvo elementas ir t.t. Bet tavo masyvas dabar (jei neklystu :D ) atrodo taip:

Vardas B R L

Petras 5 13 8

Algis 4 0 5

Jurgis 16 1 0

Rita 9 6 13

(nėra) 4 14 2

(nėra) 4 4 15

ir t.t.

Pataisykit, jei klystu, nes po ilgo mokymosi aš kaip nesavas :lol: .

Redagavo Valdas3
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gerai, man smegenys šiek tiek perkaito, bet tavo nuskaitymas veikia ne taip, kaip reikia (nors be uždavinio sąlygos sunku pasakyti). Dabar procedūra kiekviena trijų skaičių eilutę priskiria vis naujam masyvo elementui, o tau kaip suprantu reikia tuos skaičius priskirti vienam elementui. Pvz. skaičiai:

5 13 8

4 0 5

16 1 0

Turi būti susieti su Petru, kuris yra pirmas masyvo elementas. Skaičiai:

9 6 13

Turi būti susieti su Algiu, kuris yra antras masyvo elementas ir t.t. Bet tavo masyvas dabar (jei neklystu :D ) atrodo taip:

Vardas B R L

Petras 5 13 8

Algis 4 0 5

Jurgis 16 1 0

Rita 9 6 13

(nėra) 4 14 2

(nėra) 4 4 15

ir t.t.

Pataisykit, jei klystu, nes po ilgo mokymosi aš kaip nesavas :lol: .

 

Tas pvz mano tik kaip nuskaitymui jis, netik skaičiavimui

 

O programa tapati kaip ir čia tai gali pasižiūrėti viskas paaiškinta ir temos kūrėjui.

http://uzdarbis.lt/t225470/pascal-uzduoti-grybai/

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