Pereiti prie turinio

Informatikos VBE 2013


Rekomenduojami pranešimai

Sveiki, ar įmanoma į funkciją nusiųst visą masyvą?

tarkim turiu kelias eilutes po kelis narius, man man iš jų reikia ištrinti mažiausiąjį narį, o kitu ssudėti.

sakykim tokios eilutes

5 4 3 2 1 <man reikia visą šita nusiųst ištrint mažiausiąjį ir gaut likusių sumą, masyvo pavadinimas sk.masyvas[1-5]

9 8 7 6 5 <

 

tai funkciją turiu rašyt kažkaip taip?

function AtrinkSudek(mas:masyvas):integer;

Redagavo VDabar
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, ar įmanoma į funkciją nusiųst visą masyvą?

tarkim turiu kelias eilutes po kelis narius, man man iš jų reikia ištrinti mažiausiąjį narį, o kitu ssudėti.

sakykim tokios eilutes

5 4 3 2 1 <man reikia visą šita nusiųst ištrint mažiausiąjį ir gaut likusių sumą, masyvo pavadinimas sk.masyvas[1-5]

9 8 7 6 5 <

 

tai funkciją turiu rašyt kažkaip taip?

function AtrinkSudek(mas:masyvas):integer;

 

Nežinau, gal ir taip išeitų, bet aš tai f-ją apsirašyčiau taip:

function AtrinkSudek(mas:masyvas):masyvas;

ir per f-ją į programą gražinčiau jau sutvarkytą masyvą.

Redagavo Cibulinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Gal galit kas patart kur rasti pascalio pamoku? Bet reikia tik egzaminui,kiek randu ten buna daug nereikalingu dalyku,o pagrindu nelabai. (reikia iraso tipo,didziausios-maziausios reiksmes,) :rolleyes:

didz- maziausios reiksm paieska:

 

function jmax(x : Tmass; k : integer;): integer;
var i, max : integer;
begin
max:=Tmass[1]; (arba gali 0 ar kitu skaičiu, jei visi daugiau už nulį)
for i:=1 to k do 
if Tmass[i]>max then max:=Tmass[i]
jmax:=max
end;

Panašiai ir su mažiausios reikšmės paieška.

Įrašo tipo masyvą, kai turėsiu laiko pasistengsiu paaiškinti :)

 

Sveiki, ar įmanoma į funkciją nusiųst visą masyvą?

tarkim turiu kelias eilutes po kelis narius, man man iš jų reikia ištrinti mažiausiąjį narį, o kitu ssudėti.

sakykim tokios eilutes

5 4 3 2 1 <man reikia visą šita nusiųst ištrint mažiausiąjį ir gaut likusių sumą, masyvo pavadinimas sk.masyvas[1-5]

9 8 7 6 5 <

 

tai funkciją turiu rašyt kažkaip taip?

function AtrinkSudek(mas:masyvas):integer;

Taip tinka :)

function party(x : įrašo tipo masyvo pavadinimas): integer;

 

Nežinau, gal ir taip išeitų, bet aš tai f-ją apsirašyčiau taip:

function AtrinkSudek(mas:masyvas):masyvas;

ir per f-ją į programą gražinčiau jau sutvarkytą masyvą.

Jam reikia masyvo skaičių sumos, tai funkcijos tipas integer :)

 

 

EDIT:

Taip tinka :)

function party(x : įrašo tipo masyvo pavadinimas): integer;

, netinka, pas tave yra record tipas, todėl x turi būti priskirtas jo pavadinimas

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Jei nori keisti kintamųjų reikšmes, tai naudok procedūrą.

procedure AtrinkSudek(var mas:masyvas; var suma:integer);

Jam reikėjo funkcijos ir gauti tik sumą :)

Bet aš ir pats nemėgstų funckijų, kai su procedūra gali 10 kartų daugiau darbų padaryti :lol:

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galbūt tu ir teisus. Tik įdomu ką jis turėjo omenyje sakydamas "man iš jų reikia ištrinti mažiausiąjį narį".

Nenaudojant "var" irgi galima ištrintį narį, bet tas masyvas bus trumpalaikėje atmintyje, kol funckija veikia, jis jį ištrins ir apskaičiuos, o realiai tas narys išliks. Dažniausiai tie masyvai nereikalingi lieka, tai manau, kad jam nesvarbu ar jis trumpam laikui pašalintas ar visam :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vienu žodžiu dariau kaip pats parašiau, viskas gavosi, tiktai anksčiau lievus duomenis nusiunčiau reikejo rašyt BaluSkaiciuokle(sk.t).

EDIT:

Taip tinka :)

function party(x : įrašo tipo masyvo pavadinimas): integer;

, netinka, pas tave yra record tipas, todėl x turi būti priskirtas jo pavadinimas

man reikejo nukirpt tik jo galūnę, todėl ir taip tiko.

 

EDIT:

beje jei kam nors prireiks visas programos kodas gavosi toks (2011 vbe uzduotis sokejai)

program Noname24;
const CDuo='U2.txt';
     CRez='U2rez.txt';
     CMax=100;
