Pereiti prie turinio

Informatikos VBE 2013


Rekomenduojami pranešimai

Man mokytojas sako kad programavimo užduotys bus gerokai sunkesnes nei prieš praėjusius metus, tipo bus įdėtos olimpiadoms skirtos užduotys , kad daug 100 nebūtų. Bet keista nes egzamino laika sutrumpino, o užduotis pasunkins, arba čia jis tik taip gazdina, kad nieko lengvo nesitikėčiau :D

Užduotys gali būti tiek sunkios, kiek yra parašyta egzamino programoje. Aišku gali padaryti bandymą ir pasunkinti, kad atsirastų visokių balų, bet nemanau kad be nuskaitymo, įrašymo, rikiavimo, didžiausios mažiausios reikšmės radimo algoritmų kas nors ypatingo gali būt.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip man nuskaityt tokius duomenis?

Pvz. 1 eilutė:

Antanaitis    Martynas   v ir t.t.

Tarkim vardui skirta 12 pozicijų, pavardei tai pat, bet vardas eina ne iš karto po pavardės, o prasideda 14a pozicija.

 

Tai kaip nurodyt, kad perskaitytų pavardę, o toliau skaitytų tik nuo 14 pozicijos, nes po pavardės lieka 2 tarpai, kurių nereik.

Redagavo thetenken
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kaip man nuskaityt tokius duomenis?

Pvz. 1 eilutė:

Antanaitis    Martynas   v ir t.t.

Tarkim vardui skirta 12 pozicijų, pavardei tai pat, bet vardas eina ne iš karto po pavardės, o prasideda 14a pozicija.

 

Tai kaip nurodyt, kad perskaitytų pavardę, o toliau skaitytų tik nuo 14 pozicijos, nes po pavardės lieka 2 tarpai, kurių nereik.

fd >> ws; praleidzia visus tarpus iki sekancio simbolio. C++ cia.

Redagavo hafnis1324
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Į egzaminą gali įdėti vieną ilgą bei sudėtingą užduotį. Neseniai teko spręsti kelias, anot mano mokytojo, pavyzdines užduotis, tai kiekvienai prirašiau virš 100 eilučių (Pascal), kai kurioms net 150+, užtrukau po daugiau nei valandą. Tik nesu įsitikinęs, ar būtinai įdės kažką sunkaus.

 

Pačioje sudėtingiausioje užduotyje buvo ir olimpiadiniam lygmeniui artimi rikiavimas pagal abėcėlę, dažniausiai pasitaikančių žodžių sąraše ieškojimas. Tad, sakyčiau, verta pasikartoti operacijas su stringais, jei visa kita egzaminui su Pascal/C jau moki.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Į egzaminą gali įdėti vieną ilgą bei sudėtingą užduotį. Neseniai teko spręsti kelias, anot mano mokytojo, pavyzdines užduotis, tai kiekvienai prirašiau virš 100 eilučių (Pascal), kai kurioms net 150+, užtrukau po daugiau nei valandą. Tik nesu įsitikinęs, ar būtinai įdės kažką sunkaus.

 

Pačioje sudėtingiausioje užduotyje buvo ir olimpiadiniam lygmeniui artimi rikiavimas pagal abėcėlę, dažniausiai pasitaikančių žodžių sąraše ieškojimas. Tad, sakyčiau, verta pasikartoti operacijas su stringais, jei visa kita egzaminui su Pascal/C jau moki.

būna ir paprasta virš 100 prirašai, egzaminas - ne olimpiada, ji skirta paprastiems mokiniams, įsivaizduok, įdėtų olimpiadines užduotis į matematikos egzaminą, nereik čia panikuot prieš egzą ir kelt bangų :lol:

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dabar tikrai nebus sunkūs uždaviniai. Juk kitas vertinimas. Bet jei kas nori sunkių uždavinių, išspręskit 2010 m. pakartotinės sesijos užduotis.

tai, kad užduotėlės paprastos, beveik indentiškos, pagr. sesijos užduotims :)

Redagavo Peupeu
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Išsprendei? :D

 

1) Šachmatai:(Tik čia atsakymą į ekraną veda, nes tingėjau į failą vest :) )

program Sachmatai;
type Mas = array [1..100] of integer;
var Rinkinys : array[1..6] of integer;
procedure Rink;
begin
Rinkinys[1]:= 8; Rinkinys[2]:= 2; Rinkinys[3]:= 2;
Rinkinys[4]:= 2; Rinkinys[5]:= 1; Rinkinys[6]:= 1;
end;
procedure Skaitymas(var n:integer; var F:Mas);
var D :text;
   i,j,t :integer;
