siruri de caractere

Se citeşte un text într-o variabilă de tip string, in care cuvintele se despart prin spaţii. Se cere:
a) să se afişeze cuvintele în ordine alfabetică;
b) să se numere cuvintele cu minim 4 vocale distincte.

 

var a:array[1..30] of string;

n:byte;

procedure citire;

var c:char;s:string;i,k:integer;

begin

write('sirul=');readln(s);

n:=1;

i:=1;

k:=length(s);

while(i<=k) do

                    begin

                    a[n]:='';

                    while (s[i]<>' ')and(i<=k) do

                          begin

                          a[n]:=a[n]+s[i];

                          i:=i+1;

                          end;

                    if i<k then begin n:=n+1;i:=i+1;end;

                    end;

end;

procedure afisare;

var i:byte;

begin

for i:=1 to n do

    writeln(a[i]);

writeln;

end;

procedure sortare;

var aux:string;i,j:byte;

begin

for i:=1 to n-1 do

    for j:=i+1 to n do

        if a[i]>a[j] then begin

                          aux:=a[i];

                          a[i]:=a[j];

                          a[j]:=aux;

                          end;

end;

procedure litere_distincte;

var nr,i,p:byte;c:char;

begin

for i:=1 to n do

begin

     nr:=0;

     for c:='a' to 'z' do

         if pos(c,a[i])>0 then nr:=nr+1;

     for c:='A' to 'Z' do

         if pos(c,a[i])>0 then nr:=nr+1;

     if nr>=4 then writeln(a[i]);

end;

end;

begin

citire;

afisare;

writeln('sortare ');

sortare;

afisare;

writeln('cuvintele cu cel putin 4 litere distincte');

litere_distincte;

end.

 

22. Se citeşte de la tastatură un cuvânt. Să se afişeze numărul iniţial de caractere ale cuvântului şi apoi să se şteargă toate vocalele din cuvânt.

var s:string;

n:integer;

procedure sterge;

var x,i:byte;

begin

 x:=pos('a',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('a',s);

              end;

 x:=pos('A',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('A',s);

              end;

 x:=pos('e',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('e',s);

              end;

 x:=pos('E',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('E',s);

              end;

 x:=pos('i',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('I',s);

              end;

 x:=pos('o',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('o',s);

              end;

 x:=pos('O',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('O',s);

              end;

 x:=pos('u',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('u',s);

              end;

x:=pos('U',s);

 while x>0 do begin

              delete(s,x,1);

              x:=pos('U',s);

              end;

 writeln('sirul fara vocale=',s);

 end;

 begin

 write('s=');readln(s);

 writeln('nr de caractere din sir=',length(s));

 sterge;

 end.

 

23. Se citesc de la tastatură 2 şiruri de caractere. Să se verifice dacă sunt egale (la fel) fără a se face deosebire între literele mari şi literele mici.

var s1,s2:string;

procedure citire;

begin

write('primul sir'); readln(s1);

write('al doilea sir');readln(s2);

end;

procedure verificare;

var n1,n2,i:byte;

begin

n1:=length(s1);

n2:=length(s2);

if n1<>n2 then begin write('nu sunt egale');halt; end;

i:=1;

while(i<=n1) do begin

                if upcase(s1[i])=upcase(s2[i])

                 then i:=i+1

                 else begin

                      write('sirurile nu sunt egale');

                      halt;

                      end;

                end;

writeln('siruri egale');

end;

begin

citire;

verificare;

end.

 

counter for wordpress

View My Stats