Pereiti prie turinio

Mantonijo

Patvirtinti nariai
  • Pranešimai

    295
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    100%

Mantonijo Pranešimai

  1. Aciu uz pagalba, programa padaryta. Tik nemokejau padaryti, jog

    Esant  vienodam gyventojų  skaičiui – rikiuoti abėcėlės tvarka pagal apskrities pavadinimą.

     

    Jeigu kam reikes programa "Miestai ir apskritys":

     

    program mia;
    type duom = record
       miest : string[20];
       aps   : string[13];
       gyv   : longint;
       end;
    
       rez = record
       apz : string[13];
       mm  : longint;
       gyv : longint;
       end;
       Mas1 = array [1..50] of rez;
       Mas = array [1..103] of duom;
    
    var A:Mas;
       B:Mas1;
       n:integer;
    
    ////////////////////////////////////////////////////////////////////////////////
    procedure Skaitymas;
    var i:integer;
       F:text;
    
       begin
    
       Assign(F, 'U2.txt');
       Reset(F);
       ReadLn(F, n);
    
           for i:= 1 to n do begin
           ReadLn(F, A[i].miest, A[i].aps, A[i].gyv);
           end;
    
       Close(F);
    end;
    
    ////////////////////////////////////////////////////////////////////////////////
    var i, j, k, l, nuo, s:integer;
       max:longint;
       laik:duom;
       laikin:rez;
       R:text;
    
       begin
       l:=1;
       s:=0;
       max:= 999999;
    
       Assign(R, 'U2rez.txt');
       Rewrite(R);
       Skaitymas;
    
    //////// Masyvo rikiavimas pagal abecele ///////////////////////////////////////
    
    for i:=1 to n-1 do begin
       nuo:=i;
       for j:= i+1 to n do
       if (A[j].aps <= A[nuo].aps) then nuo:=j;
       laik:=A[nuo];
       A[nuo]:=A[i];
       A[i]:=laik;
       end;
    ///////// Gyventoju sudetis i B[l] masyva ir maziausio miesto radimas //////////
    
       for i:= 1 to n do begin
       B[l].apz:= A[i].aps;
       j:= i + 1;
           if (B[l].apz = A[j].aps) then begin
           B[l].gyv:=B[l].gyv + A[i].gyv;
           if (max > A[i].gyv) then begin max:= A[i].gyv;
                                          B[l].mm:=max;
                                    end;
           end
           else begin  B[l].gyv:=B[l].gyv + A[i].gyv;
                       l:= l + 1;
                       s:= s + 1;
                       max:= 999999;
                end;
       end;
      ////// Surusiavimas mazejimo tvarka /////////////////////////////////////////
    
      for i := 1 to s-1 do begin
      nuo := i;
       for j := i+1 to s do
       if B[j].mm < B[nuo].mm then nuo := j;
      laikin := B[i];
      B[i] := B[nuo];
      B[nuo] := laikin;
    end;
       //////// Spausdinimas //////////////////////////////////////////////////////
    
       WriteLn(R, s);
       for i:= 1 to s do
       WriteLn(R, B[i].apz, ' ', B[i].mm, ' ', B[i].gyv);
    
       Close(R);
    
    end.

  2. Pabandyk taip:

     

      for i:= 1 to n do begin                // Nuo 1 iki viso masyvo
           for j:= i+1 to n do
           if (A[i].aps = A[j].aps)             // Jeigu apskritys lygios
           then 
             B[l].gyv:= B[l].gyv + A[j].gyv;      // I kita masyva prideda gyventojus
       end;
    

     

    Taip veikia, bet cia sudeda visus gyventojus ir neprideda 1 gyventoju skaiciaus, o ne pagal apskritis.

  3. Mantonijo laikysi informatikos egza?

    Taip

     

    As esu padares algoritma, kuris surikiuoja pagal apskritys ir i kita masyva pridedineja gyventojus, taciau Ranges Overrun ties sita eilute:

    then B[l].gyv:= B[l].gyv + A[nuo].gyv      // I kita masyva prideda gyventojus

     

    for i:=1 to n-1 do begin              ///// Rikiavimas
       nuo:=i;
       for j:= i+1 to n do
       if (A[j].aps <= A[nuo].aps) then nuo:=j;
       laik:=A[nuo];
       A[nuo]:=A[i];
       A[i]:=laik;
       end;
    
       for i:= 1 to n do begin                // Nuo 1 iki viso masyvo
       nuo:= i;
           for j:= i+1 to n do                
       if (A[nuo].aps = A[j].aps)             // Jeigu apskritys lygios
       then B[l].gyv:= B[l].gyv + A[nuo].gyv      // I kita masyva prideda gyventojus
       else begin B[l].gyv:= B[l].gyv + A[j].gyv; // Jeigu nelygios, prideda paskutine reiksme ir kito masyvo skaitikliui prideda 1
                  l:= l + 1;
            end;
       end;

  4. Man viskas veikia be klaidų. Patikrink U2 failą, ar tarpelių kiekis tarp žodžių teisingas... ir gal vis dėl to laikas išsiaiškinti kaip debageris veikia? :unsure:

     

    Kadangi gyventoju skaicius didelis tai reikejo naudot longint ir viskas issisprende, bet dabar problema, kaip surikiuoti pagal abecele (apskritis) ir kartu pagal gyventoju skaiciu.

  5. Sveiki, nesuprantu kodel man skaityme raso "Ranges overrun"?

     

    II progrmavimo uzduotis "Miestai ir apskritys"

     

    program mia;
    type duom = record
       miest : string[20];
       aps   : string[13];
       gyv   : integer;
       end;
    
    type rez = record
       apz : string[13];
       mm  : integer;
       gy : integer;
       end;
       Mas1 = array [1..50] of rez;
       Mas = array [1..103] of duom;
    
    var A:Mas;
       B:Mas1;
       n:integer;
    
    ////////////////////////////////////////////////////////////////////////////////
    procedure Skaitymas;
    var i:integer;
       F:text;
    
       begin
    
       Assign(F, 'U2.txt');
       Reset(F);
       ReadLn(F, n);
    
           for i:= 1 to n do
           ReadLn(F, A[i].miest, A[i].aps, A[i].gyv);
    
       Close(F);
    end;
    
    ////////////////////////////////////////////////////////////////////////////////
    var i, j, k, l, nuo:integer;
       laik:duom;
       R:text;
    
       begin
    
       Assign(R, 'U2rez.txt');
       Rewrite(R);
       Skaitymas;
    
       ////// Rikiavimas pagal abecele ir gyv. sk. ////////////////////////////////
    
       for i:=1 to n-1 do begin
       nuo:= i;
           for j:=i+1 to n do
           if((A[j].aps <= A[nuo].aps) and (A[j].gyv < A[nuo].gyv)) then nuo:= j;
       laik:=A[nuo];
       A[nuo]:=A[i];
       A[i]:=laik;
       end;
    
       ////////////// Tikrinu kaip surikiavo ir atspausdinu ///////////////////////
    
       for i:= 1 to n do
       WriteLn(R, A[i].miest, ' ', A[i].aps, ' ', A[i].gyv);
    
       Close(R);
    
    end.

  6. Stai rikiavimo procedura:

     

    procedure Išrinkimas (var a:array of integer; N:integer);
    var i, j, nuo, t: integer;
    begin
     for i := 1 to N-1 do
     begin
       nuo := i;
       for j :=i+1 to N do
         if a[j] < a[nuo] then nuo := j;
         t := a[nuo];
         a[nuo] := a[i];
         a[i] := t
       end;
     end;

  7. Sedejau 2 val. prie uzduoties ir atsakyma vietoje 28 gaunu 30.

     

    I progrmavimo uzduotis "Siuntu tarnybos"

     

    program siuntiniukai;
    type siuntos = record
       pav : string[10];
       x : integer;
       y : integer;
       viso : integer;
       end;
    type Mas = array [1..50] of siuntos;
    
    ////////////////////////////////////////////////////////////////////////////////
    
    var A:mas;
       n, m, visi, z, i:integer;
       R:text;
    
    ////////////////////////////////////////////////////////////////////////////////
    
    procedure Skaitymas;
    var i:integer; // Skaitiklis
       F:text;    // Duomenu failas
    
       begin
       Assign(F, 'U1.txt');
       Reset(F);
       ReadLn(F, n, m);
    
           for i:= 1 to n do
           ReadLn(F, A[i].pav, A[i].x, A[i].y);
    
       Close(F);
    end;
    
    ////////////////////////////////////////////////////////////////////////////////
    
    function Kilometrai(K:siuntos) : integer;
    var Kil:integer;
    
           begin
    
           Kil:= 2*(abs(K.x) + abs(K.y));
           Kilometrai:= Kil;
    end;
    
    ////////////////////////////////////////////////////////////////////////////////
    
    begin
    
       Assign(R, 'U1rez.txt');
       Rewrite(R);
    
       Skaitymas;  // Nuskaito duomenys is U1.txt
       Visi:= 0;   // Visi nuvaziuoti kilometrai
       z:= 0;     // Vaziuoti kartai
    
    
       for i:= 1 to n do begin
       A[i].viso:= Kilometrai(A[i]); // Suranda kelia iki ir atgal
       while Visi < m do begin
       Visi:= Visi + A[i].viso;
       z:= z + 1;
       end;
       end;
    
       WriteLn(R, z, ' ', Visi, ' ', A[z].pav);
    
       Close(R);
    end.

     

    Atsakymas:

     

    3 30 Kostisa   
    

  8. Tai ar priima į profkę, jei neišlaikau lietuvių egzo? Nes parašyta, kad priima su viduriniu išsilavinimu metams mokytis specialybės, bet, kaip suprantu, nesiskaito vidurinis išsilavinimas, jei neišlaikai lietuvių?

     

    Priima ir be atestato, tik su tuo liudijimu.

  9. Pasižiūrėk ar duomenų faile tikrai teisingai atidėtos reikšmės. Turiu omeny, kad pav - 15 simbolių

     

    Užduotyje nurodyta, kad Pavadinimui skirtos pirmos 15 eilutės pozicijų.

     

    Duomenų failas, kurį susikūriau pats:

     

    6 70 10 15
    Elektrėnai 50.5
    Žiežmariai 20
    Kaunas 22.35
    Raseiniai 80
    Kryžkalnis 20
    Klaipėda 100.8

     

    Pagal šį:

     

    http://i.imgur.com/Jabs5ph.png

     

    Susitvarkiau, reikėjo atidėt dar pora tarpų po pavadinimų.

  10. Sveiki, kodėl meta problemą ties 22 eilute? Kaip suprantu A.pav nuskaito, bet A.kelias jau nebe nuskaito. Kame šaknys?

     

    program Kelionë;
     type
       stoteles = record
        pav : string[15];
        kelias : real;
        hpr, mpr : integer;
       end;
     Mas = array [0..100] of stoteles;
    
    // Duomenų skaitymas
    
    procedure Skaitymas(var A:Mas; var n:integer; var v:real);
     var  F : text;
          i : integer;
    
       begin
       Assign (F, 'U1.txt');
       Reset (F);
       ReadLn (F, n, v, A[0].hpr, A[0].mpr);
    
           for i := 1 to n do
           ReadLn (F, A[i].pav, A[i].kelias);
    
       Close (F);
       end;
    
    var A:Mas;
       n, i:integer;
       v:real;
       R:text;
    
       begin
       Assign(R, 'rez.txt');
       Rewrite(R);
    
       Skaitymas(A, n, v);
    
       for i:=1 to n do
       WriteLn(R, A[i].pav, ' ', A[i].kelias);
       Close(R);
    
    end.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...