begin
Assign(D,'U1.txt');
Reset(D);
ReadLn(D,n);
for i := 1 to n do
 begin
  for j := 1 to 6 do
   begin
    Read(D,t);
    F[j]+= Rinkinys[j] - t;
   end;
 end;
Close(D);
end;
function Kiekis(F :Mas) :integer;
var i,kiek :integer;
begin
kiek := 0;
while (F[1]>= 8)and(F[2]>= 2)and(F[3]>= 2)and(F[4]>= 2)and(F[5]>= 1)and(F[6]>= 1) do
 begin
  F[1]-= 8; F[2]-= 2; F[3]-= 2; F[4]-= 2; F[5]-= 1; F[6]-= 1;
  kiek += 1;
 end;
Kiekis := kiek;
end;
var n :integer;
   Figuros :Mas;
begin
Rink;
Skaitymas(n,Figuros);
WriteLn(Kiekis(Figuros));
end.

 

2) Gimtadienis

program Gimtadienis;
type TSvecias = record                                  // Sveèio apraðymas
       vardas :string[15];                             // Sveèio vardas
       Kiekiai:array [1..30] of integer                // Pageidaujamø patiekalø sàraðas
     end;
    TMas = array [1..100] of TSvecias;
    TMas2 = array [1..30] of integer;
// Procedûra skaitanti pradinius duomenis ið failo U2.txt
procedure Skaitymas(var n,p :integer; var S:TMas; var K :TMas2);
var i,j :integer;
   F :text;
begin
Assign(F,'U2.txt');
Reset(F);
ReadLn(F,p);
for i := 1 to p do
 Read(F,K[i]);
ReadLn(F);
ReadLn(F,n);
for i := 1 to n do
 begin
  Read(F,S[i].vardas);
  for j := 1 to p do
   Read(F,S[i].Kiekiai[j]);
  ReadLn(F);
 end;
Close(F);
end;
// Funkcija skaièiuojanti sveèio pietø kainà centais
function SvecioPietuKaina(S:TMas; K :TMas2; n,p :integer) :integer;
var kaina,i :integer;
begin
kaina := 0;
for i := 1 to p do
 kaina += S[n].Kiekiai[i] * K[i];
SvecioPietuKaina := kaina;
end;
// Funkcija skaièiuojanti visos puotos kainà centais
function PuotosKaina(S:TMas; K :TMas2; n,p :integer) :integer;
var i, kaina :integer;
begin
kaina := 0;
for i := 1 to n do
 kaina += SvecioPietuKaina(S,K,i,p);
PuotosKaina := kaina;
end;
// Uþdavinio atsakymø raðymas á failà 'U2rez.txt'
procedure Rezultatai(S:TMas; K:TMas2; n,p :integer);
var F :text;
   i :integer;
begin
Assign(F,'U2rez.txt');
Rewrite(F);
for i := 1 to n do
 WriteLn(F,S[i].vardas,SvecioPietuKaina(S,K,i,p));
WriteLn(F,PuotosKaina(S,K,n,p) div 100,' ',PuotosKaina(S,K,n,p) mod  100);
Close(F);
end;
var Sveciai :TMas;                                  //Sveèiø sàraðas
   Kainos :TMas2;                                  //Patiekalø kainø masyvas
   p, n :integer;                                  // p - patiekalø kiekis; n - sveèiø skaièius
begin
Skaitymas(n,p,Sveciai,Kainos);
Rezultatai(Sveciai,Kainos,n,p);
end.

Redagavo Cibulinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kai rasi užduotis čia įmesk, reiktų išspręst sunkesnius uždavinius.

 

 

P.S. gal ten tas uždavinys su žirniais, kur ūkininkas atvežė žirnių po 1 ir 2 kilogramus...

Taip, tas:

http://www.sugimnazija.lt/_informatika/valstybinis.htm

Čia turbūt kažkas pats sudėjo, nes skiriasi nuo oficialių.

 

Nežinau, neišsprendžiau niekaip su tais žirniais. Labai daug if ir viskas susimaišo. Gal 3 kartus bandžiau iš naujo. Visų kitų metų užduotis tai nesunkiai išsprendžiu.

 

Tau išėjo išspręsti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Mano sprendimas:

program zirniai;

{----------------------------------Konstantos----------------------------------}

const   cDuom='Z1.txt';
       cRez='Z1rez.txt';
       cMax=100;

{----------------------------------Tipai---------------------------------------}

type    masyvas=array [1..cMax] of integer;

