#include<iostream>
#include<fstream>
using namespace std;
int main()
{
fstream plik;
int odczyt, x=0, y=0, odp3=0;
int piksele[320][200];
bool czy_kontrastuje[320][200] = {false};
plik.open("dane.txt");
while(plik.eof()==false)
{
plik >> odczyt;
piksele[x][y] = odczyt;
x++;
if(x==320)
{
x=0;
y++;
}
}
plik.close();
for(int i=0; i<200;i++) //SPRAWDZANIE POZIOME
{
for(int j=0;j<319; j++)
{
if(abs(piksele[j][i] - piksele[j+1][i])>128)
{
czy_kontrastuje[j][i] = true;
czy_kontrastuje[j+1][i] = true;
}
}
}
for(int i=0; i<199;i++) //SPRAWDZANIE PIONOWE
{
for(int j=0;j<320; j++)
{
if(abs(piksele[j][i] - piksele[j][i+1])>128)
{
czy_kontrastuje[j][i] = true;
czy_kontrastuje[j][i+1] = true;
}
}
}
for(int i=0; i<200; i++)
{
for(int j=0; j<320; j++)
{
if(czy_kontrastuje[j][i]==true)
{
odp3++;
}
}
}
cout << odp3 << endl << endl;
}
Dzień Dobry, zbliżają się matury i chciałbym poprosić o pomoc odnośnie zamieszczonego kodu.
Polecenie:
Sąsiednie piksele to takie, które leżą obok siebie w tym samym wierszu lub w tej samej kolumnie. Dwa sąsiednie piksele nazywamy kontrastującymi, jeśli ich wartości różnią się o więcej niż 128. Podaj liczbę wszystkich takich pikseli, dla których istnieje przynajmniej jeden kontrastujący z nim sąsiedni piksel.
Linki:
Arkusz maturalny: LINK
Odpowiedzi: LINK
Link pod którym można pobrać załączniki z plikami do zadania: LINK
Problem:
Napisany przeze mnie kod zwraca wartość 757, gdy poprawną odpowiedzią jest 753. Nie wiem gdzie pojawia się problem, czy leży on w pomyśle czy jego realizacji. Szukając odpowiedzi w Internecie zauważyłem że większość osób rozwiązywało to zadanie na przypadki, zależne od położenia piksela. W moim sposobie postanowiłem porównywać każdy obecny piksel z następnym w wierszu i w kolumnie zaczynając od pierwszych i kończąc na przedostatnich nadając im odpowiednie wartości prawda/fałsz aby żaden piksel nie został zliczony dwukrotnie.