130174800 siruri de caractere.docx

Upload: mihai-lungu

Post on 10-Oct-2015

19 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/13/2019 130174800 Siruri de Caractere.docx

    1/12

    Siruri de CaractereTipul STRING. Tipul SET

    Abordare n limbajul PascalNotiuni teoretice

    A. Tipul STRING (ir de caractere)Un ir de caractereeste o succesiune de caractere cuprins ntre dou

    apostrofuri i poate s conin orice caractere: litere mari i mici, caracterespeciale (#, &, etc.) i delimitatori (virul, punct, etc.).

    !im"aul $ascal folosete standardul %', conform cruia ecare caracterse caracteri*ea* printr+un aa+numit cod %', un ntre cuprins ntre i -.%stfel, caracterele+liter mare %, /, 0, 1 au codurile de la 2 la 3, n aceastordine, caracterele+liter mic a, ", 0, * au codurile de la 34 la 5--, iarcaracterele+cifr , 5, 0, 3 au codurile ntre 67 i 4. '8nd compar doucaractere, calculatorul compar de fapt codurile lor %'.

    9ntre codurile %' ale celor dou litere+perece e;ist relaia:

    codul caracterului-liter mare + 32 = codul caracterului-liter mic

    Proceduri i unc!ii predeinite pentru iruri

    1) Funcia COPY copy(

  • 7/13/2019 130174800 Siruri de Caractere.docx

    2/12

    - transform numrul n irul de caractere corespunztor, pe care l memoreaz n parametrul. La apel, parametrul va fi un identificator de variabil de tip string.0) Procedura al(

  • 7/13/2019 130174800 Siruri de Caractere.docx

    3/12

    4ata cateva e"emple de multimi pe care le putem utiliza in problemele de la tipul string si nunumai /ex.: sa verificam daca un caracter din sir este vocala = consoana = litera mare = litera mica =caracter-cifra0. 7om declara aceste multimi ca niste constante, la sectiunea de declarare a constantelordin cadrul unui program 'ascal, precedate de cuvantul-ceie const(, astfel#

    const vocale:?6@,@)@,@4@,@A@,@B@,@a@,@e@,@i@,@o@,@u@;% litere1mari:?6@..@C@;% litere1mici:?a@..@z@;% consoanelitere1mari 2 litere1mici - vocale% cifre:?$@..@D@;% separatatori:? ?,@,@,@.@,@%@,@E@,@F@;%

    Probleme propuse

    5) e citeste de la tastatura un cuvant de lunime cel mult - de caractere,

    format numai din litere mari. a se ase*e toate cuvintele distincte ce se potforma prin eliminarea cate unui sinur caracter din cuvantul dat.Exemplu:pentru cuvantul /?@ se vor asa, nu neaparat in aceasta ordine,cuvintele:

    ?@ /?@ /@ /?

    -) a se scrie un proram care inversea*a intr+un te;t toate cuvintele care incepcu litera a sau % prin olindire. 'uvintele din te;t se considera separate prin

    spatii (unul sau mai multe).Exemplu:Ae;tul B%cesta este un e;emplu aproape perfect asa ca am insistat sa+lve*i acum si tu.C se va transforma in Batsec% este un e;emplu epaorpa perfectasa ca ma insistat sa+l ve*i muca si tu.C.

    D) e dau n propo*itii formate din caractere ale alfa"etului enle* (mari si mici).Ultimele caractere ale ecarei propo*itii sunt cifre care formea*a un numarintre. e cere sa se ase*e aceste propo*itii in ordinea crescatoare a numerelor

    cu care se termina. !a asare, numerele respective vor eliminate.Exemplu: pentru nED si propo*itiile @licopterul *"oara os 5-, %lina citeste ocarte 3, /unica este "atrana si "olnava se va asa

    /unica este "atrana si "olnava

    @licopterul *"oara os

    %lina citeste o carte

    6) e introduc de la tastatura doua numere naturale memorate in doua

  • 7/13/2019 130174800 Siruri de Caractere.docx

    4/12

    varia"ele de tip strin.(numarul de cifre

  • 7/13/2019 130174800 Siruri de Caractere.docx

    5/12

    ?%O%, L%A%A, K'$!?%A, iar cuvantul J este sinurul care se repeta.

    1. Fie dat un sir de caractere alcatuit din mai multe

    propozitii ce se termina cu.(punct). De determinat

    numarul de propozitii din acest text.

    Program P1;

    var s:string;

    i,k:integer;

    begin

    write('dati un sir de caractere:'); readln(s);

    k:=0; for i:=1 to length(s) do

    if si!='"' then k:=k#1;

    write('nr $ro$o%itiilor:',k);

    readln;

    end"

    2. De determinat pozitia primului .(punct) din text

    si pozitia ultimului.(punct).Program P&;

    var s:string;

    i:integer;

    begin

    write('s=');

    readln(s);

    writeln('$o%itia $rimului $unct:',$os('"',s),' ');

    for i:=length(s) downto 1 do

    if si!='"' then

    begin

    write('$o%itia umtimului $unct:',i);

    break;

    end;

    end"

    3. Fie avem un sir de caractere de determinat cite

    litere si cite ci!re sint in acest sir.

    Program P;

    var s:string;

    cif,litere,i:integer;

    begin

    writeln('dati un sir de caractere:'); readln(s);

    cif:=0; litere:=0;

  • 7/13/2019 130174800 Siruri de Caractere.docx

    6/12

    for i:=1 to length(s) do

    case si! of

    '0'""'':cif:=cif#1;

    'a'""'%',''""'*':litere:=litere#1;

    end;

    write('cif=',cif,' ','litere=',litere);

    readln;end"

    ". Fie dat un text de inlocuit vocalele cu # si

    consoanele cu 1.

    Program P+;

    var s:string;

    i:integer;begin

    write('ati un sir de caractere:'); readln(s);

    for i:=1 to length(s) do

    if si! in 'a'""'%',''""'*'! then

    if si! in 'a','','i','-','o','.','e','/','u',''! then si!:=0

    else si!:=1;

    readln;

    end"

    H.Ie atribuiri de valori sunt greite i care mai sunt greelile observate.

    7ar b,s# string% J,n,m# integer% c,t# car% begin

    Keadln/s0% t#lengt/s0% m#pos/,s0% c#copM/s,J-N,O0% c#copM/s,J,O0% c#s:*;% c#s2s% s#c2c% insert/c,s0% b#delete/s,O,G0 7al/m,c,cod0%

    end.

    * Ie efect are urmtoarea secven de instruciuniE 4ndicai tipurile variabilelorce figureaz n aceast secven de instruciuni.

    bH#true% b*#true% suma#$.H% readln/s0% val/s,n,cod0%

  • 7/13/2019 130174800 Siruri de Caractere.docx

    7/12

    if cod $ ten suma #n else bH#false% readln/s0% val/s,n,cod0% if cod $ ten suma #suma2n else b*#false%

    if bH and b* ten Priteln/suma0 else Priteln/Q5u este posibila calcularea sumeiQ0

    G 6utorul acestui program a avut intenia s rezolve problema# Re nlocuit nte"tul dat cuv!ntul S4onS cu cuv!ntul S4onelS. Ie erori se comitE acei unnumr minim de modificri n program astfel nc!t problema propus s fierezolvata corect.7ar s,i#string% J#integer%

    beginPriteln/Q4ntroducei te"tulQ0% readln/s0% for J#H to lengt/s0-* do if copM/s,J,G0Q4onQ ten insert/QelQ,s,J2G0% Priteln/s0%end.

    O Ie se va afia la ecran n rezultatul rulrii urmtorului programE 'rogram 4KBK4% 76K "# 45T)U)K%M#K)6L% sir#TK45U%

    Vegin "#*ONW% str/",sir0%Priteln/sir0% str/",sir0%Priteln/sir0% M#-*O.HD% str/M#H$#*,sir0% Priteln/sir0% M#H*GO+NWD.H$HHH*% str/M#H$#*,sir0% Priteln/sir0% M#H*GO+NWDH$.HHH*% str/M#H$#*,sir0% Priteln/sir0% M#H*GO+.N% str/M#H$#*,sir0% Priteln/sir0% M#H*.GO+% str/M#H$,sir0% Priteln/sir0%

    M#H*.GO+% str/M,sir0% Priteln/sir0 )nd.

    + Ie se va afia la ecran n rezultatul rulrii urmtorului programE

    var s#string:+;% i#bMte% begin

    or i#+ to N$ do s#cr/i02%

  • 7/13/2019 130174800 Siruri de Caractere.docx

    8/12

    Priteln/s0% end.

    Ie se va afia la ecran n rezultatul rulrii urmtoarei secvene de instruciuniE

    s#QH*GO+NWD$abcdefgi&JlQ% Relete/s,$,+0% Priteln/s0%Relete/s,+,*0% Priteln/s0%

    Relete/s,W,G$0% Priteln/s0%

    N Ie se va afia n rezultatul rulrii acestui program n cazul c s cinciQH*GOQ E 'rogram 'rog% var cinci# string% i, zece,cifra,cod, puterea1+#integer% begin Keadln/Iinci0% zece#$% puterea1+#H% for i#lengt/cinci0 doPnto H do begin val/cinci:i;,cifra,cod0% zece# zece 2 cifra 3 puterea1+%

    puterea1+#+ 3 puterea1+% end% Priteln/zece0%end.

    W 'rogramul de mai &os rezolv urmtoarea problema# Re scris un programcare av!nd scrierea unui numr n sistemul de numeraie cu baza + sub forma desuccesiune de cifre ce reprezint valoarea unei variabile de tip string, afieazacest numr n sistemul de numeraie cu baza H$.

    a. 8odificai programul astfel nc!t s se fac validarea datelor iniiale si dacaprintre caracterele citite nu sunt toate corespunztoare condiiei problemei s seafieze mesa&ul respectiv

    b 8odificai programul astfel nc!t sa se fac validarea datelor iniiale si dacaprintre caracterele citite nu respecta toate condiiile problemei s se citeasc dinnou irul de caractere.7ar cinci# string% i, zece,cifra,cod, puterea1+#integer%

    beginKeadln/Iinci0%

  • 7/13/2019 130174800 Siruri de Caractere.docx

    9/12

    zece#$% puterea1+#H% for i#lengt/cinci0 doPnto H do begin

    val/cinci:i;,cifra,cod0% zece# zece 2 cifra 3 puterea1+% puterea1+#+ 3 puterea1+% end% Priteln/zece0%end.

    D 8odificai programul urmtor astfel, nc!t s se afieze toate cifrele cefigureaz n irul de caractere citit i numrul de apariii a tuturor cifrelor.7ar c# car% begin read/c0% Pile c QXQ do begin if /c> Q$Q0 and /c Q$Q0 and /c

  • 7/13/2019 130174800 Siruri de Caractere.docx

    10/12

    sum#$% p#H% or 4# Lengt/0 doPnto H Ro Vegin 7al/:i;,c,Iod0%

    sum#sum 2 p3c% p#p3+% )nd% transform#sum% )nd%Vegin Yrite/Q4ntrodu numarul# Q0% KeadLn/s0% Yriteln/QKaspunsul este Q,transform/s00%)nd. Ieva de simplificat

    H* ormulai problema care se rezolv cu a&utorul urmtorului program

    'rogram 'rog%var a#string% i#integer%

    beginKepeat

    Prite/Q4ntroduceti propozitia# Q0% readln/a0%until lengt/a0 $ %i#H%Yile i < lengt/a0 do if /a:i;Q Q0 and /a:i2H;Q Q0 ten delete/a,i,H0 else i#i 2 H%Priteln/a0%end.

    HG e consider programul ce urmeaz, care rezolv problema# Re la tastaturse citete o propoziie ce conine cel puin un cuv!nt, ntre cuvintele creia pot fimai mult de un spaiu. Iitirea se face p!n a fost introdus cel puin un cuv!nt cecosta cel puin dintr-un caracter. Re licidat spaiile de prisos i de afiat

    propoziia n forma iniial i dup modificare. Zn program de efectuat validareadatelor iniiale. e cere de e"clus din acest program unele r!nduri i declaraiiastfel nc!t programul s fie mai scurt i s rezolve corect aceeai problema. eaccept i scimbarea ordinii r!ndurilor de program.

    'rogram prog%

  • 7/13/2019 130174800 Siruri de Caractere.docx

    11/12

    7ar a, s#string% l,b,i,m,J,n#integer%

    begin

    Kepeat Prite/Q4ntroduceti propozitia# Q0% readln/a0% if lengt/a0$ ten Priteln/Q4ntroduceti propozitia# Q0%until lengt/a0 $ %i#H% s#a% n# lengt/a0%Yile i < n do begin if /a:i; Q Q0 and /a:i2H;Q Q0 ten delete/a,i,H0 else i#i 2 H% Priteln/a0% end%Priteln/Q'ropozitia initiala este Q0%Priteln/s0%Priteln/Q'ropozitia fara spatii in plus este#Q0%Priteln/a0%end.HO e consider urmtoarea problem# e d un ir de caractere. se

    determine numrul de caractere diferite, din care este format acest ir.()ste suficient de dat QaaaQ sau Qaaa aaaaaaaQ i rezultatul obinut cu a&utorul

    programuluice urmeaz nu rezolv corect problema. )"plicai de ce se nt!mpl aceasta.acei un numr mic de scimbri n programul dat nc!t programul obinut srezolve corect problema.

    'rogram 'rog% 7ar

    s#tring% i,nteger% Vegin Yrite/Q4ntrodu sirul de caractere# Q0%KeadLn/s0% i#H% Yile i

  • 7/13/2019 130174800 Siruri de Caractere.docx

    12/12

    &2H% )nd% i#i2H% )nd%

    Prite/i0% Yrite/Q5umarul de caractere diferite este#Q, lengt/s00% )nd.

    H+ e d un cuv!nt a. se determine numrul de litere diferite, din care esteformat acest cuv!nt. Re e"emplu, pentru aQinvitatQ rspunsul este +, pentruaQAreiQ rspunsul este +, iar pentru a Q45AK86T4I6Q rspunsul este D.

    8odificai programul ce urmeaz astfel ca literele ma&uscule i respectivminuscule s fie numrate mpreuna in!nd cont de faptul c la intrare se d nuun cuv!nt ci un te"t n care n afar de litere se mai conin si alte caractere.

    7ara#tring%i,nteger%VeginYrite/Q4ntrodu sirul# Q0% KeadLn/a0%i#H%Yile i