{-------------------------------Globalieji kintamieji--------------------------}

var N,N1,N2,                    //Pirkejai(N), 1kg pakuotes(N1), 2kg pakuotes(N2)
   M1,M2,                      //Nupirktas kiekis 1kg (M1) ir 2kg (M2) pakuociu
   kiek,                       //Kiek pirkeju nusipirko bent 1 pakuote
   pask:integer;               //Paskutinio pirkejo nusipirktas zirniu kiekis
   P:masyvas;                  //Pirkeju pageidavimu masyvas

{----------------------------------Proceduros----------------------------------}

//Skaitymo procedura
procedure skaitymas;
var i:integer;
   d:text;
begin
   assign(d,cDuom);reset(d);
   readln(d,N1,N2);
   readln(d,N);
   for i:=1 to N do
       readln(d,P[i]);
   close(d);
end;

//Procedura, kuri suskaiciuoja, kiek buvo parduota 1kg ir 2kg zirniu pakuociu.
//Suskaiciuojama, kiek pirkeju nusipirko bent viena zirniu pakuote.
//Taip pat randamas zirniu kiekis, kuri nusipirko paskutinis pirkejas.
procedure sprendimas;
var i,K:integer;
begin
   M1:=N1;
   M2:=N2;
   K:=0;
   kiek:=0;
   for i:=1 to N do
       begin
       if (N2=0) and (N1=0) then
           break;                  //Jeigu nebera zirniu, stabdomas for ciklas
       while K<P[i] do
           begin
               if (P[i]-K>1) and (N2>0) then
                   begin
                       K:=K+2;
                       N2:=N2-1;
                    end
               else
                   if (N1>0) then
                   begin
                       K:=K+1;
                       N1:=N1-1;
                   end;
               if (N2=0) and (N1=0) then
                   break;         //Jeigu nebera zirniu, stabdomas while ciklas
           end;
       pask:=K;
       kiek:=kiek+1;
       K:=0;
       end;
   M1:=M1-N1;
   M2:=M2-N2;
end;

//Rasymo procedura
procedure rasymas;
var r:text;
begin
   assign(r,cRez);rewrite(r);
   writeln(r,M1,' ',M2);
   writeln(r,kiek);
   writeln(r,pask);
   close(r);
end;

{--------------------------Pagrindine programa---------------------------------}

begin
   skaitymas;
   sprendimas;
   rasymas;
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Su žirniais aš sprendžiau panašiai kaip ir Sqx. Man irgi šitas uždavinys buvo sunkus, tad tikiuosi, kad egze tokių nebus... tfu,tfu,tfu :)

 

Jei įdomu, tai aš dariau taip:

program Zirniai;
type Masyvas = array [1..100] of integer;
{------------------------------------------------------------------------------}
procedure Skaitymas(var N1, N2, N :integer; var P :Masyvas);
var i :integer;
   F :text;
begin
Assign(F,'Z3.txt');
Reset(F);
ReadLn(F,N1,N2);
ReadLn(F,N);
for i := 1 to N do
 ReadLn(F,P[i]);
Close(F);
end;
{------------------------------------------------------------------------------}
procedure Skaiciavimai(N1, N2, N :integer; P :Masyvas;
                      var k_1, k_2, pirk_sk, pask :integer);
var i, reikia1kg, reikia2kg, kiekis :integer;
begin
k_1 := 0; k_2 := 0;  pirk_sk := 0; pask := 0;
 for i := 1 to N do
  begin
  // Issisaugoma pirkejo pageidavimo reiksme;
   kiekis := P[i];
  // Suskaiciuojama kiek reikes maisu po 1kg ir 2kg;
   reikia1kg := P[i] mod 2;
   reikia2kg := P[i] div 2;
  // Skirstomi maisai po 2kg
   if N2 > reikia2kg then begin                        // Jei maisu pardavime yra daugiau nei reikia tada, parduodama kiek reikia;
                            k_2 += reikia2kg;
                            N2  := N2 - reikia2kg;
                            P[i]:= P[i] - reikia2kg * 2
                           end
                      else begin                       // Jei maisu pardavime maziau nei reikia tada parduodama kiek turima, o likes reikalingas
                            k_2 += N2;                  // kiekis priskiriamas prie kintamojo reikia1kg;
                            P[i]:= P[i] - N2 * 2;
                            N2 := 0;
                            reikia1kg := P[i]
                           end;
  // Skirstomi maisai po 1kg
   if N1 > reikia1kg then begin                        // Jei maisu pardavime yra daugiau nei reikia tada, parduodama kiek reikia;
                            k_1 += reikia1kg;
                            N1  := N1 - reikia1kg;
                            P[i]:= P[i] - reikia1kg
                           end
                      else begin                       // Jei maisu pardavime maziau nei riekia tada parduodama kiek turima
                            k_1 += N1;
                            P[i]:= P[i] - N1;
                            N1 := 0
                           end;
  // Jei P[i] reiksme sumazejo kintamojo kiekio atzvilgiu skaitoma, jog pirkejas kazka nusipirko ir
   // prie kintamojo pridedamas vienetas
   if kiekis > P[i] then pirk_sk += 1;
  // Jei maisai baigiasi apskaiciuojamas paskutinio pirkejo nupirktu zirniu kiekis ir nutraukiamas ciklas
   pask := kiekis - P[i];
   if (N2 = 0) and (N1 = 0) then break;
  end;
