Bài tập pascal: kiểu mảng

H

hoadaunon

[TẶNG BẠN] TRỌN BỘ Bí kíp học tốt 08 môn
Chắc suất Đại học top - Giữ chỗ ngay!!

ĐĂNG BÀI NGAY để cùng trao đổi với các thành viên siêu nhiệt tình & dễ thương trên diễn đàn.

Bài 1: cho dãy số nguyễn A gồm N phần tử, N thuộc Nsao, N =< 100
+Viết chương trình đưa ra màn hình dòng thông báo dãy đối xứng hặoc không đối xứng.
+Đưa ra màn hình dãy vừa nhập bằng cách đảo ngược phần tử của dãy.
Bài 2: cho dãy số nguyễn A gồm N phần tử, N thuộc Nsao, N =< 100, nhập từ bàn phím dãy số nguyên sao cho tạo thành 1 mảng đối xứng.
Bài 3: cho dãy số nguyễn A gồm N phần tử, N thuộc Nsao, N =< 100, nhập từ bàn phím mảng 1 chiều A gồm N phần tử, N nguyên dương, viết chương trình đưa ra màn hình mảng vửa nhập bằng cách xóa đi phần tử trùng nhau trong mảng.
 
Last edited by a moderator:
H

hung1xpro96

Bài giải bài 1 :
Mã:
Program Bai1;
 Var k,h,s,i,j,n:Integer;
     b,A:array[1..100] Of Integer;
Begin
 Writeln('nhap');
 Readln(n);
 h:=0;
 For i:=1 to n do
  Readln(a[i]);
 For i:=n downto 1 do
  Begin
   inc(h);
   b[h]:=a[i];
  End;
 k:=0;s:=0;
 For i:=1 to n do
  s:=s*10+a[i];
 For j:=1 to h do
  k:=k*10+b[j];
 If s=k then Writeln('doi xung')
 Else
  Writeln('khong doi xung');
 For j:=1 to h do
  Write(b[j]:3);
 Readln;
End.
Mà bạn có thể viết rõ ý của bài 2 được không vậy chứ mình đọc không hiểu !!!!
 
H

hoadaunon

Bài giải bài 1 :
Mã:
Program Bai1;
 Var k,h,s,i,j,n:Integer;
     b,A:array[1..100] Of Integer;
Begin
 Writeln('nhap');
 Readln(n);
 h:=0;
 For i:=1 to n do
  Readln(a[i]);
 For i:=n downto 1 do
  Begin
   inc(h);
   b[h]:=a[i];
  End;
 k:=0;s:=0;
 For i:=1 to n do
  s:=s*10+a[i];
 For j:=1 to h do
  k:=k*10+b[j];
 If s=k then Writeln('doi xung')
 Else
  Writeln('khong doi xung');
 For j:=1 to h do
  Write(b[j]:3);
 Readln;
End.
Mà bạn có thể viết rõ ý của bài 2 được không vậy chứ mình đọc không hiểu !!!!
Mình test thử rồi, không chạy được, nhập được n chứ không kiểm tra được xem dãy có đối xứng không.
 
H

hung1xpro96

Mình test thử rồi, không chạy được, nhập được n chứ không kiểm tra được xem dãy có đối xứng không.
Bạn xem lại đi cái mảng a là nhập theo kiểu xuống hàng đó
vd : Nhập số n trước rồi nó xuống hàng .
n dòng tiếp theo mỗi dòng nhập 1 số tương ứng với 1 phần tử trong mảng a
bài 2

nghĩa là tìm 1 số k, để từ 1 đến k đối xứng :)

Hưng làm giúp bạn này nhé

Anh có thể đưa ra ví dụ cụ thể được không vậy chứ theo cách nói của anh em không hiểu
 
Last edited by a moderator:
H

hung1xpro96

Code bài 3 bạn chạy xem thử đúng hay sai nhé còn về phần nhập thì giống bài 1 !!
Mã:
Program Bai3;
 Var s,k,n,m,i,j:Integer;
     a,b:array[1..100] Of Integer;
Function ktra(t,h:Integer):boolean;
 Var dem,i,j:Integer;
  Begin
   dem:=0;
   For i:=h to n do
    If a[t]=b[i] then
     inc(dem);
   If dem=0 then ktra:=true
   Else
    ktra:=false;
  End;

Begin
 Writeln('nhap so n');
 Readln(n);
 Writeln('nhap mang');
 For i:=1 to n do
  Readln(a[i]);
 b[1]:=a[1];
 k:=1;
 For i:=2 to n do
  If ktra(i,k)=true then
   Begin
    inc(k);
    b[k]:=a[i];
   End;
 For i:=1 to k do
  Writeln(b[i]:3);
  Readln;
End.
 
H

hung1xpro96

