Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: tìm số lần xuất hiện(khó quá)

  1. #1
    Ngày gia nhập
    03 2008
    Bài viết
    6

    Angry tìm số lần xuất hiện(khó quá)

    giúp em bài toán:"cho sẵn một mảng số nguyên a[i].lập chương trình tìm số nào mà có số lần xuất hiện nhiều thứ k (k được nhập từ bàn phím).Hiện kết quả như sau:
    "số xuất hiện nhiều thứ.... là....với số lần xuất hiện là...."

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    31

    mình có 1 hướng thế này:
    -duyệt mảng a[]
    -tìm các phần tử giống nhau trong mảng a[] rồi đưa vào 1 mảng temp[], khi đưa ra mảng temp[] thì đồng thời xóa phần tử đó trong mảng a[].
    -sau đó thì he he chỉ việc tính số phần tử của mảng temp[], so sánh với k.

    bạn làm thử đi hen! chiều mình cũng sẽ thử viết code
    MORE.........................

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    31

    Code:
    //chú ý, mình chọn số 0 làm sign, tức là số sẽ 0 không được tính đến trong mảng số, chỉ xét các số từ 1 ~> n... Nếu muốn xét cả số 0 thì ban đầu chỉ việc đếm số 0 trong mảng trước! (Y:DY) 
    #include <stdio.h>
    #include <conio.h>
    #define n 20
    void FindNumber(int *a, int k)
    {
    	int count=1;              //đếm số tìm được
    	int run=0;                  //biến chạy để duyệt mảng
    	while(run<n)               
    	{       if(a[run]!=0)
    		{
    			int temp[n];           //mảng tạm chứa các số giống nhau
    			for(int z=0;z<n;z++) temp[z]=0;       //khởi tạo ban đầu mảng tạm có tất cả các phần tử đều =0
    			temp[0]=a[run];             
    			int i,j,l=0;
    			for(i=0;i<n;i++)
    			{
    				if (a[i]==temp[0])               //bắt đầu gán các số giống nhau của mảng a[] vào mảng temp[]
    				{
    					temp[l]=a[i];
    					l++;
    					a[i]=0;
    				}
    			}
    			int t=0;
    			while(temp[t]!=0)            //đếm số phần tử của temp[]
    			{
    				t++;
    			}
    			if(t==k)                  //nếu số phần tử của temp[] == k
    			{
    				printf("so xuat hien nhieu thu %d la %d voi so lan xuat hien la %d\n",count,temp[0],k);
    				count++;
    			}
    
    		}
    		run++;
    	}
    }
    void main()
    {
    	int a[n];
    	int k;
    	printf("nhap cac phan tu cho mang a\n");
    	for(int i=0;i<n;i++)
    	{
    		printf("a[%d] = ",i);
    		scanf("%d",&a[i]);
    	}
    	printf("nhap k\n");
    	scanf("%d",&k);
    	FindNumber(a,k);
    	getch();
    }
    have fun!
    MORE.........................

  4. #4
    Ngày gia nhập
    02 2007
    Nơi ở
    Thủ Đức - TPHCM
    Bài viết
    49

    Đầu tiên bạn nên duyệt qua các phần tử của mảng ,mổi lần duyệt thì đem so sánh với số mà bạn đưa vào nếu trùng thì tang 1 biến tạm lên 1 đơn vị ,sau đó ra khỏi vòng lặp là bạn có thể có số lần trùng lặp rồi đó.

Các đề tài tương tự

  1. Giá trị xuất khó hiểu?
    Gửi bởi Halo trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 31-03-2013, 07:11 PM
  2. Bài tập C một dạng bài hơi bị khó hĩu @@
    Gửi bởi demonwalkerx trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-12-2012, 11:23 AM
  3. Bài tập C++ Nhập vào 1 chuỗi xuất ra kq [khó]
    Gửi bởi anhthien8 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 20-10-2011, 10:34 PM
  4. một số bài tập c hay và khó
    Gửi bởi chiensy trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 06-07-2009, 10:45 AM
  5. Một bài toán quét cạn rất khó chịu !!!
    Gửi bởi saxvai trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 16-01-2008, 12:54 PM

Quyền hạn của bạn

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