Pereiti prie turinio

Reikia pagalbos su Pascaliu


Rekomenduojami pranešimai

Laba diena. Tai gi šiandien padariau vieną programėlė, bet kažkodėl nedirba. Visi veiksmai vykdomi, bet Vardas ir Pavardės programą nenori rodyti faile. Tai gi mano programą:

 

program Noname0;
var i,j,n:integer;
pr,plotas,ikainiai:array[1..100] of real;
Df,Rf:text;
sum,tmp:real;
vp:array[1..40] of string[25];

begin
   sum:=0;
   Assign(Df,'duom.txt');
   Reset(Df);
   Readln(Df,n);
   for i:=1 to n do
   begin
   read(Df,vp[i],plotas[i],ikainiai[i]);
   pr[i]:=plotas[i]*ikainiai[i];
   sum:=sum+pr[i];
   end;
for i:=1 to n-1 do
   for j:=i+1 to n do
   if pr[i]>=pr[j] then
   begin
   tmp:=pr[i];
   pr[i]:=pr[j];
   pr[j]:=tmp;
   end;

  Close(Df);
   Assign(Rf,'rez.txt');
   Rewrite(Rf);
   for i:=1 to n do
   Writeln(Rf,vp[i],pr[i]:0:2);
   writeln(Rf,'Is viso ',sum:0:2);
   writeln(Rf,tmp:3:2);
   Close(Rf);
end.

 

Ir va duom.txt duomenys:

 

5
Jonas Petraitis 56.7 8.95
Petras Jonaitis 49.9 8.10
Simas Simaitis 61.7 9.45
Maryte kupaite 86.9 7.39
Lina Kursiene 71.4 8.00

 

Visus skaičius mano programą anksčiau rodo man, bet šitus VP kažkodėl nelabai nori. Gal kas nors gali padėti išspręsti mano problema. Bučiau labai dėkingas. Tikiuosiu, kad jūs suprantate, ką man reikia padaryti...

Redagavo Dmitrijus
Nuoroda į pranešimą
Dalintis kituose puslapiuose

program Noname0;
var i,j,n:integer;
pr,plotas,ikainiai:array[1..100] of real;
Df,Rf:text;
sum,tmp:real;
vp:array[1..40] of string[25];

begin
   sum:=0;
   Assign(Df,'duom.txt');
   Reset(Df);
   Readln(Df,n);
   for i:=1 to n do
       begin
       READLN(Df,vp[i],plotas[i],ikainiai[i]);   // buvo read :) O tau reikia skaityti tik eilute ;)
       pr[i]:=plotas[i]*ikainiai[i];
       sum:=sum+pr[i];
       end;
   for i:=1 to n-1 do
   for j:=i+1 to n do
       if pr[i]>=pr[j] then
           begin
           tmp:=pr[i];
           pr[i]:=pr[j];
           pr[j]:=tmp;
           end;

  Close(Df);
   Assign(Rf,'rez.txt');
   Rewrite(Rf);
   for i:=1 to n do
       Writeln(Rf,vp[i],pr[i]:0:2);
       writeln(Rf,'Is viso ',sum:0:2);
       writeln(Rf,tmp:3:2);
   Close(Rf);
end.

Išviso dvi klaidelės buvo, pirmoji, kad neskaitei visos eilutės su readln, o antroji duomenų faile, jeigu apsibrėži, kad string ilgis bus 25 simboliai, tai ir padaryk 25 laisvas vietas ;)

5
Jonas Petraitis          56.7 8.95
Petras Jonaitis          49.9 8.10
Simas Simaitis           61.7 9.45
Maryte kupaite           86.9 7.39
Lina Kursiene            71.4 8.00

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Skaityme iš failo pamiršai parašyti readLn(Df,vp,plotas,ikainiai)

Be Ln galo tau vis bando skaityti iš tos pačios eilutės, todėl gauni klaidą blogas skaičiaus formatas. Parašius Ln žymeklį perkelia vis į kitą eilutę ir be problemų nusiskaito.

 

Beje, nežinau ar tau čia į uždarbį taip atsikopijavo duomenų failas ar ir pačioj programoj taip rašei, bet po vardo ir pavardės turi palikti tiek tarpų, kad ten tie kiti skaičiai jau rašytųsi nuo 26 pozicijos, nes vardui ir pavardei suteikei 25 pozicijas.

 

EDIT: Ech, aplenkė pora minučių mane. :D

Redagavo Andrius.
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ačiu, su skaičiais dabar viskas normaliai, aš netinkamai įvedžiau duomenys. Dabar norėčiau jus paklausti, gal žinote kaip galima surikiuoti viską pagal mažėjimo tvarką, VP ir skačius reikia. Kaip jus matote aš bandžiau tai padaryti, bet nelabai ir pavyko.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

program Noname0;
var i, j, n:integer;
   pr:array[1..100] of real;
   vp:array[1..100] of string[25];
   Df, Rf:text;
   sum, plotas, ikainiai,
   tmp:real;
   tmp2:string[25];

begin
   sum := 0;
   Assign(Df, 'duom.txt');
   Reset(Df);
   Readln(Df, n);
   for i:=1 to n do
       begin
       READLN(Df, vp[i], plotas, ikainiai);   // buvo read :) O tau reikia skaityti tik eilute ;)
       pr[i] := plotas * ikainiai;
       sum += pr[i];
       end;

   for i:=1 to n do
   for j:=1 to n-1 do
       if pr[j] < pr[j+1] then
           begin
           tmp := pr[j];
           pr[j] := pr[j+1];
           pr[j+1] := tmp;

           tmp2 := vp[j];
           vp[j] := vp[j+1];
           vp[j+1] := tmp2;
           end;
   Close(Df);

   Assign(Rf, 'rez.txt');
   Rewrite(Rf);
   for i:=1 to n do
       Writeln(Rf, vp[i], pr[i]:0:2);
   writeln(Rf,'Is viso ', sum:0:2);
   writeln(Rf, tmp:3:2);
   Close(Rf);
end.

Tikiuosi tau tokios programos reikėjo :) Šiek tiek pertvarkymų padariau.

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