audrius159
-
Pranešimai
27 -
Užsiregistravo
-
Lankėsi
-
Atsiliepimai
0%
Turinio tipas
Forumas
Kalendorius
Parduotuvė
Akademija
Skelbimai
audrius159 Pranešimai
-
-
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.
-
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.
-
while not eof do
funkcijai eof reikia parametro - failo handlerio.
while not eof(f) do
Dėkoju, iškarto viskas gerai. ;)
-
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
-
Goglėje įsiveskite Jaunųjų programuotojų mokykla ir galėsite paskaityti. ;)
-
Sveiki. Noriu paklausti gal kas yra baigę JPM? Ar verta ten stoti? Prašau išsamių atsakymų. ;)
-
Sveiki,
Bandau registruotis facebook'e tačiau to negaliu padaryti, nes suvedus visą informaciją reikalingą registracijai išmeta štai ką: "Nėra turimos sąskaitos susijusios su šiuo elektroniniu paštu."
Kokia čia problema ir kaip ją išspręsti?
Tikriausiai bandote prisijungti, o ne registruotis.
-
gal pasigirkit kas kiek kg išstumiat čia įdomiau būtų:D
Tai pradėkite nuo savęs. ;)
-
19 prie maždaug 90 kg.
-
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"
-
Prie unit meta klaida: Illegal unit name: ADT_LONGINT
Jeigu kas galite, padekite ja pasinaudoti, nes man dar tokie dalykai suvokti per sunkus.
Ar kaip kitaip išspręsti šią problemą.
-
Real naudok :)
Yra div Operacija.
-
Pasidomėk, ar Int64 užtenka. Jei ne, teks pasirašyt savo struktūrą ir funkcijas apdorojimui.
Meta klaidas dėl tipo.
Incompatibles types: got "S80REAL" expected "INT64"
Tas pats ir su longint.
-
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.
-
Aišku. Dėkoju už atsakymus.
-
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? ;)
-
LT 7, matematika 10.
-
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. ;)
-
Su case neis trumpai jei nori įvesti string visą. Tik su if else gali trumpiau pasidaryt.
if 'Sausis' = E then writeln(1) else if 'Vasaris' = E then writeln(2); t.t.
Pavyko tokiu būdu. ;)
-
Reikia išbandyti. O gal dar kas pasiūlys trumpesnį variantą.
Bet kuriuo atveju dėkoju už pagalbą.
-
http://pascal-programming.info/lesson5.php
variable of type: integer or character ONLY
string tipas negali būt kaip suprantu case
O gal galite pasiūlyti kokį būdą ,kaip tai padaryti? Būtų įvedamas žodis ir atrinktų jo skaičių.
-
pabandyk uždėt prie kiekvieno mėnesio kabute 'sausis' : WriteLn(1); 'vasaris' ir t.t.
Dabar rašoma:
Ordinal ezpression expected
Constant and CASE types do not match
-
O ką tau rašo, ar meta kokį tai errorą?
kompiliatorius aptinka tokias klaidas:
ordinal expression expected
identifier not found sausis.
ir taip su visais kitais.
-
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.
Žodžių skaitymas iš eilutės (pascal)
Programuotojų kampas
Sukurta · Redagavo audrius159
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ą.