Trang 1 / 2 12 LastLast
Hiển thị kết quả từ 1 đến 10 / 15
  1. #1
    Tham gia
    23-06-2009
    Location
    Huyện Gia Bình - Tỉnh Bắc Ninh
    Bài viết
    323
    Like
    0
    Thanked 4 Times in 4 Posts

    Bài tập mảng 1 chiều

    Nhập vào mảng 1 chiều gồm n số nguyên (N<=100).Đưa ra số lần xuất hiện của mỗi phần tử trong mảng.
    VD N=6 Dãy A: 3 3 4 0 4 3
    So lan xuat hien so 3 la: 3
    So lan xuat hien so 4 la: 2
    So lan xuat hien so 0 la: 1
    Quote Quote

  2. #2
    Tham gia
    10-01-2009
    Bài viết
    9
    Like
    0
    Thanked 0 Times in 0 Posts
    Duyệt từng phần tử mảng rồi đếm số lần xuất hiện của các phần tử cần tìm.

  3. #3
    Tham gia
    13-03-2009
    Bài viết
    41
    Like
    0
    Thanked 0 Times in 0 Posts
    program mang;
    var b,a:array[1..100]of integer;
    i,j,n,tg,k:integer;
    begin
    write('nhap n:');readln(n);
    for i:=1 to n do begin
    write('nhap phan tu thu ',i,':');readln(a[i]);
    end;
    for i:=1 to n do
    for j:=i+1 to n do
    if a[i]>a[j] then begin
    tg:=a[i];a[i]:=a[j];a[j]:=tg; end;
    k:=1;b[k]:=1;
    while n>0 do begin if a[n]=a[n-1] then begin n:=n-1;b[k]:=b[k]+1
    end else begin writeln(a[n],' ',b[k]);k:=k+1;b[k]:=1;n:=n-1;end;end;
    readln;
    end.


    bài này tuy không tối ưu nhưng đúng đó bạn thử chạy nhak nếu sai thỳ góp ý

  4. #4
    Tham gia
    23-01-2010
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    ko dung dc

    [/color]
    thu vs test nhu pan kia bao thi` no' ra caj' j` i'
    4 23 30 1
    de1 nghi xem laj viet hoan chinh giup em
    Được sửa bởi alviss1011 lúc 15:58 ngày 23-01-2010 Reason: Bổ sung bài viết

  5. #5
    Tham gia
    10-11-2009
    Location
    TP Hồ Chí Minh
    Bài viết
    985
    Like
    171
    Thanked 49 Times in 47 Posts
    CÁi này chơi úp cờ, dựng cờ cũng đc há

  6. #6
    Tham gia
    23-01-2010
    Bài viết
    146
    Like
    0
    Thanked 0 Times in 0 Posts
    Bài này tui có cách giải như sao:
    -kiểm tra từng phần tử và đếm số lần xuất hiện của nó.
    -Kiểm tra xem phần tử đó được xuất rồi chưa, nếu chưa thì thưcj hiện công việc đếm và xuất.

    Code:

    Var a:array[1..100] of integer;
    n,i,j,k,dem:integer;
    kt:boolean;
    begin
    clrscr;
    write('n=');readln(n);
    for i:=1 to n do
    begin
    write('a[',i,']=');readln(a[i]);
    end;
    for i:=1 to n do
    begin
    kt:=true;
    for j:=1 to i-1 do if a[i]=a[j] then kt:=false;
    if kt then
    begin
    dem:=0;
    for k:=1 to n do
    if a[i]=a[k] then inc(dem);
    writeln(a[i],' xuat hien ',dem,' lan');
    end;
    end;
    readln;
    end.

  7. #7
    Tham gia
    23-01-2010
    Bài viết
    2
    Like
    0
    Thanked 0 Times in 0 Posts

    Buồn quá đi ! ?

    tai sao lai dung if kt then??????????/

  8. #8
    Tham gia
    13-01-2010
    Bài viết
    5
    Like
    0
    Thanked 0 Times in 0 Posts
    Hình như chưa ổn lắm! Alviss1011 ? hay lắm.

  9. #9
    Tham gia
    23-10-2007
    Bài viết
    8
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật !

    Ý tưởng của mình như sau :
    - Dùng 2 mảng int. 1 mảng chứa các số nhập vào (A), 1 mảng chứa số lượng các số (B).
    - Hàm countArray() để đếm số lượng các số ở mảng A đưa vào mảng B. Cần lưu ý cách đưa vào mảng B như sau :
    B[0] chứa số lượng số của số thứ nhất mảng A
    B[1] chứa số lượng số của số thứ hai mảng A
    ..........
    Tuy nhiên cách này khiến việc hiển thị gặp khó khăn. Nên trong hàm cần kiểm tra để nếu số trong mảng A xuất hiện lại thì coi như số lượng số ở vị trí đó bằng 0.
    - Cách hiển thị : Nếu B[i]>0 -> số lần xuất hiện của A[i] là B[i]. Mấy phần râu ria như tạo mảng.. các bạn tự làm nhé.

    Mảng B[100] khởi tạo giá trị ban đầu bằng 0.
    public void countArray()
    {
    int count =0;
    for(int i=0;i<A.length;i++)
    {
    for(int j=0;j<A.length;j++)
    {
    if(A[i]==A[j])
    {
    if(j<i) // kiem tra so nay da xuat //hien la lan so sanh truoc
    {
    count=0;
    break;
    }
    else{
    count++;
    }
    }
    }
    B[i]=count;
    count = 0;
    }
    }
    - Hien thi :
    public static void main(String[] arg) throws IOException
    {
    hehe C = new hehe();// hehe la class chính
    C.countArray();
    for(int i=0; i<C.B.length;i++)
    {
    if(C.B[i]>0)
    {
    System.out.println("So lan xuat hien cua "+C.B[i]);
    System.out.println(C.B[i]);
    }
    }

    }

  10. #10
    Tham gia
    25-11-2007
    Location
    TP.HCM
    Bài viết
    100
    Like
    0
    Thanked 4 Times in 3 Posts
    ý tưởng của mình :
    - không cần dùng mảng để lưu dãy, trong quá trình nhập xét luôn
    - dùng 1 mảng để lưu kq, kq[i] là số lần xuất hiện của số có giá trị i

    Code:
    uses crt;
    var i,n,a,max:integer;
        kq:array[1..255] of byte;
        yet:set of byte;
    
    begin
    clrscr;
    write('Nhap n : ');readln(n);
    for i:=1 to n do
      begin
        write('Nhap a[',i,'] : ');
        readln(a);
        if a>max then max:=a;
        if not (a in yet) then yet:=yet+[a];
        inc(kq[a]);
      end;
    for i:=1 to max do if i in yet then writeln(i,' : ',kq[i]);
    readln;
    end.

Trang 1 / 2 12 LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •