Jump to content

spiritfoxll's Content

There have been 8 items by spiritfoxll (Search limited from 22-05-2020)


Sort by                Order  

#637716 Topic Hỏi bài Pascal

Posted by spiritfoxll on 02-06-2016 - 23:52 in Góc Tin học

Dưới đây là một code full từ nén xâu đến giải nén xâu (xâu thuần nhất) :

PROGRAM xau;
uses crt;
var s,ss,st,si:string; i,j,l:integer; f:text;
function kttn(s:string):boolean;
 var x:char; ok:boolean;
 begin
  kttn:=true;
  for i:=1 to length(s) do
   s[i]:=upcase(s[i]);
  for i:=1 to length(s) do
   begin
    ok:=false;
    for x:='A' to 'Z' do
     if s[i]=x then ok:=true;
    if not ok then begin kttn:=false;break;end;
   end;
 end;
procedure nen(s:string;var st:string);
 begin
  ss:='';
  while s<>'' do
   begin
    i:=1;
    while (s[i+1]=s[1])and(i<length(s)) do
     inc(i);
    if i>1 then
     begin
      str(i,si);
      ss:=ss+s[1]+si;
     end
    else ss:=ss+s[1];
    delete(s,1,i);
   end;

  s:=ss;l:=2;
  while l<length(s) do
   begin
    i:=1;
    while i<=length(s)-l do
     begin
      si:=copy(s,i,l);
      j:=i+l;
      ss:=copy(s,j,l);
      while ss=si do
       begin
        j:=j+l;
        ss:=copy(s,j,l);
       end;
      if j=i+l then inc(i)
      else
       begin
        str((j-i)div l,ss);
        delete(s,i,j-i);
        si:='('+si+')'+ss;
        insert(si,s,i);
        i:=i+l+2+length(ss);
       end;
     end;
    inc(l);
   end;
  st:=s;
 end;
function ktcd(st:string):boolean;
 begin
  ktcd:=false;
  for i:=1 to length(st) do
   if st[i]='(' then begin ktcd:=true; break; end;
 end;
procedure giainen(st:string;var s:string);
 var d,c:byte; code:integer;
 begin
  while ktcd(st) do
   begin
    i:=1; c:=0;
    while st[i]<>'(' do inc(i);
    d:=1; j:=i+1;
    while c<d do
     begin
      inc(j);
      if st[j]='(' then inc(d);
      if st[j]=')' then inc(c);
     end;
    si:=copy(st,i,j-i+1);
    delete(st,i,j-i+1);
    delete(si,1,1);
    delete(si,length(si),1);
    j:=i;
    while st[j+1] in['0'..'9'] do inc(j);
    ss:=copy(st,i,j-i+1);
    delete(st,i,j-i+1);
    val(ss,l,code);
    for j:=1 to l do
     insert(si,st,i);
   end;
  i:=1;
  while i<=length(st) do
   begin
    inc(i);
    if st[i] in['0'..'9'] then
     begin
      j:=i;
      while st[j+1] in['0'..'9'] do inc(j);
      ss:=copy(st,i,j-i+1);
      delete(st,i,j-i+1);
      val(ss,l,code);
      ss:=st[i-1];
      for j:=1 to l-1 do insert(ss,st,i);
      i:=i+l-1;
     end;
   end;

  s:=st;
 end;
BEGIN

 assign(f,'XAU.INP');reset(f);

readln(f,s);close(f);

assign(f,'XAU.OUT');rewrite(f);
 if kttn(s) then
  begin
   nen(s,st);
   writeln(f,'Chuoi sau khi nen la: ',st);
   giainen(st,s);
   writeln(f,'Chuoi sau khi giai nen la: ',s);
  end
 else write(f,'Xau ko thuan nhat.');

close(f);
END.

Tách riếng cho mình bài giải nén theo dạng file với ạ.  Với sao bạn không giúp mình mấy bài trước với. Mình có đưa lên rồi.




#635344 Topic Hỏi bài Pascal

Posted by spiritfoxll on 25-05-2016 - 01:04 in Góc Tin học

PROGRAM So_hoan_hao; 
uses crt; 

Var S,n,i,j: integer; 
BEGIN
Clrscr; 
Write('Nhap so n : '); readln(n); 
For i:=1 to n do 
begin 
S:=0; 
For j:=1 to i do 
if i mod j = 0 then 
S:=S+j; 
if S = 2*i then 
write(i:6); 
end; 
Readln; 
END.

(Mấy bài bạn nói rõ đề ra giùm ... như vậy thì chả biết nó là dạng gì ... ví dụ như dãy fibonacci thì mình cũng chat hiểu là viết dãy hay tìm số hay tìm dãy ... nữa :3)

Sao mình in không ra 8128 nhỉ.




#635343 Topic Hỏi bài Pascal

Posted by spiritfoxll on 25-05-2016 - 01:01 in Góc Tin học

CONST   fi='XEPCHU.inp';
        fo='XEPCHU.out';
var st:array['A'..'Z'] of longint;
    i,j,N:longint;
    f:text;
    x:CHAR;