type
masyvas =array[1..100]of integer;
   sokejas = record
   vardas:string[20];
   balai:integer;
   t,
   a :masyvas;
   bendribalait,
   bendribalaia,
   bendribalaiat :integer;
   end;
sokejai =array[1..CMax] of sokejas;

Var N,
   N2: integer;
   sk:sokejai;


function BaloSkaiciuokle(mas:masyvas) :integer;
var i,max,min,suma:integer;
begin
suma:=0;
min:=11;
max:=0;
for i :=1 to N2 do
suma:= mas[i]+ suma;
for i :=1 to N2 do
begin
  if mas[i]>max then
   begin
    max:=mas[i] ;
   end;
 end;
for i :=1 to N2 do
begin
  if min>mas[i] then
   begin
    min:=mas[i] ;
   end;
 end;
BaloSkaiciuokle:= suma-min-max;
end;

procedure skaityk;
var i,j,l :integer; F:text;
begin
assign(F,CDuo);
reset(F);
Readln(F,N,N2);
for i :=1 to N do
 begin
    readln (F,sk[i].vardas);
    for j :=1 to N2 do
       begin
        read(F,sk[i].t[j]);
        sk[i].bendribalait := BaloSkaiciuokle(sk[i].t);
       end;
     readln(F);
     for j:=1 to N2 do
       begin
        read(F,sk[i].a[j]);
        sk[i].bendribalaia := BaloSkaiciuokle(sk[i].a);
       end;
    sk[i].bendribalaiat:=sk[i].bendribalait+sk[i].bendribalaia;
     readln(F);
 end;
close(F);
end;

procedure rikiavimas;
var i,j,elem:integer; elem2:string[20];
begin
for i := 1 to N do
 begin
    for j:=1 to N  do
     begin
        if sk[i].bendribalaiat > sk[j].bendribalaiat then
         begin
            elem := sk[i].bendribalaiat;  elem2 := sk[i].vardas;
            sk[i].bendribalaiat := sk[j].bendribalaiat; sk[i].vardas:=sk[j].vardas;
            sk[j].bendribalaiat := elem; sk[j].vardas := elem2;
         end;
     end;
 end;
end;

procedure rasyk;
var i,j:integer; F:text;
begin
assign(F,CRez);
rewrite(F);
 for i :=1 to N do
 writeln(F,sk[i].vardas,' ',sk[i].bendribalaiat);
close(F);
end;




begin
 skaityk;
 rikiavimas;
 rasyk;

 Readln;
end.

Redagavo VDabar
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vienu žodžiu dariau kaip pats parašiau, viskas gavosi, tiktai anksčiau lievus duomenis nusiunčiau reikejo rašyt BaluSkaiciuokle(sk.t).

 

man reikejo nukirpt tik jo galūnę, todėl ir taip tiko.

ach, tu šitaip įkišai, bet jeigu turėtum daugybę masyvų sk[1..444]t ir visus reiktų paskaičiuot, tai kažkaip nelabai prasisuktum taip, nors nemačiau kodo, negaliu sakyt :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

katik įmečiau, gali pažiūrėti.

Mano kodas:

program Sokiai;
//------------------------------------------------------------------------------
Const Z=10;    // max teiseju skaicius
type Tmass=array[1..Z] of integer;
     sokis = record
     vardai : string[20]; //vardai
     baltech : Tmass;   //balai uz technika
     balart : Tmass;
     tech, art : integer;    //balai uz artistiskuma
     bendrbalai : integer; //tech ir art balu sumos atmetus maziausius ir didziausius
     end;
sokejai=array[1..100] of sokis;   //max 100 sokeju poru
//------------------------------------------------------------------------------
procedure skaityk(var sok : sokejai; var n, k : integer);
var a, i, j : integer;
vard : string[20];
f : text;
begin
 assign(f,'U2.txt');reset(f);
  readln(f, n, k ); //n - poru skaicius, k - teiseju(balu);
   for i:=1 to n do
       begin
           readln(f, vard);
           sok[i].vardai:=vard;
               for j:=1 to k do
                begin
                   read(f, a);
                   sok[i].baltech[j]:=a;
                end;
                readln(f);
                 for j:=1 to k do
                  begin
                   read(f, a);
                   sok[i].balart[j]:=a;
                  end;
                  readln(f);
       end;
end;
//------------------------------------------------------------------------------
procedure balai(var sok : sokejai; n, k : integer);
var i, j, max, min, suma : integer;
begin
   for i:=1 to n do
       begin
           max:=0; min:=sok[i].baltech[1];  suma:=0;
           for j:=1 to k do
               begin
                   if sok[i].baltech[j]<min then min:=sok[i].baltech[j];
                   if sok[i].baltech[j]>max then max:=sok[i].baltech[j];
                   suma:=sok[i].baltech[j]+suma;
               end;
                 sok[i].tech:=suma-min-max;
       end;
