Macierz – wypisanie elementów, wokół których stoją same jedynki

0

Witam, mam takie zadanie jak na zdjęciu.
https://imgur.com/vrhcLnt

W konsoli nie wypisuje mi 3 0 oraz 0 5 i zastanawiam się dlaczego, nie mam już pomysłu.
Warunek if mam dośc rozległy, ale zapisałem w nim po prostu pozycje elementów z każdej strony, czyli lewo, prawo, góra, dół i skosy.

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

int main()
{
    int n,m,i,j,h,k;
    scanf("%d",&n);
    scanf("%d",&m);
    int tab[n][m];

    for (i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            scanf("%d",&tab[i][j]);
        }
    }

    for(h=0; h<n; h++)
    {
        for(k=0; k<m; k++)
            if (tab[h][k]<=tab[h-1][k-1] && tab[h][k]<=tab[h-1][k] && tab[h][k]<=tab[h-1][k+1] && tab[h][k]<=tab[h+1][k-1] && tab[h][k]<=tab[h+1][k] && tab[h][k]<=tab[h+1][k+1] && tab[h][k]<=tab[h][k-1] && tab[h][k]<=tab[h][k+1])
                printf("%d " "%d\n",h,k);
    }
    return 0;
}
0

no to zobacz pod debugerem ile wynoszą wartości w warunku dla tych pol, albo se je ręcznie policz

0

Poprawiłem trochę kod, teraz działa dla tej tablicy akurat w zadaniu, ale dla innych nie. Co może być źle? Proszę o pomoc :(

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

int main()
{
    int n,m,i,j,h,k;
    scanf("%d",&n);
    scanf("%d",&m);
    int tab[n+2][m+2];

    for (i=0;i<n+2;i++)
    {
        for (j=0;j<m+2;j++)
        {
            tab[i][j]=1;
        }

    }

    for (i=1;i<n+1;i++)
    {
        for (j=1;j<m+1;j++)
        {
            scanf("%d",&tab[i][j]);
        }

    }

    for(h=1; h<n+1; h++)
    {
        for(k=1; k<m+1; k++)
            if (tab[h][k]<=tab[h][k-1] && tab[h][k]<=tab[h][k+1] && tab[h][k]<=tab[h-1][k-1] && tab[h][k]<=tab[h-1][k] && tab[h][k]<=tab[h-1][k+1] && tab[h][k]<=tab[h+1][k-1] && tab[h][k]<=tab[h+1][k] && tab[h][k]<=tab[h+1][k+1])
                printf("%d " "%d\n",(h-1),(k-1));
    }
    return 0;
}
0

w tym zadaniu nie chodzi o porównanie z otaczającymi tylko że 1 ma go otaczać

2
if (tab[h][k]<=tab[h][k-1] && tab[h][k]<=tab[h][k+1] && tab[h][k]<=tab[h-1][k-1] && tab[h][k]<=tab[h-1][k] && tab[h][k]<=tab[h-1][k+1] && tab[h][k]<=tab[h+1][k-1] && tab[h][k]<=tab[h+1][k] && tab[h][k]<=tab[h+1][k+1])

to robisz zle. To jest tragedia. Zrob to tak, by to bylo czytelne dla osoby nietechnicznej, to zapewne sam znajdziesz blad

1 użytkowników online, w tym zalogowanych: 0, gości: 1