bài 3 khi nhập các số theo thứ tự 5-2-2-1-4-1 thì sẽ ra kết quả 2-1-4-1, đáng nhẽ phải là 2-1-4 mới đúng
Còn bài 1 thì ok.
các bài mình lưu ở đây để bạn tiện xem
http://www.mediafire.com/?j77es3adpv3bb68
http://www.mediafire.com/?lq1d1h9kwglt5na
Cảm ơn bạn đã đóng góp ý kiến mình sẽ sửa lại bài đó mà bạn có thể nói rõ bài 2 được không ? cho vd càng tốt !
 
H

hung1xpro96

Bài sửa lại của mình đây bạn xem thử đúng hay sai
Mã:
Program Bai1;
 Var s,k,n,m,i,j:Integer;
     a,b:array[1..100] Of Integer;
Function ktra(t:Integer):boolean;
 Var dem,i,j:Integer;
  Begin
   dem:=0;
   For i:=1 to n do
    If a[t]=b[i] then
     inc(dem);
   If dem=0 then ktra:=true
   Else
    ktra:=false;
  End;
Begin
 Writeln('nhap so n');
 Readln(n);
 Writeln('nhap mang');
 For i:=1 to n do
  Readln(a[i]);
 b[1]:=a[1];
 k:=1;
 For i:=2 to n do
  If ktra(i)=true then
   Begin
    inc(k);
    b[k]:=a[i];
   End;
 For i:=1 to k do
   Writeln(b[i]:3);
  Readln;
End.
 
P

p_trk

bài một bạn hungxpro làm vậy đúng trong trường hợp mảng có các phần tử là đối xứng
vd :
inp :
Mã:
n=3
1  23  1
out
Mã:
đối xứng
vì bạn không có bộ test nên chưa hiểu ý bạn lắm .
đây là TH thứ 2: là mảng đó ghép các phần tử sẽ được một số , và kiểm tra số đó xem có phải là đối xứng hay không . nếu cậy bạn sẽ có một mảng để lưu các chữ số của các phần tử trong mảng . sau đó kiểm tra là ok ;))
 
H

hoadaunon

bài 3 mình chưa kiểm tra, còn bài 2 sai đề rồi, thấy bọn nó chép dài lắm mà chưa chép lại được, mình có bài khó khó, bao giờ rảnh mình post lên, bạn thử làm nghe
 
O

ochuotqb

Mã:
var t,n,i,h,r:integer; check:boolean;
    a: array [1..100] of integer;
   begin
     repeat
        write('Nhap n: ');
        readln(n);
     until (n<=100) and (n>0);
   for i:=1 to n do
       begin
            write('a[',i,']= ');
            readln(a[i]);
       end;
   t:=n+1;
   check:=true;
   for i:=1 to n div 2 do
       begin
         t:=t-1;
            if (a[t]<>a[i]) then
               begin
                    check:=false;
               break;
            end; end;
     if not check then write('Day khong doi xung')
          else
              write('Day doi xung');
   for i:=1 to n do
       begin
            t:=a[i]; h:=0;
       while t<>0 do
             begin
                  r:= t mod 10;
                  t:=t div 10;
                h:=h*10+r;
             end;
       a[i]:=h;
   end;
     writeln;
     for i:=1 to n do
         write(a[i],' ');
   readln
end.
P/s: Lần sau bạn post bài nếu có text thì nhớ bỏ vào nhá. :)
 
O

ochuotqb


Mã:
var n,i,j,k:integer;
    a: array [1..100] of integer;
   begin
      repeat
        write('Nhap n: ');
        readln(n);
       until (n>0) and (n<=100);
   for i:=1 to n do
       begin
            write('a[',i,']= ');
            readln(a[i]);
       end;
   for i:=1 to n-1 do
       for j:=i+1 to n do
           begin
                if a[i]=a[j] then
                  begin
                   for k:=j to n do
                       a[k]:=a[k+1];
                   n:=n-1;
           end;        end;
   for i:=1 to n do
       write(a[i],' ');
   readln
end.
p/s: bài 2 chưa hiểu đề lắm :D
 
H

hung1xpro96

Mã:
var n,i,j,k:integer;
    a: array [1..100] of integer;
   begin
      repeat
        write('Nhap n: ');
        readln(n);
       until (n>0) and (n<=100);
   for i:=1 to n do
       begin
            write('a[',i,']= ');
            readln(a[i]);
       end;
   for i:=1 to n-1 do
       for j:=i+1 to n do
           begin
                if a[i]=a[j] then
                  begin
                   for k:=j to n do
                       a[k]:=a[k+1];
                   n:=n-1;
           end;        end;
   for i:=1 to n do
       write(a[i],' ');
   readln
end.
p/s: bài 2 chưa hiểu đề lắm :D

Giống mình :))-------------------------------------------
 
Top Bottom