Feeds:
Articole
Comentarii

Archive for the ‘Şir de caractere’ Category

Fişier care conţine funcţii care pot fi utilizate în cadul limbajului C++ cu şirurile de caractere.

Siruri_de_caractere_Adrian_NITA

Read Full Post »

7.Se citesc de la tastatură numele a n persoane. Se cere să se scrie un program în care :

a) se afişează numele care încep cu pop, de exemplu : pop, popescu, popa, popovici etc.

b) se construieşte un şir de caractere din aceste nume prin concatenarea lor, fiecare 2 nume fiind separate în şir prin câte un spaţiu. Se afişează şirul obţinut

c) se elimină din şirul de la punctul b) numele care încep cu pop. Se afişează şirul obţinut.

var t,s:string;

i,n,p1,p2:byte;

begin

write(‘n=’); readln(n);

t:=”;

for i:=1 to n do

begin

write(‘s=’); readln(s);

if pos(‘pop’,s)=1 then writeln(s);

t:=t+s;

end;

writeln(t);

t:=’ ‘+t;

while pos(‘ pop’,t)>0 do

begin

p1:=pos(‘ pop’,t);

p2:=p1+4;

while (t[p2]<>’ ‘) and (p2<=length(t)) do

p2:=p2+1;

delete(t,p1,p2-p1)

end;

if t[1]=’ ‘ then delete(t,1,1);

writeln(t)

Read Full Post »

Sunt grile din variantele de bac de anul trecut si probleme din culegerea specificata la finalul documentului

Grile_string

Probleme_string

Read Full Post »

5.Să se scrie un algoritm care multiplică un şir de caractere dat de n ori. Ex: fiind dat şirul ‘WAKA’ şi n=2, algoritmul va genera şirul ‘WAKAWAKA’.

var t,s:string; n,i:byte;

begin

write(‘s=’); readln(s);

write(‘n=’); readln(n);

t:=s;

for i:=1 to n-1 do

insert(t,s,1);

writeln(s)

end.

6.Să se verifice dacă 2 cuvinte se pot obţine unul din celălalt prin permutarea literelor. Nu se face distincţie între literele mari şi mici ale alfabetului. Ex: cuvântul ‘CUPTOR’ se poate obţine din cuvântul  ‘CoRuPt’ prin permutarea literelor.

var s1,s2:string; i:byte; ok:boolean;

begin

write(‘s1=’); readln(s1);

write(‘s2=’); readln(s2);

if length(s1)<>length(s2) then writeln(‘Nu se poate obtine’)

else begin

for i:=1 to length(s2) do

s2[i]:=upcase(s2[i]);

i:=1; ok:=true;

while (i<=length(s1)) and ok do

if pos(upcase(s1[i]),s2)<>0 then i:=i+1

else ok:=false;

if ok then writeln(‘Se poate obtine’)

else writeln(‘Nu se poate obtine’)

end

end.

7.Se citeşte de la tastatură un număr întreg cu maxim 10 cifre sub forma unui şir de cifre. Să se elimine o cifră aleasă astfel încât numărul rămas să aibă cifrele în ordine crescătoare. Dacă sunt mai multe soluţii se vor afişa toate, iar dacă problema nu are nici o soluţie se va tipări un mesaj. Un număr se va afişa o singură dată. Ex: pentru 2435 poate fi eliminată cifra 3 rămânând numărul 245 sau cifra 4 rămânând numărul 235.

var s,t:string;

v:array[1..10] of string; i,j,n:byte; ok,exista:boolean;

begin

write(‘s=’); readln(s);

n:=0;

for i:=1 to length(s) do

begin

t:=s;

delete(t,i,1);          {se elimina cifra de pe pozitia i}

ok:=true; j:=1;

while (j<length(t)) and ok do           {se verifica daca cifrele ramase sunt in ordine crescatoare}

if t[j]<=t[j+1] then j:=j+1

else ok:=false;

if ok then begin   {daca cifrele ramase sunt in ordine crescatoare}

exista:=false; j:=1;

while (j<=n) and not exista do   {se verifica daca numarul a mai fost gasit}

if v[j]=t then exista:=true

else j:=j+1;

if not exista then begin                   {daca numarul nu a mai fost gasit}

n:=n+1;       {se adauga in vector}

v[n]:=t

end

end

end;

if n=0 then writeln(‘Nu este solutie’)

else for i:=1 to n do

write(v[i],’ ‘)

end.

 

2.Scrieţi un program care converteşte un şir de caractere într-un întreg. Conversia se opreşte odată cu întâlnirea unui caracter care nu este cifră. Ex: dacă şirul este 123ef34 se va obţine numărul întreg 123.

vars:string; x:longint; er:integer;

begin

write(‘s=’); readln(s);

val(s,x,er);

if er<>0 then begin

s:=copy(s,1,er-1);

val(s,x,er)

end ;

writeln(x)

end.

Read Full Post »

String

1.Să se scrie un program care citeşte un text de la tastatură şi îl traduce în limba păsărească astfel: fiecare vocală x va fi înlocuită prin şirul xpx.

var s,x:string;

i:byte;

begin

write(‘s=’); readln(s[i]);

x:=”;

for i:=1 to length(s) do

