Pereiti prie turinio

FPS. Gaunu error'ą naudodamas string'ą. (Skubu)


Rekomenduojami pranešimai

Sveiki. Esu dvyliktokas, ruošiuosi egzaminui. Kątik išmokom įrašus, bet iškart susidūriau su problema. Turiu štai tokią paprastą programą, reikalas tame, kad bandydamas paleisti, gaunu error'ą Nr.106 Blogas skaičiaus formatas. Pakeitus vardu ir pavardes į paprastą skaičių (eilės nr.) programa veikia be problemų. P.S Kiti klasės draugai programuoja su C++ taigi, pasitart nelabai su kuo yra.

 

.pas failas:

 

program krepsininkai;

type asmuo = record

Vardas : string[15];

Pavarde : string[15];

Amzius : integer;

Ugis : integer;

end;

mas = array [1..50] of asmuo;

var duom, rez : text;

krepsininkas : mas;

n, i, max, suma : integer;

vid : real;

begin

Assign (duom, 'duomenys.txt'); Reset (duom);

Assign (rez, 'rezultatai.txt'); Rewrite (rez);

ReadLn (duom, n);

max:= 1;

For i:= 1 to n do

begin

Read (duom, krepsininkas.vardas, krepsininkas.pavarde, krepsininkas.amzius, krepsininkas.ugis);

suma:= suma + krepsininkas.amzius;

If krepsininkas.ugis > krepsininkas[max].ugis then max:=i;

end;

vid:= suma / n;

WriteLn (rez, 'Metų vidurkis: ', vid:3:1);

WriteLn (rez, 'Aukščiausias krepšininkas: ', krepsininkas[max].vardas, ' ', krepsininkas[max].pavarde, ' ', krepsininkas[max].ugis);

Close (duom);

Close (rez);

end.

 

Duomenys:

 

5

Jonas Jonauskas 25 199

Petras Petrauskas 22 205

Algis Algiauskas 30 211

Arvydas Sabonis 29 215

Mantas Kalnietis 33 189

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kažkodėl nieks žmogeliui nepadėjo matau. :]

Žodžiu, pas tave string'ai sudėti po 15 simbolių. Tai 15 simboliu vardui ir 15 pavardei. Programa taip ir skaito tuos simbolius po 15 ir galu gale ten jau nebelieka nieko integeriam (amziui ir ugiui). Manau kad tame problema.

 

Duomenų failą tiesiog pakeisk kad ir

 

 

5
Jonas          Jonauskas      25 199
Petras         Petrauskas     22 205
Algis          Algiauskas     30 211
Arvydas        Sabonis        29 215
Mantas         Kalnietis      33 189

 

 

Su tokiais duomenim turėtų būt viskas tvarkoj pagal tavo kodą.

 

 

+kodėl jūs nedarot atskirų procedūrų? Ir patogiau, ir kodas gražiau atrodo :D man regis egzamine skaitymui ir rašymui prašo atskirų procedūrų. Taip kad geriau pratinkis.

Redagavo j0vis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Yra skirta po 15 vietų pas mane duomenų faile, matyt, kopijuojant kažkur dingo tarpeliai. Esmė, kad problema ne tame, bandyta jau ir vardą/pavardę/metus ir ūgį sumėtyt į atskiras eilutes, vistiek tas pats error'as. Mokytoja sakė, kad praeitais metais buvo ta pati problema kitiem iškilusi, kažkaip susitvarkė, bet neatsimena(žadėjo laisvu laiku pažiūrėt). Dėl procedūrų, funkcijų, moku aš jas, tiesiog kažkaip rašant nelabai eina man susiskirstyt iš anksto, tai jeigu reikia, jau kai turiu veikiančią programą, išsiskaidau ją (suprantu, kad ilgesnėse programose tai būtų tiesiog nesamonė). Žodžiu, vis dar LAUKIU VARIJANTŲ.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nu krc, ir pats aš durns. Specialiai persikopinau tavo kodą o klaida tokia kvaila...

 

program krepsininkai;
type asmuo = record
   Vardas : string[15];
   Pavarde : string[15];
   Amzius : integer;
   Ugis : integer;
end;
mas = array [1..50] of asmuo;
var duom, rez : text;
   krepsininkas : mas;
   n, i, max, suma : integer;
   vid : real;
begin
   Assign (duom, 'duomenys.txt'); Reset (duom);
   Assign (rez, 'rezultatai.txt'); Rewrite (rez);
   ReadLn (duom, n);
   max:= 1;
   For i:= 1 to n do
   begin
       Read (duom, krepsininkas[i].Vardas, krepsininkas[i].Pavarde, krepsininkas[i].Amzius, krepsininkas[i].Ugis);
       suma:= suma + krepsininkas[i].amzius;
       If krepsininkas[i].ugis > krepsininkas[max].ugis then max:=i;
       Readln(duom);
   end;
   vid:= suma / n;
   WriteLn (rez, 'Metų vidurkis: ', vid:3:1);
   WriteLn (rez, 'Aukščiausias krepšininkas: ', krepsininkas[max].vardas, ' ', krepsininkas[max].pavarde, ' ', krepsininkas[max].ugis);
   Close (duom);
   Close (rez);
end.

 

Kai nuskaitai duomenis tai pas tave Read(duom......). Jis toj pacioj eilutėj ir skaito visą laiką. Neperšoka į kitą eilutę. Readln(duom) pabaigoj reik ir viskas tvarkoj.

Redagavo j0vis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Opa, dėkui. Programavime tokios klaidos turbūt sunkiausios :D

 

 

Aš matau kad tu visą programos kodą rašai o tada tik pasileidi patikrint. Tu geriau daryk po mažą gabaliuką, tokiu būdu nebūtum praleidęs šitos klaidos. Pasidarei skaitymą - tikrini ar teisingai viską nuskaito; pasidarei skaičiavimus - patikrinai. Gabaliukais tiesiog daryk. Ir kaip sakei procedūrom paskui išskaidai - geriau daryk iškart. Daug lengviau. Priprasi taip ir nereiks galvos sukt per egzaminą. O šiaip mldc, dar pasipraktikuok ir egzui jau pasiruošęs manau būsi. Sėkmės

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Aš matau kad tu visą programos kodą rašai o tada tik pasileidi patikrint. Tu geriau daryk po mažą gabaliuką, tokiu būdu nebūtum praleidęs šitos klaidos. Pasidarei skaitymą - tikrini ar teisingai viską nuskaito; pasidarei skaičiavimus - patikrinai. Gabaliukais tiesiog daryk. Ir kaip sakei procedūrom paskui išskaidai - geriau daryk iškart. Daug lengviau. Priprasi taip ir nereiks galvos sukt per egzaminą. O šiaip mldc, dar pasipraktikuok ir egzui jau pasiruošęs manau būsi. Sėkmės

Ok, dėkui už patarimus, pravers ;)

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