end;
{------------------------------------------------------------------------------}
procedure Rezultatai(k_1,k_2,k_p,pask :integer);
var F :text;
begin
Assign(F,'Z3rez.txt');
Rewrite(F);
WriteLn(F,k_1,' ',k_2);
WriteLn(F,k_p);
Write(F,pask);
Close(F);
end;

var N1,                                       //Pakuociu po 1 kg kiekis  [1;100]
   N2,                                       //Pakuociu po 2 kg kiekis  [1;100]
   N,                                        //Pirkeju skaicius         [1;100]
   kiek_1kg,                                 //Parduotu pakuociu po 1kg kiekis
   kiek_2kg,                                 //Parduotu pakuociu po 2kg kiekis
   kiek_pirkeju,                             //Kiek pirkeju nusipirko zirniu
   paskutinis   :integer;                    //Kiek kg zirniu nusipirko paskutinis pirkejas
   Pageidavimai : Masyvas;                   //Visi pirkeju pageidavimai
begin
 Skaitymas(N1,N2,N,Pageidavimai);
 Skaiciavimai(N1,N2,N,Pageidavimai,kiek_1kg,kiek_2kg,kiek_pirkeju,paskutinis);
 Rezultatai(kiek_1kg,kiek_2kg,kiek_pirkeju,paskutinis);
end.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

#include <iostream>
#include <fstream>

using namespace std;

void Nuskaitymas(int & fn1, int & fn2, int & fn, int fpageidauja[]);
void Irasymas(int fpakuotes1, int fpakuotes2, int fpirkejai, int fpaskutine);

int main()
{
   int pageidauja[100],n1,n2,n;
   int pakuotes1=0;
   int pakuotes2=0;
   int pirkejai=0;
   int paskutine=0;
   int pageidavimas=0;
   int trukumas=0;
   int g1=0;
   int g2=0;

   Nuskaitymas(n1,n2,n,pageidauja);
   for (int i=0;i<n; i++){
       pageidavimas=pageidavimas+pageidauja[i];
   }

   int viso=n1+n2*2;
   for (int i=0; i<n;i++){
       ////nustatomi kiek pirkejuj galim duoti pakuociu kiek kokiu.
       if (n2>=pageidauja[i]/2){
           g2=pageidauja[i]/2;
       } else {
           g2=n2;
       }
       pageidauja[i]=pageidauja[i]-2*g2;
       if (n1>=pageidauja[i]){
           g1=pageidauja[i];
       } else {
           g1=n1;
       }

       ////jeigu turejom ka duot isiminam ka davem
       if(g1+g2*2>0){
           paskutine=g1+g2*2;
           pirkejai++;
       }

       pakuotes1=pakuotes1+g1;
       pakuotes2=pakuotes2+g2;



       ////sumazinam likucius tiek kiek davem

       n1=n1-g1;
       n2=n2-g2;

   }
   Irasymas(pakuotes1,pakuotes2,pirkejai,paskutine);
   return 0;
}

void Nuskaitymas(int & fn1, int & fn2, int & fn, int fpageidauja[]){
ifstream Duomenys("Z1.txt");
Duomenys >> fn1 >> fn2 >> fn;
for (int i=0; i<fn;i++){
   Duomenys >> fpageidauja[i];
}
Duomenys.close();
}

void Irasymas(int fpakuotes1, int fpakuotes2, int fpirkejai, int fpaskutine){
ofstream Rezultatai("Z1rez.txt");
Rezultatai << fpakuotes1 << " " << fpakuotes2 << endl;
Rezultatai << fpirkejai << endl;
Rezultatai << fpaskutine << endl;
}

 

žirniai, maniškė c++ versija

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