////////////////////////////////////////////////////////////////////////////////
          for i:=1 to n do
       begin
           max:=0; min:=sok[i].balart[1];  suma:=0;
           for j:=1 to k do
               begin
                   if sok[i].balart[j]<min then min:=sok[i].balart[j];
                   if sok[i].balart[j]>max then max:=sok[i].balart[j];
                   suma:=sok[i].balart[j]+suma;
               end;
                 sok[i].art:=suma-min-max;
      end;
              for i:=1 to k do
               sok[i].bendrbalai:=sok[i].art+sok[i].tech;
end;
//------------------------------------------------------------------------------
procedure rusiavimas(var sok : sokejai; n: integer);
var i: integer;
rusiavimas : boolean;
save : sokis;
begin
   repeat
   rusiavimas:=false;
     for i:=2 to n do
       if sok[i].bendrbalai>sok[i-1].bendrbalai then
       begin
       save:=sok[i];
       sok[i]:=sok[i-1];
       sok[i-1]:=save;
       rusiavimas:=true;
       end;
   until not rusiavimas;
end;
//------------------------------------------------------------------------------
procedure rasymas(sok : sokejai; n :integer);
var i, j : integer;
rez : text;
begin
assign(rez,'U2rez.txt'); rewrite(rez);
for i:=1 to n do
   begin
       Write(rez, sok[i].vardai);
           for j:=1 to (20-length(sok[i].vardai)) do write(rez,' ');
           Write(rez,sok[i].bendrbalai);
           Writeln(rez);
   end;
close(rez);
end;
//------------------------------------------------------------------------------
var n,k : integer;
sok : sokejai;
begin
skaityk(sok,n,k);
balai(sok,n,k);
rusiavimas(sok,n);
rasymas(sok,n);
end.

Turiu ir kitą, geresnį sprendimo būdą.

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

 

Turiu ir kitą, geresnį sprendimo būdą.

nu nežinau kiek gerumas, bet praleistas vienas nurodymų punktas:

Parašykite funkciją, skaičiuojančią šokėjų poros gautus balus vienam teisėjų balų rinkiniui (pvz., už

techniką), ir ją panaudokite du kartus: skaičiuodami poros balus, gautus už techniką ir už artistiškumą

atskirai

 

P.S. gal kas žinot kaip įmanoma ant pascal įsinjungt tą dalyką , kur rodo eilučių skaičių ?:D

Redagavo VDabar
Nuoroda į pranešimą
Dalintis kituose puslapiuose

nu nežinau kiek gerumas, bet praleistas vienas nurodymų punktas:

 

 

P.S. gal kas žinot kaip įmanoma ant pascal įsinjungt tą dalyką , kur rodo eilučių skaičių ?:D

žinau, kad praleistas, turiu ir kitą, su visais reikalavimais :)

Ieškojau neradau :D. Kai sukompiliuoji, parašo kiek jų yra.

 

Kiek tikitės išlaikyt šitą reikalą? :rolleyes: Man kažkaip 75 būtų pats tas, mažai laiko paskaliui skyręs, tai nemanau, kad spėsiu abi programas parašyt :lol:

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

paskaityk mano postą prieš tai :D to paties klausiau :D

neatsinaujino pas mane kai editinai :), na aš manau irgi turėčiau virš 75 gaut, nes vis tiek tikrai nėra sunkiausias egzas (realiai galima per likusias dienas pasiruošti),o ir prarast taškų galima nemažai net norint gaut 100 :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

neatsinaujino pas mane kai editinai :), na aš manau irgi turėčiau virš 75 gaut, nes vis tiek tikrai nėra sunkiausias egzas (realiai galima per likusias dienas pasiruošti),o ir prarast taškų galima nemažai net norint gaut 100 :D

Jo, padarai word/excel/testą = 50 taškų. ~2h lieka, 1programą parašai, kitos kokį skaitymą... ir turi jau ~75 + taškų B-)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Bandau vėl programuot prieš egzą, programą apsirašau per 40-50min, bet dažnai susiduriu su klaidom/error'ais prie kurių kartais reikia pasėdėti. Klausimas: kaip jūs tvarkotės su error'ais, ar nesusiduriat, gal ką patartumėt kaip nedaryt smulkių klaidelių dėl kurių tirpsta brangus laikas?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galima atspausdinti tarpinius rezultatus ir žiūrėti ar jie yra tokie, kokių tikiesi. Galima naudoti debugger ir watches. Sustabdai programą norimoje vietoje ir vykdai programą po vieną eilutę stebėdamas kintamųjų reikšmes. O šiaip, tai galvok ką darai ir viskas bus gerai :D . Jei konkrečiau įvardinsi klaidas, tai gal ką nors geresnio parašysiu

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Debuggeris tiktais klaidu taisymui, jeigu vien pasizejes i errora nezinai kokia ji, eini sau po viena eilute ir matai viska, kur kokia reiksme neateina, kur luzta. O siaip tai nezinau kokia dabar ten sistema nauja egzo, bet praejusiais metais kai buvo atskirai testas ir poto programuot, tai is patirties sakau negaist ten begales laiko tam testuj, pradet ant lapo darytis programas praktines, pats faktiskai visas 3 (o gal 2 buvo, nebepamenu jau) pasirases buvau jau, pergalvojes, tai nuejes prie kompo per 1h viska padariau ir isejau laimingas :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
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ą...