Pereiti prie turinio

Rekomenduojami pranešimai

Sveiki, iškilo bėda su vienu Pascal uždaviniu, kuris yra visiškai neaiškus su tais masyvais, nepaaiškinta prie kokių kintamųjų priskirti masyvus ir t.t... Taigi uždavinys yra toks:

 

Per vasaros atostogas n šeimų ruošiasi keliauti po Europą skirtingų maršrutų greitaisiais traukiniais. Keliauti

planuoja kiekvienos šeimos s suaugusiųjų ir v vaikų. Bilietas suaugusiajam kainuoja sk litų, vaikui - vk litų.

Parenkite programą, kuri apskaičiuotų, kiek kiekvienos šeimos narių zs ruošiasi keliauti ir kokios numatomos

kelionės išlaidos kk.

Pirmoje pradinių duomenų failo Duomenys.txt eilutėje įrašytas šeimų skaičius n. Tolesnėse n eilučių įrašyta

po du sveikuosius skaičius: vykstančių į kelionę šeimos suaugusiųjų ir vaikų skaičius, ir po du realiuosius

skaičius - bilieto suaugusiajam ir vaikui kaina.

Rezultatų failo Rezultatai.txt atskirose eilutėse pateikite informaciją apie kiekvieną šeimą: kiek iš viso

narių zs ruošiasi keliauti ir kelionės išlaidas kk dviejų skaitmenų po kablelio tikslumu.

 

Nurodymai

• naudokite sveikųjų ir realiųjų skaičių masyvus;

• sukurkite pradinių duomenų skaitymo funkciją void;

• sukurkite rezultatų rašymo į failą funkciją void.

 

 

Tai vat, man nereikia, kad išspręstumėt viso uždavinio, man reikia tiesiog, kad parašytumėt kas žino, kaip maždaug turėtų atrodyt tas kodas su masyvais pagal šį uždavinį... Dėkui iš anksto! :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jau buvo isprestas sitas uzdavinys senoj temoj: https://uzdarbis.lt/t332897/masyvas-pagalba-del-uzdavinio/

 

Gal žinai ar kažkas kitas žino kame gali būt bėda, jog iškviečiant funkciją "Kaina" man paskutinis gautas rezultatas rašomas į visas 4 eilutes toks pat, nors turėtų rašyt skirtingus? Mano kodas:

 

program Automobiliai;
 type Masyvas1 = array[1..100] of integer;
 type Masyvas2 = array[1..100] of real;

procedure skaitymas(var pm : Masyvas1; var v : Masyvas1;
                   var ak : Masyvas2; var n : integer;
                   var m : integer; var p : integer);
 var i : integer;
    Fr : text;
begin
 Assign(Fr, 'Duomenys.txt');
 Reset(Fr);
 ReadLn(Fr, n);
   for i := 1 to n do
     ReadLn(Fr, pm[i], v[i], ak[i]);
 ReadLn(Fr, m, p);
 Close(Fr);
end;

function Kaina(X : Masyvas1; Y : Masyvas2; n, m, p : integer) : real;
  var i : integer; k : real;
begin
  for i := 1 to n do
    begin
    k := Y[i] / ((m - X[i]) / p);
    WriteLn(k:0:2);
    end;
  Kaina := k;
end;

procedure rasymas(var pm : Masyvas1; var v : Masyvas1;
                 var ak : Masyvas2; var n : integer; var nak : real);
 var i : integer;
    Fw : text;
begin
   Assign(Fw, 'Rezultatai.txt');
   Rewrite(Fw);
     for i := 1 to n do
       WriteLn(Fw, i, ' ', pm[i], ' ', v[i], ' ', ak[i]:0:2, ' ', nak:0:2);
   Close(Fw);
end;

 var pm, v : Masyvas1;
        ak : Masyvas2;
   n, m, p : integer;
       nak : real;

begin
 skaitymas(pm, v, ak, n, m, p);
 nak := Kaina(pm, ak, n, m, p);
 rasymas(pm, v, ak, n, nak);
 Readln;
end.

 

Rezultatus aš gaunu tokius:

1 2003 2000 19000.00 22436.67
2 2003 2000 19200.00 22436.67
3 2005 1400 15020.00 22436.67
4 2003 2000 13462.00 22436.67

 

O turėtų būt:

1 2003 2000 19000.00 31666.67
2 2003 2000 19200.00 32000.00
3 2005 1400 15020.00 32185.71
4 2003 2000 13462.00 22436.67

 

Uždavinys iš 81 puslapio "2. Automobiliai":

http://gabija.simnet.lt/it/ITegz.pdf

 

 

Dėkui už pagalbą iš anksto! :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu tik vieną kartą iškvieti funkciją "nak := Kaina(pm, ak, n, m, p);", po šios eilutės tu priskiri nak reikšmę ir ją naudoji rašymo funkcijoje... Turėtum rašymo procedūroje, kiekvienai mašinai atskirai skaičiuoti nak reiškmę t.y. šią eilutę

WriteLn(Fw, i, ' ', pm[i], ' ', v[i], ' ', ak[i]:0:2, ' ', nak:0:2);

pakeisti į kažką panašaus į

WriteLn(Fw, i, ' ', pm[i], ' ', v[i], ' ', ak[i]:0:2, ' ', Kaina(pm, ak, n, m, p):0:2);

Susitvarkyk rašymo funkciją, nes nak reikšmė beprasmiška gaunasi

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tu tik vieną kartą iškvieti funkciją "nak := Kaina(pm, ak, n, m, p);", po šios eilutės tu priskiri nak reikšmę ir ją naudoji rašymo funkcijoje... Turėtum rašymo procedūroje, kiekvienai mašinai atskirai skaičiuoti nak reiškmę t.y. šią eilutę

WriteLn(Fw, i, ' ', pm[i], ' ', v[i], ' ', ak[i]:0:2, ' ', nak:0:2);

pakeisti į kažką panašaus į

WriteLn(Fw, i, ' ', pm[i], ' ', v[i], ' ', ak[i]:0:2, ' ', Kaina(pm, ak, n, m, p):0:2);

Susitvarkyk rašymo funkciją, nes nak reikšmė beprasmiška gaunasi

 

Na aš kaip pastebėjau tai čia problema šitam kode:

nak := Kaina(pm, ak, n, m, p);

 

kintamasis n yra priskiriamas reikšmei visąlaik tik 4, todėl. Tai man reikia dabar kažkaip padaryt, kad kol vykdomas for ciklas tol jis nuo 1 iki n skaičiaus didėtų, tas kintamasis n

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