This code tells you how many fertile (1) and infertile (0) sectors are covered by at least one sprinkler (2). The a[m][n]
matrix represents a land with irrigators (2), fertile lands (1) and infertile lands:
#include <stdio.h>
int main() {
int m, n, i, j, dx, dy, qtdFertil, qtdInfertil;
int a[10][10];
scanf("%d %d", &m, &n);
/*ex. de entradas:
4 6
0 0 0 1 1 0
0 2 2 1 1 0
1 0 2 1 2 0
1 1 1 0 0 0
4 5
Obs.: a saida deveria ser 4 e 5 mas está saindo 5 7
*/
//leitura da matriz
for (i = 0; i < m; i++) { //varre as linhas m
for (j = 0; j < n; j++) { //varre as colunas n
scanf("%d", &a[i][j]);
}
}
//calcula setores ferteis/inferteis irrigados
qtdFertil = 0;
qtdInfertil = 0;
for(i = 1; i < m-1; i++) { //varre as linhas da matriz Aij
for (j = 1; j < n-1; j++) { //varre as colunas da matriz Aij
if (a[i][j] == 2){
if(a[i-1][j] == 1) { //elemento a norte de aij
qtdFertil++; }
if(a[i-1][j] == 0) {
qtdInfertil++; }
if(a[i+1][j] == 1) { //elemento a sul de aij
qtdFertil++; }
if(a[i+1][j] == 0) {
qtdInfertil++; }
if(a[i][j+1] == 1) { //elemento a leste de aij
qtdFertil++; }
if(a[i][j+1] == 0) {
qtdInfertil++; }
if(a[i][j-1] == 1) { //elemento a oeste de aij
qtdFertil++; }
if(a[i][j-1] == 0) {
qtdInfertil++; }
}else{
continue; //passa para a próxima iteração
}
}
}
//escreve a quantidade de setires ferteis e inferteis cobertos
//por pelo menos um irrigador
printf("%d %d\n", qtdFertil, qtdInfertil);
return 0;
}