Pereiti prie turinio

Maži neaiškumai FPS


Rekomenduojami pranešimai

Bandžiau viena programėlę rašyti ir iškart užstrigau ties duomenų nuskaitymu. Net juokinga, kad neišeina kažkas tokioje vietoje... Tai va, programa "Kauliukai" http://nec.lt/failai/2730_IT-1-2012.pdf. Duomenų failo duomenys:

 

2 3 (2 - dievų skaičius, 3 - tiek kartų metamas kauliukas)

 

Hermis 6 1 2

 

Hera 2 6 6

 

ir nepavyksta šių duomenų nuskaityti gražiai...

Štai mano programos pradžia. Kai bandau išvesti duomenis į ekraną pasitikrinimui man išveda ne visus duomenis. Išveda tik pirma eilute, kitų kažkodėl nenuskaito ir nesuprantu kodėl.

 

program Kauliukai;

const CMax = 50;

CDuom = 'duom.txt';

CRez = 'rez.txt';

 

type Dievai = record

vardas : string[10];

Kaul_Sk : integer;

end;

 

mas = array[1..Cmax] of Dievai;

 

var D:Mas; // Dievu ir ismestu kauliuku masyvas

 

 

Procedure skaityti;

var i, k, n : integer;

fd : text;

begin

assign(fd, CDuom); reset(fd);

readln(fd, n, k);

for i:=1 to n do with D do

begin

read(fd, vardas);

write(vardas);

for i:=1 to k do with D do

begin

read(fd, kaul_sk);

write(kaul_sk, ' ');

end;

end;

writeln;

close(fd);

end;

 

begin

skaityti;

end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ech.. vistiek nepavyksta man. Pridėjau tą readln, kad pradėtu kitą eilutę skaityti, bet vistiek man nenuskaito tų duomenų. Tik pirmąją eilutę.

 

Procedure skaityti;
var i, j, n, k: integer;
   fd : text;
begin   j:=1;
   Assign(fd, Cduom); reset(fd);
   readln(fd, n, k);
   for i:=1 to n do with D[i] do
   begin
       read(fd, vardas);
       write(vardas);

                       for i:=j to k do with D[i] do
                       begin
                       j+=1;
                       read(fd, kaul_sk);
                       write(kaul_sk, ' ');
                       end;
                       writeln;
       readln(fd);
   end;
   close(fd);
end;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

mano variantas:

program U2;

const CDuom = 'U2.txt';
     CRez  = 'U2rez.txt';
     CMax  = 50;

type Eil = string[10];
    dievas = record
               vardas : Eil;
               taskai : integer;   //tasku isviso
               klyg   : integer;   //kiek lyginiu skaicius
             end;

    TMas = array[1..CMax] of dievas;

var A,B,C : TMas;
   n,
   k : integer;
   nr : integer;

procedure Skaityti;
var i,j,sk : integer;
   F : text;
begin
 Assign(F,CDuom); Reset(F);
 ReadLn(F,n,k);
 for i := 1 to n do
   begin
     A[i].taskai := 0; A[i].klyg := 0;
     Read(F,A[i].vardas);
       for j := 1 to k do
         begin
           Read(F,sk);
             if sk mod 2 = 0 then begin
                                    A[i].taskai := A[i].taskai + sk;
                                    A[i].klyg := A[i].klyg + 1;
                                  end
                             else A[i].taskai := A[i].taskai - sk;

         end;
         ReadLn(F);
   end;
 Close(F);
end;  

Redagavo Hanteris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ech.. vistiek nepavyksta man. Pridėjau tą readln, kad pradėtu kitą eilutę skaityti, bet vistiek man nenuskaito tų duomenų. Tik pirmąją eilutę.

 

Procedure skaityti;
var i, j, n, k: integer;
   fd : text;
begin   j:=1;
   Assign(fd, Cduom); reset(fd);
   readln(fd, n, k);
   for i:=1 to n do with D[i] do
   begin
       read(fd, vardas);
       write(vardas);

                       for i:=j to k do with D[i] do
                       begin
                       j+=1;                          //*
                       read(fd, kaul_sk);
                       write(kaul_sk, ' ');
                       end;
                       writeln;
       readln(fd);
   end;
   close(fd);
end;

 

Manau, jog klados čia(*). Tas kintamasis "j" ne įrašo elementas, todėl negali rašyti with D do, be to kam tu "j" didini vienetu, jei čia for ciklas.

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