Pereiti prie turinio

audrius159

Nariai
  • Pranešimai

    27
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

audrius159 Pranešimai

  1. Sveiki, reikia Jūsų pagalbos.

     

    type masyvas = array [1..50] of string;

    matrica = array [1..50, 1..100] of string;

    // procedūra įrašanti eilutes į masyvą

    //------------------------------------------------------------------------------

    procedure DuomSkaitymas(var n : integer; var eil : masyvas);

    var F : text; // duomenų failas

    i : integer; // ciklo kintamasis

    Begin

    Assign(F,'duom.txt'); Reset(F);

    ReadLn(f, n);

    for i := 1 to n do

    begin

    Read(F,eil);

    writeln(eil);

    readln(f);

    end;

    Close(F);

    end;

    //------------------------------------------------------------------------------

    procedure Zodis(E : string; k : integer; var Z : string; var p : integer);

    var yra : boolean; // Pozymis, kada rasta zodzio pabaiga

    Begin

    Z := ''; p := 0;

    E := ' ' + E + ' ';

    k := k + 1; // Paieska atliekame nuo pirmo simbolio

    yra := false;

    // Analizuojame zodzius eiluteje E

    while ( k < Length(E)) and not yra do

    Begin

    if (E[k-1] = ' ') and not (E[k] = ' ') then p := k;

    if not (E[k] = ' ') and (E[k+1] = ' ') and (p <> 0) then

    // Radome zodi. Ji isimename ir fiksuojame zodzio pabaiga

    Begin

    Z := Copy(E,p,k-p+1); // Isimename zodi

    yra := true; // Fiksuojama zodzio pabaiga

    end;

    k := k + 1;

    end;

    p := p - 1; // Koreguojama zodzio pradzia

    end;

    //----------------------------------------------------------------------------------------

    // Procedūra surašo žodžius iš eilutės E į matricą Zod kurio elementų skaičius - kiek

    procedure ZodziuMatrica(var Eil : masyvas; var Zod : matrica; var kiek : integer; n : integer);

    var i, k, p :integer;

    Z : string;

    Begin

    for i := 1 to n do

    begin

    k := 0; Z :=' '; kiek := 0;

    // Analizuojame zodzius

    while k < Length(Eil) do

    Begin

    Zodis(Eil,k ,Z ,p);

    // čia kopijuoja žodžius į matricą Zod

    Zod[i, kiek] := Copy(Eil,p,Length(Z));

    kiek := kiek + 1;

    k := p + Length(Z); // Kitas žodis eiluteje

    end;

    end;

    end;

    //---------------------------------------------------------------------------------

     

    Man reikia , jog eilutėje esantis žodžiai būtų surašyti į matricą(yra kelios eilutės), tačiau kažkurioje vietoje gaunu perpildymą. Procedūrą DuomSkaitymas viskas tvarkoje.

     

    P.S. Atsiprašau už netvarkingą kodą.

  2. procedure Sukeitimas(n : integer; var a : mas);
    var laik, i1, i2 : integer;
    begin
    i1 := maziausias(n, a);
    i2 := didziausias(n, a);
    
    laik := a[i1];
    a[i1] := a[i2];
    a[i2] := laik;
    end;
    

     

    tiesiog nurodydamas masyvo indeksą, negali jo sužinoti kviesdamas funkciją (kitose kalbose manau, tai turėtų būti leidžiama), indeksus apsiskaičiuoji, tada nurodai kaip kintamuosius ir viskas veikia ;)

     

    Dėkoju, Driule.

  3. Sveiki, vėl iškilo problema. Nenoriu kurti naujos temos, todėl rašau čia.

     

    Užduotis buvo tokia: duotame skaičių masyve sukeiskite vietomis didžiausią ir mažiausią elementą.

     

    Mano paties kodas:

    ------------------------------------------------------------------------------------------------------------

     

    program Bevarde11;

    type mas = array [1..20] of integer;

    //--------------------------------------------------------

    //Nuskaitomi duomenys iš failo

    procedure DuomSkaitymas (var n : integer; var a : mas);

    var f : text;

    begin

    n := 0;

    Assign(f, 'duom.txt'); Reset(f);

    while not eoln(f) do

    begin

    n := n + 1;

    Read(f, a[n]);

    end;

    Close(f);

    end;

    //-----------------------------------------------------------

    // Funkcija, kurioje surandama indeksas ,kurio masyvas turi mažiausią reikšmę.

    function maziausias (n : integer; a : mas) : integer;

    var i, nr : integer;

    begin

    nr := 1;

    for i := 2 to n do

    if a[nr] > a

    then nr := i;

    maziausias := nr;

    end;

    //-------------------------------------------------------------

    // Funkcija, kurioje surandama indeksas ,kurio masyvas turi didžiausią reikšmę.

    Function didziausias (n : integer; a : mas) : integer;

    var i, nr : integer;

    begin

    nr := 1;

    for i := 2 to n do

    if a[nr] < a

    then nr := i;

    didziausias := nr;

    end;

    //-------------------------------------------------------------

    // procedūra ,kuri turėtų sukeisti mažiausią ir didžiausią masyvo elementus vietomis

    procedure Sukeitimas(n : integer; var a : mas);

    var laik : integer;

    begin

    laik := a[maziausias(n, a)];

    a[maziausias(n, a)] := a[didziausias(n, a)];

    a[didziausias(n, a)] := laik;

    end;

    //------------------------------------------------------------

    // Procedūra išvedanti rezultatus

    procedure rodyti (n : integer; a : mas);

    var i : integer;

    begin

    for i := 1 to n do

    write(a:3);

    end;

    //-----------------------------------------------------------

    var a : mas;

    n : integer;

    begin

    DuomSkaitymas(n, a);

    Write('Pradiniai duomenys: ');

    Rodyti(n, a);

    WriteLn;

    Sukeitimas(n, a);

    write('Duomenys po sukeitimo: ');

    Rodyti(n, a);

    Readln;

    end.

     

    ------------------------------------------------------------------------------------------------------------

     

    Procedūra DuomSkaitymas ir funkcijos maziausias ir didziausias veikia gerai(tikrinau).

    Atkreipkite dėmesį į procedūrą Sukeitimas.

  4. Sveiki, prireikė Jūsų pagalbos. Kažkodėl neįvykdoma šį procedūrą, jei kas galite pažiūrėkite kas blogai.

    //-------------------------------------------------------------------------------------------------------------

    //Procedura nuskaitanti duomenys is tekstinio failo

    procedure duomenys (var vard : mas2; // masyvas i kuri irasomas vardas (string)

    var men, dien : mas1; // masyvai i kuriuos irasoma menesiai ir dienos

    var n : integer); // suskaiciuoja kiek yra zmoniu

    var f : text;

    begin

    n := 0;

    assign(f, 'duom.txt'); Reset(f);

    while not eof do

    begin

    n := n + 1;

    ReadLn(f, vard[n], men[n], dien[n]);

    end;

    Close(f);

    end;

    //---------------------------------------------------------------------------------------------------------------

     

    O čia duomenų failas: (vardas, menuo, diena)

     

    Benas 12 1

    Gintaras 1 2

    Gintare 4 21

    Viktorija 5 21

    Darius 5 19

    Lina 2 14

  5. Gali būti, kad kompiliatorius nesupranta:

     

     

    Pabandyk pasileisti šitą pavyzdį:

    (***************************************************************
    * File:        Integer2.pas
    * Language:    Pascal
    * Description: This program has examples of
    *              integer literal constants.
    ***************************************************************)
    
    PROGRAM Integer2 (OUTPUT);
    
    VAR
     Count: ShortInt;
     LongCount: LongInt;
     Count64: Int64;
    
    BEGIN
     WriteLn ('Pascal Integer Examples');
     Count := 21;
     WriteLn ('Count has a value of ', Count);
     LongCount := -21234567;
     WriteLn ('LongCount has a value of ', LongCount);
     LongCount := 86512;
     WriteLn ('Count has a value of ', LongCount);
     Count64 := 33720368547758;
     WriteLn ('Count64 has a value of ', Count64);
    END.

     

     

    Realiųjų skaičių reikia vengti kaip velnias kryžiaus :) Juos naudoti tik tada, kai užduotis reikalauja realaus skaičiaus.

     

     

    Prie eilutes Count64 := .... meta vėl ta pačia klaidą.

    Incompatible types: got "S80REAL" expected "INT64"

  6. Sveiki. reikia Jūsų pagalbos.

     

    Štai užduotis:

     

    The prime factors of 13195 are 5, 7, 13 and 29.

     

    What is the largest prime factor of the number 600851475143 ?

     

    Mano paties kodas:

     

    program Bevardė99;

    var

    sk,

    dal

    : longint;

    begin

    sk := 600851475143;

    dal := 2;

    while sk > 1 do // Kol sk didesnis už 1 vyksta ciklas

    begin

    if sk < dal then // tikrinama ar sk nėra mažesnis už daliklį

    begin

    dal := sk * (dal-1); // jei sąlyga tenkinama, daliklis sumažinamas vienetu ir surandamas dižiausias galimas daliklis

    sk := 1; // ir sk = 1 ,kad sustabdytų ciklą.

    end

    else if sk mod dal = 0 // Tikrinama ar sk dalinasi be liekanos

    then if sk = dal // Jei preiš tai sąlyga buvo teisinga, dabar tikrina ar sk ir daliklis nėra lygus

    then sk := 1 // Jei teisinga sk priskiriama 1 ir dižiausias daliklis yra surastas

    else // Jei nėra lygus tada surandama nauja sk reikšmė, daliklis padidinamas vienetu

    begin

    sk := sk div dal;

    dal := dal + 1;

    end

    else dal := dal + 1; // Jei visos kitos sąlygos neteisingos

    end;

    WriteLn(dal); // Išvedama didžiausias galimas daliklis

    Readln;

    end.

  7. Sveiki, noriu paklausti kokius reikėtų laikyti egzaminus, kurių pamokų užtektų metinio pažymio, norint studijuoti programavimą ar kažką panašaus? Taip pat kokius dalykus reikėtų pasirinkti vienuoliktoje klasėje? Aiškų lietuvių kalbą, matematika, informatika... Kas toliau? ;)

  8. program Bevardë85;
    var E : char;
       men : string;
    begin
    Write ('Áveskite mënesá: ');
    ReadLn (men);
    E := men[1];
    If E = 'B' then If men = 'Birzelis' then E := 'A';
    If E = 'R' then If men = 'Rugpjutis' then E := 'U';
    If E = 'S' then If men = 'Sausis' then E := 'C';
    If E = 'L' then If men = 'Liepa' then E := 'I';
    If E = 'G' then If men = 'Gruodis' then E := 'T';
    Case E of
    'C' : WriteLn(1);
    'V' : WriteLn(2);
    'K' : WriteLn(3);
    'B' : WriteLn(4);
    'G' : WriteLn(5);
    'A' : WriteLn(6);
    'I' : WriteLn(7);
    'U' : WriteLn(8);
    'R' : WriteLn(9);
    'S' : WriteLn(10);
    'L' : WriteLn(11);
    'T' : WriteLn(12);
    End;
    Readln;
    end.
    

     

    Na jeigu būtinai reikia panaudoti case tai štai tokį šokį kodą padariau :) Bet kaip minėjo tikrai geriau naudot if'ą

     

    Dėkoju labai, nereikėjo taip vargintis. :) Anas būdas daug paprastesnis ir trumpesnis. ;)

  9. Sveiki! Ir vėl reikia pagalbos.

     

    Štai programa.

     

    program Bevardė85;

    var E : string;

    begin

    Write ('Įveskite mėnesį: ');

    ReadLn (E);

    Case E of

    Sausis : WriteLn (1);

    Vasaris : WriteLn (2);

    Kovas : WriteLn (3);

    Balandis : WriteLn (4);

    Geguze : WriteLn (5);

    Birzelis : WriteLn (6);

    Liepa : WriteLn (7);

    Rugpjutis : WriteLn (8);

    Rugsejis : WriteLn (9);

    Spalis : WriteLn (10);

    Lapkritis : WriteLn (11);

    Gruodis : WriteLn (12)

    orherwise WriteLn ('Įvestas netaisyklingai parašytas mėnuo');

    end;

    Readln;

    end.

     

    Reikia ,kad įvedus mėnesio pavadinimą atspausdintų to mėnesio eiles numerį naudojant CASE.

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