Đến nội dung

Hình ảnh

Phần tử i sau khi hoán đổi nằm ở vị trí thứ mấy


  • Please log in to reply
Chủ đề này có 11 trả lời

#1
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết

Cho tập tin input.txt có cấu trúc sau: dòng đầu tiên chứa số nguyên dương N, dòng thứ hai chứa số nguyên dương K (K<N), dòng tiếp theo là dãy N số nguyên mỗi con số cách nhau 1 khoảng trắng

Yêu cầu: viết chương trình thực hiện công việc sau:

a/ Xoay K phần tử trong dãy số nguyên theo chiều từ trái sang phải ta được dãy mới, kết quả ghi vào tập tin Output.txt

b/ Nhập vào số nguyên i (i<=N), hỏi phần tử thứ I của dãy ban đầu hiện giờ nằm ở vị trí thứ mấy trong dãy mới (dãy kết quả ở câu a), kết quả lưu vào dòng tiếp theo của tập tin Output.txt

VD: Input

7

2

3    4    5    7    9    11    20

Nhap i=4 

Output

11    20    3    4    5    7    9

6


Bài viết đã được chỉnh sửa nội dung bởi Tu Pham: 16-04-2016 - 02:34

-- Hồng Tư --


#2
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

Cho tập tin input.txt có cấu trúc sau: dòng đầu tiên chứa số nguyên dương N, dòng thứ hai chứa số nguyên dương K (K<N), dòng tiếp theo là dãy N số nguyên mỗi con số cách nhau 1 khoảng trắng

Yêu cầu: viết chương trình thực hiện công việc sau:

a/ Xoay K phần tử trong dãy số nguyên theo chiều từ trái sang phải ta được dãy mới, kết quả ghi vào tập tin Output.txt

b/ Nhập vào số nguyên i (i<=N), hỏi phần tử thứ I của dãy ban đầu hiện giờ nằm ở vị trí thứ mấy trong dãy mới (dãy kết quả ở câu a), kết quả lưu vào dòng tiếp theo của tập tin Output.txt

VD: Input

7

2

3    4    5    7    9    11    20

Output

11    20    3    4    5    7    9

6

Ví dụ bạn nói kĩ hơn đc ko?

a) mình xoay k pt nào trong dãy cũng được hả ?

b) Sao  ở đoạn vd ko thấy nhập i ?


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#3
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết

Ví dụ bạn nói kĩ hơn đc ko?

a) mình xoay k pt nào trong dãy cũng được hả ?

b) Sao  ở đoạn vd ko thấy nhập i ?

 

bạn giải phụ mình cái đề đính kèm, trong quá trình đánh lại mình đánh ẩu tả quá.. bạn nhìn file đính kèm dùm 

Hình gửi kèm

  • THT 2010.png

-- Hồng Tư --


#4
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết


bạn giải phụ mình cái đề đính kèm, trong quá trình đánh lại mình đánh ẩu tả quá.. bạn nhìn file đính kèm dùm 

Bài 3:

 

program cvb;
uses crt;
var i,n,j,k,t,z,p,u,v:integer;
a,b,c:array[1..100] of integer;
f:text;
begin
clrscr;
p:=0;
assign(f,'d:\input.txt');
reset(f);
while not eof(f) do
      begin
      read(f,t);
      p:=p+1;
      c[p]:=t;
      end;
close(f);
z:=0;
i:=c[p];
n:=0;
for j:=3 to p-1 do
    begin
    n:=n+1;
    a[n]:=c[j];
    end;
v:=a[i];
k:=n-c[2]+1;
for j:=k to n do
    begin
    z:=z+1;
    b[z]:=a[j];
    end;
for j:=1 to k-1 do
    begin
    z:=z+1;
    b[z]:=a[j];
    end;
for j:=1 to z do
    if b[j]=v then
       begin
       u:=j;
       break;
       end;
assign(f,'d:\output.txt');
rewrite(f);
for j:=1 to z do
write(f,b[j],'   ');
writeln(f);
writeln(f,u);
close(f);
readln
end.
P/s: Mấy bài còn lại mai làm....

>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#5
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết


 

Bài 3:

 

program cvb;
uses crt;
var i,n,j,k,t,z,p,u,v:integer;
a,b,c:array[1..100] of integer;
f:text;
begin
clrscr;
p:=0;
assign(f,'d:\input.txt');
reset(f);
while not eof(f) do
      begin
      read(f,t);
      p:=p+1;
      c[p]:=t;
      end;
close(f);
z:=0;
i:=c[p];
n:=0;
for j:=3 to p-1 do
    begin
    n:=n+1;
    a[n]:=c[j];
    end;
v:=a[i];
k:=n-c[2]+1;
for j:=k to n do
    begin
    z:=z+1;
    b[z]:=a[j];
    end;
for j:=1 to k-1 do
    begin
    z:=z+1;
    b[z]:=a[j];
    end;
