C 为什么我能';是否仅获取矩阵中元素的第一次出现?
我是C语言的新手,我正试图制作一个程序来使用矩阵执行一些任务,所以我正在做一个任务来搜索矩阵中的一个元素,并给出元素第一次出现的位置(行、列)。以下是功能:C 为什么我能';是否仅获取矩阵中元素的第一次出现?,c,C,我是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++) {
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);
}
}
我只想得到第一次出现,但是当只有一次出现时,程序给出一个位置,尽管元素数大于2,但程序给出了两个位置。中断代码代码>语句仅中断内部for循环。因此,for循环的外部(行)将继续运行,因此,如果元素存在于多行中,那么函数将找到所有行 您可能希望
返回代码>一旦找到第一个元素,以便在找到单个匹配项后退出函数
if(M[i][j] == elem_search)
{
printf("\nElement first found in [%d][%d]", i, j);
return;
}
您有嵌套的循环。你只是在打破内部循环
因此,您需要一个“stop”变量(例如,found
)来告诉外部循环在匹配时停止:
void
Do_Search(Matrix M, int row, int col, int elem_search)
{
int i, j, aux = 0;
int found = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
found = (M[i][j] == elem_search);
if (found) {
printf("\nElement first found in [%d][%d]", i, j);
break;
}
}
if (found)
break;
}
}
void
Do_搜索(矩阵M、整数行、整数列、整数元素搜索)
{
int i,j,aux=0;
int=0;
对于(i=0;i|
我使用booleen变量&我将其初始化为false,如果矩阵中存在元素,booleen变量将初始化为true,并使退出循环(而(I)请提供MCVE
void
Do_Search(Matrix M, int row, int col, int elem_search)
{
int i, j, aux = 0;
int found = 0;
for (i = 0; i < row; i++) {
for (j = 0; j < col; j++) {
found = (M[i][j] == elem_search);
if (found) {
printf("\nElement first found in [%d][%d]", i, j);
break;
}
}
if (found)
break;
}
}
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void Do_Search(int row, int col,int M[row][col], int elem_search);
int main(void)
{
int rows, cols;
do
{
printf("Give me the number of rows :");
scanf("%d",&rows);
}while(rows<1);
do
{
printf("Give me the number of cols :");
scanf("%d",&cols);
}while(cols<1);
int arr[rows][cols];
printf("\nThe filling of the Matrix :\n");
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
scanf("%d", &arr[i][j]);
}
}
printf("\nDisplay of the Matrix :\n");
for (int i = 0; i < rows; i++)
{printf("\n");
for (int j = 0; j < cols; j++)
{
printf("[%d]",arr[i][j]);
}
}
printf("\n");
Do_Search(rows,cols,arr,5);
printf("\n");
}
void Do_Search(int row, int col,int M[row][col], int elem_search)
{
int i=0, j=0, aux = 0;
bool found = false;
while(i<row&&found==false)
{j=0;
while(j<col&&found==false)
{
if(M[i][j] == elem_search)
{
printf("\nElement first found in [%d][%d]", i, j);
found=true;
}
j++;
}
i++;
}
}