Sửa lỗi mảng 2 chiều

đề bài là cho số dòng số cột, nhập ma trận cho trc và nhập số n, kiểm tra số n có thuộc ma trận không, nếu có thì in “Yes” còn ko thì “No”. cho em hỏi bài em break đặt ở đâu cho hợp lí khi so sánh mà n = với 1 phần tử trong ma trận thế ạ

#include<stdlib.h>
#include<math.h>
#define MAX 100
#define true 1
#define false 0
void nhapmatrix(int m[][MAX], int dong, int cot)
{
    for(int i=0; i<dong; i++)
    {
        for(int j=0; j<cot; j++)
        {
            scanf("%d", &m[i][j]);
        }
    }
}
int tontai(int m[MAX][MAX],int dong, int cot, int n)
{

    for(int i=0; i<dong;i++)
    {
        for(int j=0;j< cot; j++)
            {
                if(n == m[i][j])
                    {
                        return true;
                        break;
                    }
                else
                {
                       return false;
                }
            }
    }
}
int main()
{
    int m[MAX][MAX];
    int n,dong,cot;
    int check =0;
    scanf("%d%d", &dong, &cot);
    nhapmatrix(m, dong, cot);
  if(tontai(m,dong,cot,n)==true)
  {
      printf("Yes");
  }
  else
    {
        printf("No");
    }
}

Chỉ return true khi tìm thấy phần tử giống n. Và chỉ return false khi đã lặp qua hết các phần tử mà không tìm thấy phần tử giống n.
Bạn viết return false ngay trong else thì thấy phù hợp chưa?

3 Likes

khi vòng lặp chạy tiếp thì nó sẽ kiểm tra số tiếp theo và nếu sai thì nó sẽ lại trả về false đúng ko ạ

sai nó return luôn ko kiểm tra các số tiếp theo nữa, nên phải kiểm tra hết tất cả các số rồi hãy quyết định kết quả, với cả debug đê.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?