Parašė bruzgis· 2011 Gru. 4 14:12:55
#25
paprasta.
issiskaidyk i tris skaicius,
TUomet sudarinek galimas datas, tinkancias datas susirasyk i masyva,
gale patikrink ar masyve yra elementu, jei nera - klaidinga data :)
Simbolių eilutės
Tai simbolinio tipo praplėtimas. Šio tipo reikšmės - simbolių eilutės, kurias sudaro kompiuterio abėcėlės simbolių kombinacijos. Maksimalus simbolių skaičius eilutėje yra 256.
Simbolių eilutė žymima standartiniu vardu string. Tačiau galimas ir toks aprašymas:
string[<maksimalus leistinas simbolių skaičius>]
Pavyzdžiui:
var zodis: string;
zodzio_dalis: string[5];
Kintamasis zodis galės turėti ne daugiau negu 256 simbolius, o kintamasis zodzio_dalis - ne daugiau kaip 5. Pavyzdžiui, atlikus priskyrimus:
zodis:='Jonas';
zodzio_dalis:='';
kintamasis zodis įgis reikšmę 'Jonas', o kintamasis zodzio_dalis taps tuščia simbolių eilute, t.y. eilute, kurioje nėra nė vieno simbolio.
Tarp eilučių galima sąjungos operacija. Pavyzdžiui, jeigu vardas ir pavardė yra string tipo kintamieji, vardas reikšmė yra 'Jonas', pavardė reikšmė yra 'Petraitis', tai reiškinio:
vardas + ' ' + pavardė reikšmė bus 'Jonas Petraitis'.
Dirbant su eilutėmis, galima naudoti indeksus, t.y. dirbti kaip su simbolių masyvais. Pavyzdžiui, vardas[1] bus lygu 'J', o vardas[2] bus lygu 'o'.
Eilutes galima lyginti (operacijos =, <>, <, >, <=, >=). Lyginama nuo pirmo simbolio, pagal jų kodus.
Pavyzdžiui:
'abc' > 'ab',
'ASILAS' < 'alga'.
Pastaba. Atkreipkite dėmesį į du dažnai panaudojamus programų fragmentus, kai s ir p yra string tipo.
1.
p:= '';
for i := 1 to length(s) do
p:= p + s[i];
2.
p:=’’;
for i := 1 to length(s) do
p:= s[i] + p;
Jei s yra žodis ar sakinys, tai pirmame programos fragmente ir p bus tas pats žodis ar sakinys, o kitu atveju p yra tas žodis ar sakinys užrašytas iš kito galo.
Dirbant su eilutės tipo kintamaisiais gali būti naudojamos veiksmų su eilutėmis funkcijos ir procedūros.
Veiksmų su eilutėmis funkcijos ir procedūros
Darbui su eilutėmis dažniausiai naudojamos šios standartinės funkcijos:
pos(s1, s) - nurodo simbolių eilutės s1 pradžią eilutėje s.
Jei s1 įeina į s, tai funkcija pateikia pirmojo eilutės s1 simbolio eilutėje s numerį. Priešingu atveju pateikiamas 0. Pavyzdžiui, pos('cd', 'abcdef') reikšmė bus lygi 3.
concat(s1, s2, ... , sn) - sujungia eilutes s1, s2, ... , sn į vieną.
Tai sąjungos operacijos '+' analogas.
copy(s, m, n) - pateikia eilutės s n simbolių pradedant pozicija m.
Pavyzdžiui, jeigu string tipo kintamojo tekstas reikšmė yra 'abcdefghij', tai funkcijos copy(tekstas, 3, 2) reikšmė bus 'cd'.
length(s) - randa eilutės s ilgį.
Pavyzdžiui, jei s reikšmė lygi 'Jonas', tai length(s) reikšmė bus lygi 5.
upcase(s) - eilutės s mažąsias raides pakeičia didžiosiomis.
Veikia tik lotyniškos abėcėlės raides, kitų simbolių nekeičia. Pavyzdžiui, jeigu s reikšmė lygi 'Labas rytas!', tai upcase(s) reikšmė bus 'LABAS RYTAS!'.
lowercase(s) - eilutės s didžiąsias raides pakeičia mažosiomis.
Veikia tik lotyniškos abėcėlės raides, kitų simbolių nekeičia. Pavyzdžiui, jeigu s reikšmė lygi 'Labas rytas!', tai lowercase(s) reikšmė bus 'labas rytas!'.
Darbui su eilutėmis dažniausiai naudojamos šios standartinės procedūros:
delete(s, m, n) - šalina dalį eilutės,
čia s - string tipo kintamasis (simbolių eilutė), m - nuo kur šalinti simbolius, n - kiek simbolių šalinti.
Pavyzdžiui, jei vardas kintamojo reikšmė lygi 'Jonas', atlikus procedūrą delete(vardas, 3, 2) - kintamojo vardas reikšmė bus 'Jos'.
insert(s1, s, n) - įterpia į eilutę s kitą eilutę s1 pradedant n-tąja pozicija.
Pavyzdžiui, jei kintamojo pavarde reikšmė lygi 'Petraitis' atlikus procedūrą insert('uk', pavarde, 5), pavarde atrodys taip - 'Petrukaitis'.
str(r, s) - transformuoja sveikąjį arba realųjį skaičių r į tekstą (simbolių eilutę) s.
Kaip ir procedūroje writeln, galima nurodyti, kiek pozicijų skiriama transformuojamam duomeniui, ir jei r - realusis, kiek turi būti ženklų po kablelio. Pavyzdžiui, jeigu i - sveikojo tipo kintamasis, kurio reikšmė lygi 10, o tekstas - string tipo, tai, atlikus procedūrą str(i+11, tekstas), kintamojo tekstas reikšmė bus lygi '21', o atlikus procedūrą str(i+11.5:5:2, tekstas), kintamojo tekstas reikšmė bus lygi '21.50'.
val(s, r, kodas) - transformuoja tekstą (simbolių eilutę) s į sveikojo arba realiojo tipo kintamąjį r. kodas - integer tipo kintamasis, nurodantis pirmojo neteisingo simbolio numerį; jei jo reikšmė, atlikus procedūrą val, yra lygi 0, tai transformuota sėkmingai.
Pavyzdžiui, jeigu string tipo kintamojo tekstas reikšmė yra '123', o i - sveikojo tipo, tai, atlikus procedūrą
val(tekstas, i, kodas), kintamojo i reikšmė bus 123, o kintamojo kodas reikšmė bus 0.
p:= '';
for i := 1 to length(s) do
p:= p + s[i];
situo principu prasuki cikla
pirmi du ciklo elementai pirmas skaicius
ketvirtas, penktas - antras skaicius
7,8 elementai - trecias skaicius
O tuomet jau deliok, tikrink ir isirasinek i masyva
Redagavo bruzgis· 2011 Gru. 4 15:12:00