Member 13848568 Ответов: 2

Как я могу увидеть, делится ли элемент в матрице на число строк и столбцов?


Здравствуйте, у меня есть небольшая проблема. Я создаю матрицу и хочу проверить, делится ли какой-либо элемент на число строк, в которых он находится, и число столбцов, в которых он находится.
Например:
1 2 3
4 5 6
7 8 9
6 находится в 3-м ряду и 2-м столбце. 2/6 и 3/6. Так что он подходит к выходу. Вот что у меня есть до сих пор.

#include <stdio.h>
#include <stdlib.h>

int main(){
    int nrows,ncols;
    scanf("%d %d", &nrows, &ncols);
    int matA[nrows][ncols];
    int i,j;
    for(i = 0; i < nrows; i++){
        for(j = 0; j < ncols; j++){
        scanf("%d",&matA[i][j]);
        }
    }


for(i = 0; i < nrows; i++){
        for(j = 0; j < ncols; j++){
        printf(" %d \t",matA[i][j]);
    }
    printf("\n");
}
printf("\n");
for(i = 1; i < nrows; i++){
    for(j = 1; j < ncols; j++){
        int nums = matA[i][j];
        if(nums / i && nums / j){
            printf(" %d \t", nums);
        } else {
            printf("Nema pogoden broj!");
        }
    }
}

    return 0;
}


Что я уже пробовал:

Я пробовал делить на число, но не могу заставить его вернуть количество текущего числа

Mohibur Rashid

6 находится во второй строке и третьем столбце.

GKP1992

Что вы подразумеваете под подсчетом текущего числа? Вы хотите знать, сколько хитов есть в матрице или просто число, которое следует за условием?

Member 13848568

Я хочу знать, можно ли разделить это число на число строки и число столбца

2 Ответов

Рейтинг:
2

CPallini

Я бы сказал, что 6 находится в 2nd строк и 3Резерфорд колонка.
Попробуй

#include <stdio.h>
#include <stdlib.h>

int main()
{
  int nrows,ncols;
  scanf("%d %d", &nrows, &ncols);
  int matA[nrows][ncols];
  int i,j;
  for(i = 0; i < nrows; i++)
    for(j = 0; j < ncols; j++)
      scanf("%d",&matA[i][j]);


  for(i = 0; i < nrows; i++)
  {
    for(j = 0; j < ncols; j++)
      printf(" %d \t",matA[i][j]);
    printf("\n");
  }

  printf("\n");
  for(i = 0; i < nrows; i++)
    for(j = 0; j < ncols; j++)
    {
      int nums = matA[i][j];
      if(nums % (i+1) || nums % (j+1))
        printf("Nema pogoden broj!\n");
      else
        printf(" %d\n", nums);
    }
   return 0;
}


Рейтинг:
0

User 7429338

if(nums / i && nums / j)

Это не проверяет делимость; он всегда будет возвращать значение, но без ДРОБИ, так как вы используете целые числа.

Вместо этого вы можете использовать оператор модуля (остаток после деления) :
if(nums % i == 0 && nums % j == 0)


[no name]

Я видел, что вы отметили мой ответ как решение, но затем отменили его. Пожалуйста, оставьте комментарий, если это не ответило на ваш вопрос :)