begin
     assign(f,fi); reset(f);
     readln(f,n);
     for i:=1 to n do
     begin
          read(f,x);
          ST[x]:=ST[x]+1;
     end;
     close(f);
     assign(f,fo); rewrite(f);
     for x:='A' to 'Z' do
     if st[x]<>0 then
     writeln(f,x, st[X]);
     close(f);
    END.
Đây là bài nén xâu, ai giúp mình giải xâu đi.



#635330 Topic Hỏi bài Pascal

Posted by spiritfoxll on 24-05-2016 - 23:31 in Góc Tin học

Còn đây là làm theo mảng sẽ dễ nhớ và dễ hiểu :)

Program FIBONACI; 
Uses CRT; 
Var F:array[1..100] of integer; 
      N,I:Longint; f:text;
BEGIN 
Assign(f,'FIBO.INP');reset(f);

Readln(f,n);close(f);

Assign(f,'FIBO.OUT');rewrite(f);

F[1]:=1; F[2]:=1; 
For i:=1 to N do 
Begin 
If i>2 then F[i]:=F[i-1]+F[i-2]; 
Writeln(f,F[i]); 
End; 
Close(f);

 

END. 

Cảm ơn bạn. Làm giúp mình mấy bài kia với ạ. 




#635111 Topic Hỏi bài Pascal

Posted by spiritfoxll on 23-05-2016 - 23:25 in Góc Tin học

PROGRAM So_hoan_hao; 
uses crt; 

Var S,n,i,j: integer; 
BEGIN
Clrscr; 
Write('Nhap so n : '); readln(n); 
For i:=1 to n do 
begin 
S:=0; 
For j:=1 to i do 
if i mod j = 0 then 
S:=S+j; 
if S = 2*i then 
write(i:6); 
end; 
Readln; 
END.

(Mấy bài bạn nói rõ đề ra giùm ... như vậy thì chả biết nó là dạng gì ... ví dụ như dãy fibonacci thì mình cũng chat hiểu là viết dãy hay tìm số hay tìm dãy ... nữa :3)

In dãy fibonacci ạ. Làm giúp mình mấy bài kia luôn với ạ.




#634852 Topic Hỏi bài Pascal

Posted by spiritfoxll on 22-05-2016 - 23:26 in Góc Tin học

CHo hỏi bài tìm dãy con đơn điệu với ạ.

bài 1 :cho hỏi bài tìm số hoàn hảo cho biết có bao nhiêu số hoàn hảo và in ra các số đó. ( làm theo file được không ạ).

bài 2 : In ra tất cả dãy con có trong dãy . 

bài 3 : Nén xâu.

Bài 4: Giải nén xâu.

Bài 5: Dãy fibonaccy.

Bài 6 : vd :            input                     output

                          3                                cb1

                          c1x2y3z                      1cd7hdcbae  

                          1cd7hdcbae               c1x2y3z

Bài 7 Tập con

             Input A = { 1, 9, 4, 5, 9 ,5, 8,9} 

             Output B = {1, 4, 5, 8, 9}

Bài 8 Độ cao dãy số

  Input  5

            247   5   32000   332   27

  Output 

            13   5   5   10   9

Bài 9 Xâu tương đương

Bài 10 Tìm UCLN

Bài 11 Tìm BCNN

Bài 12 Dãy con tăng 

 Vd Input    :  1    2    3   0   5    4    8    6    11

 

      Out put   : 6

                     1    2    3    5    8    11

Please Mấy bài có thể làm file thì làm theo file được không a.




#634846 Topic Hỏi bài Pascal

Posted by spiritfoxll on 22-05-2016 - 23:00 in Góc Tin học



Đây là bài làm dãy con đơn điệu tăng dài nhất được lấy dữ liệu từ file Day.INP :

PROGRAM Day_con_don_dieu_dai_nhat;

uses crt;

Const Max=5000;

Var a,L,T:array [1..Max] of integer;

    i,j,N,jmax:integer;

    g:text;

Procedure Nhap;

Var f:text;

Begin

assign(f,'Day.INP');reset(f);

N:=0;

while not eof (f) do

      begin

      N:=N+1;

      read(f,a[N]);

      end;

close(f);

End;

Procedure quyhoachdong;

Begin

L[1]:=1;T[1]:=0;a[N+1]:=32767;

for i:=2 to N+1 do

    begin

    jmax:=0;

    L[i]:=1;

    for j:=1 to i-1 do

        if (a[j]<=a[i])and (L[i]< L[j]+1) then

        begin

        L[i]:=L[j]+1;

        jmax:=j;

        end;

    T[i]:=jmax;

    end;

End;

Procedure Truyvet(m:integer);

Begin

m:=T[m];

if m=0 then exit;

truyvet(m);write(g,a[m],' ');

End;

Procedure ghi;

Begin

assign(g,'Day.OUT');rewrite(g);

quyhoachdong;truyvet(N+1);

close(g);

End;

BEGIN

Clrscr;

Nhap;Ghi;

End.

 

Làm theo kiểu file được không ạ.




#634819 Topic Hỏi bài Pascal

Posted by spiritfoxll on 22-05-2016 - 21:49 in Góc Tin học

Bạn nào muốn giai bài tập Tin thì vào đây(chỉ dành cho pascal thôi nhé).Cảm ơn! 

CHo hỏi bài tìm dãy con đơn điệu với ạ.