Informatică, întrebare adresată de ramonaandreea91, 8 ani în urmă

Se dă o matrice cu n linii și m coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele.
Fișierul de intrare vecini1.in conține pe prima linie numerele n m; urmează n linii cu câte m numere naturale separate prin spații – elementele matricei.

Date de ieșire
Fișierul de ieșire vecini1.out va conține pe prima linie numărul C, reprezentând valoarea cerută.

Restricții și precizări
1 ≤ n,m ≤ 100
numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 1 000 000
considerăm că un element al matricei poate avea patru vecini: elementele situate pe aceeași linie și pe coloanele adiacente și elementele aflate pe aceeași linie și coloanele adiacente
Exemplu:
4 5
6 6 4 6 6
2 2 6 4 6
1 1 7 3 6
6 3 6 5 6
Afiseaza 9.
Cele 9 elemente sunt marcate mai jos:

6 6 4 6 6
2 2 6 4 6
1 1 7 3 6
6 3 6 5 6
9.

Răspunsuri la întrebare

Răspuns de stefaniamar
3
yayyy am facut-o
enuntul problemei cred ca l-ai inteles, trebuie sa compari vecinii intre ei, doi cate doi

aici e codul de 100 de puncte


#include <fstream>

using namespace std;
ifstream fin ("vecini1.in");
ofstream fout ("vecini1.out");
int ok,n,m,a[103][103],i,j,st,dr,sus,jos,k;
int main()
{
    fin>>n>>m;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            fin>>a[i][j];
    for (i=0; i<=n+1; i++)
    {
        a[i][0]=-1;
        a[i][m+1]=-1;
    }
    for (j=0; j<=m+1; j++)
    {
        a[0][j]=-1;
        a[n+1][j]=-1;
    }
    for (i=1; i<=n; i++)
    {

        ok=1;
        for (j=1; j<=m; j++)
        {
            ok=1;
            st=a[i][j-1];
            sus=a[i+1][j];
            dr=a[i][j+1];
            jos=a[i-1][j];
            if (st==sus && sus!=-1 && st!=-1)
                {
                    ok=0; }

            {
                if (st==dr && dr!=-1 && st!=-1)
                    {
                        ok=0;
                    }

                {
                    if (st==jos && st!=-1 && jos!=-1)
                        {
                            ok=0;
                        }

                    {
                        if (sus==dr && dr!=-1 && sus!=-1)
                            ok=0;

                        {
                            if (sus==jos && sus!=-1 && jos!=-1)
                                ok=0;

                            {
                                if (dr==jos && dr!=-1 && jos!=-1)
                                    ok=0;
                            }
                        }
                    }
                }
            }
            if (ok==1)
            {
                k++;
            }

        }
    }
    fout<<k;
    /*for (i=0; i<=n+1; i++)
    {
        for (j=0; j<=m+1; j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }*/
    return 0;
}



stefaniamar: (acoladele alea-s nefolositoare.)
Alte întrebări interesante