Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: code thuật toán tìm số nguyên tố trên ma trận

  1. #1
    Ngày gia nhập
    04 2012
    Bài viết
    1

    Mặc định code thuật toán tìm số nguyên tố trên ma trận

    in các số nguyên tố có trên đường chéo chính theo thứ tự tăng dần. Mình gần thi môn c, có mấy cái đề để giải mà gặp câu này khó nghĩ quá, có mem nào giúp mình đc ko.

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

    Trích dẫn Nguyên bản được gửi bởi nmebe Xem bài viết
    in các số nguyên tố có trên đường chéo chính theo thứ tự tăng dần. Mình gần thi môn c, có mấy cái đề để giải mà gặp câu này khó nghĩ quá, có mem nào giúp mình đc ko.
    Liệu có thể ném các cháu trên đường chéo là số nguyên tố vào một mảng, xắp xếp các cháu đó rồi in ra được không nhỉ? Có vẻ tớ nghĩ hơi trâu bò :((

  3. #3
    Ngày gia nhập
    04 2012
    Bài viết
    1

    chà, ghi đề chưa đầy đủ ^^, câu đó làm trên matrix ấy, mò cả tiếng chưa nghĩ ra đc :(

  4. #4
    Ngày gia nhập
    10 2010
    Bài viết
    177

    Trích dẫn Nguyên bản được gửi bởi nmebe Xem bài viết
    in các số nguyên tố có trên đường chéo chính theo thứ tự tăng dần. Mình gần thi môn c, có mấy cái đề để giải mà gặp câu này khó nghĩ quá, có mem nào giúp mình đc ko.
    Bước 1: Viết hàm kiểm tra số nguyên tố
    Bước 2: Viết hàm sắp xếp tằng trên mảng 1 chiều
    Bước 3: Duyệt ma trận + Kiểm tra có phải là ma trận vuông ko
    Bước 3.1: Cứ mỗi phần tử thứ i duyệt qua + Kiểm tra có phải là số nguyên tố ko
    Bước 3.2: Khởi tạo mảng 1 chiều + Đổ các phần tử thỏa điều kiện số nguyên tố vào mảng 1 chiều
    Bước 3.3: Gọi hàm sắp tăng trên cái mảng 1 chiểu chứa các số nguyên tố
    Bước 4: Xuất mảng 1 chiều

  5. #5
    Ngày gia nhập
    03 2011
    Bài viết
    44

    Mặc định Chào bạn,

    Yêu cầu của chủ topic là xuất dãy tăng dần các số nguyên tố trên đường chéo chính mà.
    Cách làm:
    1. Khởi tạo mảng 1 chiều và gán nó giá trị của đường chéo chính
    Ví dụ: Mảng một chiều của mình là a, ma trận là c.
    Ta có đoạn code:
    C++ Code:
    1.      for(int i=0;i<n;i++)a[i] = c[i][i];
    2. Sort lại mảng một chiều.
    3. Viết hàm kiểm tra số nguyên tố.
    4. Duyệt mảng một chiều, số nào thỏa là số nguyên tố thì xuất ra.
    Chúc may mắn.

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    552

    Mặc định code thuật toán tìm số nguyên tố trên ma trận

    @ phuchaontu : Cách làm của bạn phí phạm nhiều quá
    Cái việc copy đường chéo sang 1 mảng khác là 1 việc làm ... ko mấy ý nghĩa:
    - Công việc Sort thường phiền hà cho máy tính cho nên giảm dc số phần tử cần sort bao nhiêu càng tốt bấy nhiêu.
    - Trong khi đó công việc Duyệt đường chéo và kiểm tra số nguyên tố thì không đổi

    Cho nên cải tiến lại thì nên Kiểm tra số nguyên tố trên đường chéo trước
    Chọn phần tử thỏa mãn rồi đưa vào mảng a
    Cuối cùng mới sort mảng a
    -> Như vậy sẽ giảm thiểu số phần tử phải sort đi.

    Tức là thứ tự làm công việc như tiến trình của nndung trình bày.
    Còn "địa điểm" để thực hiện tiến trình đó là ở trên đường chéo
    Đã được chỉnh sửa lần cuối bởi clchicken : 23-04-2012 lúc 04:34 PM.
    Um Mani Padme Hum...!!

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    5

    đúng đấy bởi vì nếu sort trên mảng 2 chiều thì các giá trị trên đường chéo chính sẽ bị thay đổi

    vì vậy đưa hết sang mảng 1c trước rùi sort nó mới chính xác

  8. #8
    Ngày gia nhập
    05 2010
    Bài viết
    29

    Thử code trên notepad. Tý về nhà dò lỗi sau
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<math.h>
    4.  
    5. void nhapmatran(int a[100][100], int m, int n)
    6. {
    7.  int i,j,tam;
    8.  for(i=0;i<m;++i)
    9.   for(j=0;j<n;++j)
    10.     {
    11.      printf("a[%d][%d]= ",i,j);
    12.      scanf("%d",&tam);
    13.      a[i][j]=tam;
    14.     }
    15. }
    16.  
    17. void xuatmatran(int a[100][100], int m, int n)
    18. {
    19.  int i,j;    
    20.  for(i=0;i<m;++i)
    21.   {
    22.   for(j=0;j<n;++j)
    23.     {
    24.      printf("%3d",a[i][j]);
    25.     }
    26.   printf("\n");
    27.   }
    28. }
    29.  
    30. void xuatmang(int a[100], int n)
    31. {
    32.  int i;
    33.  for(i=0;i<n;++i)
    34.  {
    35.   printf("%3d",a[i]);
    36.  }
    37. }
    38.  
    39. int nguyento(int n)
    40. {
    41.  int i;  
    42.  if(n<2) return 0;
    43.  for(i=0;i<=sqrt(n);++i)
    44.   {
    45.     if(n%i==0) return 0;
    46.   }
    47.  return 1;
    48. }
    49.  
    50. void sapxeptang(int b[], int n)
    51. {
    52.  int i,j,tam;
    53.  for(j=n-1;j>0;--j)
    54.   for(i=0;i<j-1;++i)
    55.   {
    56.     if(b[j]<b[i])
    57.      {
    58.       tam=b[i];
    59.       b[i]=b[j];
    60.       b[j]=tam;
    61.      }
    62.   }
    63. }
    64.  
    65. main()
    66. {
    67.  int a[100][100],b[100],m,n,i,j,k=0;
    68.  printf("Nhap kich thuoc ma tran(hang,cot): ");
    69.  scanf("%d %d",&m,&n);
    70.  if(m!=n) printf("Khong phai ma tran vuong");
    71.  else
    72.   {
    73.    nhapmatran(a,m,n);
    74.    xuatmatran(a,m,n);      
    75.     for(i=0;i<m;++i)
    76.      for(j=0;j<n;++j)
    77.       if((i==j)&&(nguyento(a[i][j])==1))
    78.       {
    79.         b[k++]=a[i][j];
    80.       }
    81.    sapxeptang(b,k);
    82.    xuatmang(b,k);
    83.    }
    84. getch();
    85. }

  9. #9
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi brandy253 Xem bài viết
    đúng đấy bởi vì nếu sort trên mảng 2 chiều thì các giá trị trên đường chéo chính sẽ bị thay đổi

    vì vậy đưa hết sang mảng 1c trước rùi sort nó mới chính xác
    Đường chéo của ma trận thì cũng như mảng một chiều thôi. Chỉ cần biêt cách truy cập thì gần như không khác.
    vd mảng mxn
    thay vì
    for (i=0; i<n; i++)
    { a[i]....
    thì dùng
    for (i=0; i < m && i < n; i++)
    { a[i][i]...


    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    @ phuchaontu : Cách làm của bạn phí phạm nhiều quá
    Cái việc copy đường chéo sang 1 mảng khác là 1 việc làm ... ko mấy ý nghĩa:
    - Công việc Sort thường phiền hà cho máy tính cho nên giảm dc số phần tử cần sort bao nhiêu càng tốt bấy nhiêu.
    - Trong khi đó công việc Duyệt đường chéo và kiểm tra số nguyên tố thì không đổi

    Cho nên cải tiến lại thì nên Kiểm tra số nguyên tố trên đường chéo trước
    Chọn phần tử thỏa mãn rồi đưa vào mảng a
    Cuối cùng mới sort mảng a
    -> Như vậy sẽ giảm thiểu số phần tử phải sort đi.

    Tức là thứ tự làm công việc như tiến trình của nndung trình bày.
    Còn "địa điểm" để thực hiện tiến trình đó là ở trên đường chéo
    Thực sự ra phí phạm cũng không bao nhiêu.
    Nếu không sort trước mà mảng (đường chéo ma trận) có nhiều trị lặp lại thì ta cũng tốn sức xét SNT.
    Nếu ta sort trước thì có thể nhảy qua các số lặp lại.

    Như đã nói ở trên, ta có thể làm việc thẳng trên đường chéo mà không cần thêm mảng phụ nào cả.

  10. #10
    Ngày gia nhập
    04 2012
    Bài viết
    0

    Mặc định code nè,các bạn xem hộ

    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {
    	int n,i,j,dem=0,c[100],a[100][100],k=0,max;
    	printf("Hay nhap kich thuoc cua ma tran:");
    	scanf("%d",&n);
    	for(i=1;i<=n;i++)
    	    for(j=1;j<=n;j++)
            {
            	printf("\nHay nhap a[%d][%d]:",i,j);
            	scanf("%d",&a[i][j]);
            }
    	printf("\nMa tran nhap vao la:\n");	    
    	for(i=1;i<=n;i++)
    	{
    	    for(j=1;j<=n;j++)
    		    printf("%5d",a[i][j]);
    		printf("\n");
    	}
    	for(i=1;i<=n;i++)
    	{
    	    dem=0;
    		for(j=1;j<=a[i][i];j++)
    		    if(a[i][i]%j!=0)
    			    dem++;
    		if(dem==a[i][i]-2)
    		{
    		    k++;
    			c[k]=a[i][i];
    		}
    	}
    	if(k==0)
    	    printf("Tren duong cheo chinh k co so nguyen to nao:");
    	else
    	{		
    	    max=c[1];	
    	    for(i=1;i<=k;i++)
    	        if(max<=c[i])
    		        max=c[k];
    	}
    	printf("\nSo nguyen to lon nhat tren duong cheo chinh la:%d",max);
    	getch();
    }
    Đã được chỉnh sửa lần cuối bởi hopbkpro92 : 24-04-2012 lúc 08:00 PM.

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

  1. Lập trình C Thuật toán trên mảng số nguyên!
    Gửi bởi policeman056 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 19-05-2013, 01:39 PM
  2. Lập trình C xin code cài đặt thuật toán sàng nguyên tố để liệt kê các số nguyên tố 2->480000
    Gửi bởi ngocdung_088 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 23
    Bài viết cuối: 06-12-2010, 11:53 PM
  3. Lập trình C++ Giải thuật nhân 2 số nguyên lớn trên C++?
    Gửi bởi kaka_nsk_91 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 03-04-2010, 10:29 PM
  4. Code in ra số nguyên tố và số chính phương của một dãy trên C. Giúp mình kiểm tra code?
    Gửi bởi lavender trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 7
    Bài viết cuối: 07-06-2009, 01:52 PM
  5. Thuật toán trên C | Tính tổng, tìm số nguyên tố???
    Gửi bởi nxhoang90 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 14-05-2009, 03:49 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