Pereiti prie turinio

Blogai spausdina rezultatus...


Rekomenduojami pranešimai

Sveiki, turiu paskal'io užduotį (prisegiau).

 

Pasirašiau tokią programą:

program Antra_uzduotis;

type Mas = array [1..50] of integer;

   Duomenys = record
      vardas        :string[10];
      d             :integer;
      karosu_kiekis,
      karpiu_kiekis,
      kuoju_kiekis  :Mas;
      karosu_sk,
      karpiu_sk,
      kuoju_sk      :integer;
      Is_viso       :integer
    end;

    Masyvas = array [1..100] of Duomenys;

var Zvejai :Masyvas;
   n,
   g_zvejo_ind      :integer;                       //geriausio zvejo indeksas

procedure Skaitymas;
var i,j :integer;
   F :text;
begin
Assign(F,'U2.txt');
Reset(F);
 ReadLn(F,n);
 for i := 1 to n do
  begin
   ReadLn(F,Zvejai[i].vardas,Zvejai[i].d);
   for j := 1 to Zvejai[i].d do
    begin
     Read(F,Zvejai[i].karosu_kiekis[j],Zvejai[i].karpiu_kiekis[j],Zvejai[i].kuoju_kiekis[j]);
     Readln(F);
    end;
  end;
Close(F);
end;

procedure Rezultatu_skaiciavimas;
var i, j :integer;
begin
for i := 1 to n do
 begin
  Zvejai[i].karosu_sk := 0;
  Zvejai[i].karpiu_sk := 0;
  Zvejai[i].kuoju_sk  := 0;
  Zvejai[i].Is_viso   := 0;
  for j := 1 to Zvejai[i].d do
   begin
    Zvejai[i].karosu_sk := Zvejai[i].karosu_sk + Zvejai[i].karosu_kiekis[j];
    Zvejai[i].karpiu_sk := Zvejai[i].karpiu_sk + Zvejai[i].karpiu_kiekis[j];
    Zvejai[i].kuoju_sk  := Zvejai[i].kuoju_sk + Zvejai[i].kuoju_kiekis[j];
   end;
  Zvejai[i].Is_viso := Zvejai[i].karosu_sk + Zvejai[i].karpiu_sk + Zvejai[i].kuoju_sk;
 end;
end;

function Geriausias_zvejys : string[10];
var i, j, max :integer;
begin
max := Zvejai[1].Is_viso;
g_zvejo_ind := 1;
for i := 1 to n  do
   if max < Zvejai[i].Is_viso then begin
                                    max := Zvejai[i].Is_viso;
                                    Geriausias_zvejys := Zvejai[i].vardas;
                                    g_zvejo_ind := i
                                   end;
end;

procedure Atsakymu_Rasymas;
var R :text;
   i, j, g_zvejas :integer;
begin
Assign(R,'U2Rez.txt');
Rewrite(R);
 for i := 1 to n do
  begin
   Write(R,Zvejai[i].vardas,Zvejai[i].karosu_sk:5,Zvejai[i].karpiu_sk:5,Zvejai[i].kuoju_sk:5);
   WriteLn(R);
  end;
 Write(R,Geriausias_zvejys,Zvejai[g_zvejo_ind].Is_viso);
Close(R);
end;

begin
 Skaitymas;
 Rezultatu_skaiciavimas;
 Atsakymu_Rasymas;
end.

 

Problemos kyla su geriausio žvejo spausdinimu:

Kai duomenų failas buvo toks:

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

tada atspausdino gerus rezultatus:

Petras     25 14 13
Algis       9 6 13
Jurgis     25 35 271
Rita       10 69 17
Jurgis 331

o kai pradiniu duomenis pakeičiau į tokius:

3
Petras    3
1 2 3
1 2 3
1 2 3
Jonas     1
1 2 3
Antanas   2
1 2 3
1 2 3

 

rezultatu faile geriausio žvejo eilutėje išspausdina tokią nesąmonę:

Petras        3    6    9
Jonas         1    2    3
Antanas       2    4    6
¨Ñ@
’Ñ@
`ýdýEdýEEÿÿ
8


²×








Q






 þEh¦@
(¦@




Ø¥@
18

 

gal žinote kodėl taip yra? Lauksiu patarimų :)

post-61420-0-18079200-1356949886_thumb.jpg

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Matyt bus problemos su šia eilute iš Geriausias_zvejys funkcijos:

Geriausias_zvejys := Zvejai[i].vardas;

 

Priskirk žvejo vardą funkcijos pabaigoje, kai jau esi suradęs žvejo numerį.

 

Keletas patarimų:

  • Funkcijos rezultatą priskirk funkcijos vykdymo pabaigoje, jokiu būdu nenaudok kaip kintamojo (žiūrėti auksčiau);
  • Net jei funkcija ar procedūra neturi jokių parametrų, kviesdamas ją rašyk su skliaustais, pvz. Funkcija() (daug lengviau skaityti kodą);
  • Venk naudoti globalius kintamuosius funkcijose ir procedūrose (globaliais turiu omeny tuos, kurie aprašyti program dalyje; lokalūs – funkcijų ir procedūrų kintamieji). Jei funkcijai/procedūrai reikia kokio kintamojo, jis turi būti sukurtas joje arba pateiktas kaip parametras.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, vėl iškilo šiokia tokia problemėlė. Ką reikia rašyti, kad Pascal'is vardams skirtų 20 vietų?

Gal nelabai aiškiai suformulavau, bet esmė tame, kad man spausdina taip:

Rasa Linas54
Rita Jurgis40
Petras Rasa37

,

o turėtų spausdinti taip:

Rasa Linas          54
Rita Jurgis         40
Petras Rasa         37

.

 

Apsirašydamas vardus rašiau :string[20], bet tas įtakos nedaro.

Dar bandžiau rašyti šitaip:

Write(R,A[i].vardai:20);

bet tuomet jis 20 vietų palieka prieš vardus.

 

Pridedu visą spausdinimo procedūrą:

{Gautu rezultatu surasymas}
procedure Rasymas(A :Masyvas; n :integer);
var R :text;
   i :integer;
begin
Assign(R,'U2Rez.txt');
Rewrite(R);
 for i := 1 to n do
  begin
   Write(R,A[i].vardai);
   Write(R,A[i].balu_suma);
   WriteLn(R);
  end;
Close(R);
end;

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.

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