30/09/2018, 17:43

Lỗi bài Xóa các cột có chứa các số nguyên tố trong ma trận?

E biết code bên dưới sai nhưng chưa biết sửa ntn cho đúng. Post lên đây ai xem giùm sửa giúp e vs. E cám ơn.
VD:
INPUT:

3 3 
1 8 4
5 6 6
4 9 2

OUTPUT:

8
6
9

CODE:

#include<stdio.h>
#include<conio.h>
#include<math.h>

int nto(int n)
{
	int i;
	if(n<2) return 0;
	for(i=2;i<=sqrt(n);i++)
		if(n%i==0) return 0;
	return 1;
}

main()
{
	int n,m,i,j,a[20][20];
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			scanf("%d",&a[i][j]);
	
	int k=m;		
	for(j=0;j<k;j++)
	{
		for(i=0;i<n;i++)
		{
			if(nto(a[i][j])) 
			{
				for(i=0;i<n;i++)
				{
					a[i][j]=a[i][j+1];
				}
				
				m--;
			}
				
		}
		
	}
	
	for (i=0;i<n;i++)
	{
	  	for (j=0;j<m;j++)
        	printf("%d ",a[i][j]);
      	printf("
"); 
	}
}
Mai Anh Dũng viết 19:56 ngày 30/09/2018

Trông cái for loop kinh quá Đạt nghĩ bài này mình nên giảm độ phức tạp của code trước để tự tìm ra lỗi.

int k=m;
for(j=0; j<k; j++) {
    for(i=0; i<n; i++) {
        if(nto(a[i][j])) {
            for(i=0; i<n; i++) {
                a[i][j]=a[i][j+1];
            }
            m--;
        }
    }
}

Bài này không khó đâu.

Nguyễn Việt Nhật viết 19:44 ngày 30/09/2018

Vòng for lồng nhau dùng trùng biến kìa.

Bài liên quan
0