for j:=1 to z do
    if b[j]=v then
       begin
       u:=j;
       break;
       end;
assign(f,'d:\output.txt');
rewrite(f);
for j:=1 to z do
write(f,b[j],'   ');
writeln(f);
writeln(f,u);
close(f);
readln
end.
P/s: Mấy bài còn lại mai làm....

 

Cám ơn bạn nhiều, 2 câu kia mình làm được rồi,thanks...


Bài viết đã được chỉnh sửa nội dung bởi Tu Pham: 16-04-2016 - 00:53

-- Hồng Tư --


#6
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

Cám ơn bạn nhiều, 2 câu kia mình làm được rồi,thanks...

Bài 2 bạn post code lên cho mình xem


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#7
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết


bạn giải phụ mình cái đề đính kèm, trong quá trình đánh lại mình đánh ẩu tả quá.. bạn nhìn file đính kèm dùm 

Bài 2:

 

program gyu;
uses crt;
var t,i,j,k,l,p,q:integer;
s,s1,s2,n,sp,ss:string;
st:char;
function xt(s:string):char;
begin
xt:=s[1];
end;
begin
clrscr;
write('Nhap xau 1:');readln(s1);
j:=1;
repeat
t:=0;
s:='';
      for i:=j to length(s1) do
          if (s1[i]=s1[i+1]) then t:=t+1 else
             begin
             l:=i;
             p:=i+1;
             break;
             end;
      if t>=2 then
         begin
         for i:=j to l do
         s:=s+s1[i];
         st:=xt(s);
         str(t+1,n);
         sp:=sp+n+st;
         end else
             for i:=j to l do
             sp:=sp+s1[i];
      j:=p;
until j>length(s1);
writeln('Xau nen:',sp);
writeln;
write('Nhap xau 2:');readln(s2);
j:=1;ss:='';
repeat
    val(s2[j],q,l);
    if q>=3 then
    begin
       for k:=1 to q do
       ss:=ss+s2[j+1];
       j:=j+2;
    end else
        begin
        ss:=ss+s2[j];
        j:=j+1;
        end;
until j>length(s2);
writeln('Xau giai nen:',ss);
readln
end.
P/s:Bạn post bài 2 lên xem có giồng mình ko !

>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#8
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết


 

Bài 2:

 

program gyu;
uses crt;
var t,i,j,k,l,p,q:integer;
s,s1,s2,n,sp,ss:string;
st:char;
function xt(s:string):char;
begin
xt:=s[1];
end;
begin
clrscr;
write('Nhap xau 1:');readln(s1);
j:=1;
repeat
t:=0;
s:='';
      for i:=j to length(s1) do
          if (s1[i]=s1[i+1]) then t:=t+1 else
             begin
             l:=i;
             p:=i+1;
             break;
             end;
      if t>=2 then
         begin
         for i:=j to l do
         s:=s+s1[i];
         st:=xt(s);
         str(t+1,n);
         sp:=sp+n+st;
         end else
             for i:=j to l do
             sp:=sp+s1[i];
      j:=p;
until j>length(s1);
writeln('Xau nen:',sp);
writeln;
write('Nhap xau 2:');readln(s2);
j:=1;ss:='';
repeat
    val(s2[j],q,l);
    if q>=3 then
    begin
       for k:=1 to q do
       ss:=ss+s2[j+1];
       j:=j+2;
    end else
        begin
        ss:=ss+s2[j];
        j:=j+1;
        end;
until j>length(s2);
writeln('Xau giai nen:',ss);
readln
end.
P/s:Bạn post bài 2 lên xem có giồng mình ko !

 

 bạn có thể tham khảo thử, code câu 1 của mình

program hoanthien;

uses crt;

var j,n,m:integer;

function kththien(x:integer):boolean;

var s,i:integer;

begin

     s:=0;

     kththien:=false;

     for i:=1 to x div 2 do

        if x mod i = 0 then s:=i + s;

if s=x then kththien:=true;

end;

begin

clrscr;

write('nhap vao so n=');

readln(n);

if kththien(n) then writeln(n,' la so hoan thien')

else writeln('khong phai la so hoan thien');

write('cac so hoan thien <=n la:');

for j:=1 to n do

if kththien(j) then write(j:4);

readln;

end.


-- Hồng Tư --


#9
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết


 bạn có thể tham khảo thử, code câu 1 của mình

program hoanthien;

uses crt;

var j,n,m:integer;

function kththien(x:integer):boolean;

var s,i:integer;

begin

     s:=0;

     kththien:=false;

     for i:=1 to x div 2 do

        if x mod i = 0 then s:=i + s;

if s=x then kththien:=true;

end;

begin

clrscr;

write('nhap vao so n=');

readln(n);

if kththien(n) then writeln(n,' la so hoan thien')

else writeln('khong phai la so hoan thien');

write('cac so hoan thien <=n la:');

for j:=1 to n do

if kththien(j) then write(j:4);

readln;

end.

