首页 > 解决方案 > 为什么我不能只得到矩阵中元素的第一次出现?

问题描述

我是 C 语言的新手,我正在尝试制作一个程序来使用矩阵执行一些任务,所以我正在执行一项任务来搜索矩阵的元素并给出位置(行、列)元素的第一次出现。下面是函数:

   void Do_Search(Matrix M, int row, int col, int elem_search)
   {
   int i, j, aux = 0;

   for(i = 0; i < row; i++)
   {
       for(j = 0; j < col; j++)
       {
           if(M[i][j] == elem_search)
           {
           printf("\nElement first found in [%d][%d]", i, j);
           break;
           }
         }
       }
    }

    void Search_Element(Matrix M, int row, int col){
    int i, j, num_elem, elem_search, elements = row * col;

    while(num_elem > elements || num_elem < 1)
    {
    printf("\nEnter the number of elements to search >> ", element );
    scanf("%d", &num_elem);
    }

    for(i = 0; i < num_elem; i++)
    {
        printf("\n\nEnter the element to search >> ");
        scanf("%d", &elem_search);
        Do_Search(M, row, col, elem_search);
    }
}

           if(M[i][j] == elem_search)
           {
               printf("\nElement first found in [%d][%d]", i, j);
               break;
           }

我只想获得第一次出现,但是尽管元素的数量高于 2,但当只有一次出现和两个位置时,程序会给出一个位置。

标签: c

解决方案


break;语句仅跳出内部 for 循环。因此,外部(行)for 循环继续运行,因此如果元素存在于多行中,您的函数将找到所有行。

您可能希望return;一旦找到第一个元素,以便在找到一个匹配项后退出该函数。

 if(M[i][j] == elem_search)
 {
   printf("\nElement first found in [%d][%d]", i, j);
   return;
 }

推荐阅读