if (s[i]=’a’) or (s[i]=’e’) or (s[i]=’i’) or (s[i]=’o’) or (s[i]=’u’) or (s[i]=’A’) or (s[i]=’E’) or (s[i]=’I’) or (s[i]=’O’) or (s[i]=’U’)

then x:=x+s[i]+’p’+s[i]

else x:=x+s[i];

writeln(x)

end.

 

Alte modalităţi de verificare dacă o literă este vocală:

2) if s[i] in [‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘A’, ‘E’, ‘I’, ‘O’, ‘U’] then…

sau

if upcase(s[i]) in [‘A’, ‘E’, ‘I’, ‘O’, ‘U’] then…

3) if pos(s[i],’aeiouAEIOU’) then……..

sau

if pos(upcase(s[i]), ‘AEIOU’) then…..

 

2.Să se elimine toate apariţiile caracterului spaţiu dintr-un text.

Ex. Dacă textul iniţial este ‘   abc   def         ghi        ‘ în final se va obţine ‘abcdefghi’.

I Metodă

var s:string; i:byte;

begin

write(‘s=’); readln(s);

i:=1;

while i<=length(s) do

if s[i]=’ ‘ then delete(s,i,1)

else i:=i+1;

writeln(s)

end.

II Metodă

var s:string;

begin

write(‘s=’); readln(s);

while pos(‘ ‘,s) do

delete(s,pos(‘ ‘,s),1);

writeln(s)

end.

4.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se vor afişa toate. Ex: dacă liniile citite de la tastatură sunt:

aaaaaa

bbb

dfgh

cccccc

dddddd

fgh

se vor afişa

aaaaaa

cccccc

dddddd

var s:string; i,n,lungmax:byte;

v:array[1..30] of string;

begin

write(‘s=’); readln(s);

n:=0; lungmax:=0;

while s<>” do

begin

n:=n+1;

v[n]:=s;

if length(s)>lungmax then lungmax:=length(s);

write(‘s=’); readln(s);

end;

for i:=1 to n do

if length(v[i])=lungmax then writeln(v[i])

end.

4b.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se va afişa ultima. Ex: dacă liniile citite de la tastatură sunt:

aaaaaa

bbb

dfgh

cccccc

dddddd

fgh

se va afişa

dddddd

var s,lmax:string;

begin

write(‘s=’); readln(s);

lmax:=”;

while s<>” do

begin

if length(s)>=length(lmax) then lmax:=s;

write(‘s=’); readln(s);

end;

writeln(lmax)

end.

 

4b.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se va afişa prima. Ex: dacă liniile citite de la tastatură sunt:

aaaaaa

bbb

dfgh

cccccc

dddddd

fgh

se va afişa

aaaaaa

var s,lmax:string;

begin

write(‘s=’); readln(s);

lmax:=”;

while s<>” do

begin

if length(s)>length(lmax) then lmax:=s;

write(‘s=’); readln(s);

end;

writeln(lmax)

end.

Read Full Post »

String

Probleme string:problemestring

Se citesc de la tastatură 2 cuvinte şi o valoare p. Să se verifice dacă cele 2 cuvinte sunt rime, afişându-se un mesaj corespunzător. Spunem că cele 2 cuvinte sunt rime dacă ultimele p caractere din cele  cuvinte coincid.

var s1,s2:string; p:byte;

begin

write(‘s1=’);readln(s1);

write(‘s2=’);readln(s2);

write(‘p=’);readln(p);

if copy(s1,length(s1)-p+1,p)=copy(s2,length(s2)-p+1,p) then writeln(‘cuvintele sunt rime’)

else writeln(‘cuvintele nu sunt rime’)

end.

Read Full Post »

String

Se citeşte de la tastatură un cuvânt de maxim 20 caractere. Să se afişeze toate prefixele cuvântului, câte unul pe câte un rând. Ex: pentru cuvântul PASCAL se va afişa

P

PA

PAS

PASC

PASCA

var s:string[20];

i:byte;

begin

write(‘s=’); readln(s);

for i:=1 to length(s)-1 do

writeln(copy(s,1,i))

end.

Read Full Post »

String

1.Se citeşte de la tastatură un text. Să se afişeze toate cuvintele din text, câte unul pe câte un rând.

var s,t:string;

i:byte;

begin

write(‘s=’);readln(s);

i:=1;

while i<=length(s) do

begin

while (s[i]=’ ‘) and (i<=length(s)) do

i:=i+1;

t:=”;

while (s[i]<>’ ‘) and (i<=length(s)) do

begin

t:=t+s[i];

i:=i+1

end;

writeln(t)

end

end.

 

2.Se cite;te de la tastatură un text. Se cere să se afişeze fiecare caracter care apare în text împreună cu frecvenţa sa de apariţie, câte un caracter urmat de frecvenţa de apariţie pe câte un rând al ecranului.

var s:string;   i:byte;

f:array[0..255] of byte;

begin

write(‘s=’);readln(s);

for i:=0 to 255 do

f[i]:=0;

for i:=1 to length(s) do

f[ord(s[i])]:=f[ord(s[i])]+1;

for i:=0 to 255 do

if f[i]<>0 then writeln(chr(i),’ ‘,f[i])

end.

Read Full Post »

Subprograme predefinite

– procedura STR

– procedura VAL

Read Full Post »

Suprograme predefinite:

– funcţia POS

– procedura INSERT

– procedura DELETE

Read Full Post »

Older Posts »