Rezolvare completă PbInfo #779 VeciniPari

Cerinţa

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se determine câte elemente din matrice au toți vecinii numere pare.

Date de intrare

Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire

Programul afișează pe ecran numărul C, reprezentând valoarea determinată.

Restricţii şi precizări

  • 1 ≤ m,n ≤ 100
  • elementele matricei vor fi mai mici decât 1.000.000
  • un element al matricei are cel mult patru vecini: pe linia anterioară și aceeași coloană, pe linia următoare și aceeași coloană, pe aceeași linie și coloana anterioară, pe aceeași linie și coloana următoare.

Exemplu

Date de intrare

4 7
15 27 40 41 32 42 12 
48 35 40 54 17 46 32 
37 52 40 18 11 46 23 
49 27 40 29 25 44 12 

Date de ieșire

5

Explicație

Valorile care au toți vecinii pari sunt (în ordine de sus în jos și de la stânga la dreapta): 41 42 12 40 23

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema VeciniPari:

#include <iostream>
#include <algorithm>
using namespace std;

int n,m,a[102][102];
int dx[]={0,0,-1,1}, dy[]={1,-1,0,0};

int main()
{
    cin >> n >> m;
    for(int i = 1 ; i <= n ; ++i)
        for(int j = 1 ; j <= m ; ++j)
            cin >> a[i][j];
    
    int cnt = 0;
    
    for(int i = 1 ; i <= n ; i ++ )
        a[i][0] = a[i][m+1] = 0;
    for(int j =1 ; j <= m ; j ++)
        a[0][j] = a[n+1][j] = 0;
    
    for(int i = 1 ; i <= n ; i ++ )
        for(int j =1 ; j <= m ; j ++)
        {
            bool ok = true;
            for(int k = 0 ; k < 4 ; k ++)
                if(a[i+dx[k]][j+dy[k]] % 2 != 0)
                    ok = false;
            if(ok)
                cnt ++;
        }
    
    cout << cnt;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #779 VeciniPari

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #779 VeciniPari de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!