(C) Найти элемент в массиве и вывести его позицию только один раз - PullRequest
0 голосов
/ 09 апреля 2020

Здравствуйте, я стараюсь практиковать себя в C, используя массивы. Сначала я создаю 2D-массив и инициализирую его некоторыми элементами, затем я создаю второй 1D-массив, в котором я хочу сохранить позицию (точнее, строку) элемента, но только если он существует в 2-мерном массиве.

Я покажу вам свой код, чтобы помочь вам лучше понять.

КОД

#include<stdio.h>

 #define N 11

int main(){

/* 2d array */  

int arr[5][3] = {
    {2, 1, 2},
    {15, 15, 11},
    {10, 2 , 2},
    {9, 9 , 10},
    {3, 2,  3}
    };

int elmFound[N];  /* 1d array in which i want to store the position of an element */ 

int i ,j;

int x = 2; /* The element i want to search in 2d array if exists*/ 

for (i = 0 ; i< 5; i++){

for(j = 0; j<3; j++){

if(arr[i][j] == x){

elmFound[i] = i+1;  

printf("Number %d found in rows : %d \n" , x , elmFound[i]); }}}}

ВЫХОД

Number 2 found in rows : 1

Number 2 found in rows : 1

Number 2 found in rows : 3

Number 2 found in rows : 3

Number 2 found in rows : 5

Как я могу исправить код для сохранения позиции (строки) только элемента один раз? Я хочу, чтобы мой вывод был:

Number 2 found in rows : 1

Number 2 found in rows : 3

Number 2 found in rows : 5

1 Ответ

0 голосов
/ 09 апреля 2020

Вот обновленная версия вашего кода, которая реализует совет некоторых программистов @Some:

The break; утверждение здесь приведет к тому, что итерация l oop через j прекратит свою итерацию. Это будет увеличивать i и искать следующую строку. Это достигает того, что вы ищете.

Вот дополнительное обучение по разрыву: Учебник по выражению перерыва

#include<stdio.h>

#define N 11

int main()
{

    /* 2d array */  
    int arr[5][3] = 
    {
        {2,  1,  2},
        {15, 15, 11},
        {10, 2 , 2},
        {9,  9 , 10},
        {3,  2,  3}
    };

    int elmFound[N];  /* 1d array in which i want to store the position of an element */ 
    int i ,j;
    int x = 2; /* The element i want to search in 2d array if exists*/ 

    for (i = 0 ; i< 5; i++)
    {
        for(j = 0; j<3; j++)
        {
            if(arr[i][j] == x)
            {
                elmFound[i] = i+1;  
                printf("Number %d found in rows : %d \n" , x , elmFound[i]); 
                break;
            }
        }
    }
}

Вот вывод при запуске:

Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...