câu 2  mình nén xâu đó và giải nén xâu vừa nén 

var s,tam,tamcb,cs:string;
        i,v,n,d,loi,k,x:integer;
begin
        write('s= ');readln(s);
        {------------CAU A------------}
        tam:=' '; tamcb:='';n:=length(s);
        while i<=n do
        begin   d:=1;
                v:=i+1;
                while s[v]=s[i] do
                begin
                        d:=d+1;
                        v:=v+1;
                end;
                if d>=3 then
                begin
                        str(d,cs);
                        tam:=tam+cs+s[i];
                end
                else if d=2 then tam:=tam+s[i]+s[i]
                else tam:=tam+s[i];
                i:=i+d;
        end;
        writeln('sau khi nen chuoi: ',tam);
        {------------CAU B------------}
        i:=1;
        while i<=n do
        begin
                if (tam[i] in ['0'..'9']) then
                begin
                        k:=1;
                        val(tam[i],x,loi);
                        while k<x do
                        begin
                                tamcb:=tamcb+tam[i+1];inc(k);
                        end;
                end
                else tamcb:=tamcb+tam[i];
                i:=i+1;
        end;
        writeln('chuoi sau khi giai nen: ',tamcb);
readln
end.

-- Hồng Tư --


#10
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết

 bạn có thể tham khảo thử, code câu 1 của mình

program hoanthien;

uses crt;

var j,n,m:integer;

function kththien(x:integer):boolean;

var s,i:integer;

begin

     s:=0;

     kththien:=false;

     for i:=1 to x div 2 do

        if x mod i = 0 then s:=i + s;

if s=x then kththien:=true;

end;

begin

clrscr;

write('nhap vao so n=');

readln(n);

if kththien(n) then writeln(n,' la so hoan thien')

else writeln('khong phai la so hoan thien');

write('cac so hoan thien <=n la:');

for j:=1 to n do

if kththien(j) then write(j:4);

readln;

end.

Bài 1 dễ mà bạn ....nên mình ko làm.


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#11
Mystic

Mystic

    Thượng sĩ

  • Thành viên
  • 240 Bài viết


 

câu 2  mình nén xâu đó và giải nén xâu vừa nén 

var s,tam,tamcb,cs:string;
        i,v,n,d,loi,k,x:integer;
begin
        write('s= ');readln(s);
        {------------CAU A------------}
        tam:=' '; tamcb:='';n:=length(s);
        while i<=n do
        begin   d:=1;
                v:=i+1;
                while s[v]=s[i] do
                begin
                        d:=d+1;
                        v:=v+1;
                end;
                if d>=3 then
                begin
                        str(d,cs);
                        tam:=tam+cs+s[i];
                end
                else if d=2 then tam:=tam+s[i]+s[i]
                else tam:=tam+s[i];
                i:=i+d;
        end;
        writeln('sau khi nen chuoi: ',tam);
        {------------CAU B------------}
        i:=1;
        while i<=n do
        begin
                if (tam[i] in ['0'..'9']) then
                begin
                        k:=1;
                        val(tam[i],x,loi);
                        while k<x do
                        begin
                                tamcb:=tamcb+tam[i+1];inc(k);
                        end;
                end
                else tamcb:=tamcb+tam[i];
                i:=i+1;
        end;
        writeln('chuoi sau khi giai nen: ',tamcb);
readln
end.

 

Làm vậy là ko được rồi bạn !

Ở đây là 2 xâu riêng biệt mà (xâu s1 và xâu s2).

Bạn phải nén xâu s1 và giải nén xâu s2 .

Ở phần chữ đỏ là chưa đúng :bạn chỉ mới xét được các số có 1 chữ số (chẳng hạn 5) còn số có 2 chữ số trở lên thì sao ?(chẳng hạn 55).

=> Thuật toán chưa triệt để ,bạn nên xem lại


>>> Nếu bạn luôn buồn phiền hãy dùng hy vọng để chữa trị <<<

Và ...

>>>  Không bao giờ nói bạn đã thất bại

Cho đến khi đó là nỗi lực cuối cùng của bạn

           Và không bao giờ nói rằng:

        Đó là nỗi lực cuối cùng của bạn

         Cho tới khi bạn đã thành công  >>>

 

~ Mystic Lâm


#12
Tu Pham

Tu Pham

    Binh nhất

  • Thành viên mới
  • 27 Bài viết

Làm vậy là ko được rồi bạn !

Ở đây là 2 xâu riêng biệt mà (xâu s1 và xâu s2).

Bạn phải nén xâu s1 và giải nén xâu s2 .

Ở phần chữ đỏ là chưa đúng :bạn chỉ mới xét được các số có 1 chữ số (chẳng hạn 5) còn số có 2 chữ số trở lên thì sao ?(chẳng hạn 55).

=> Thuật toán chưa triệt để ,bạn nên xem lại

 

uh, đúng rồi, mình quên xét từ 2 chữ số trở lên..


-- Hồng Tư --





1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh