• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Piksele matura 2017 c++

Object Storage Arubacloud
0 głosów
1,062 wizyt
pytanie zadane 25 lutego 2019 w C i C++ przez Dorian Bajorek Dyskutant (7,920 p.)

Witam mam problem z zadaniem z maturki 2017,dokładnie programowanie.

TREŚĆ 

W pliku dane.txt znajduje się 200 wierszy. Każdy wiersz zawiera 320 liczb naturalnych zprzedziału od 0 do 255, oddzielonych znakami pojedynczego odstępu (spacjami). Przedstawiają one jasności kolejnych pikseli czarno-białego obrazu o wymiarach 320 na 200 pikseli (od 0 – czarny do 255 – biały).

Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi zapisz w pliku wyniki6.txt, a każdą odpowiedź poprzedź numerem oznaczającym odpowiednie zadanie.

Uwaga: plik przyklad.txt zawiera dane przykładowe spełniające warunki zadania (obraz ma takie same rozmiary). Odpowiedzi dla danych z pliku przyklad.txt są podane pod poleceniami.

Zad 6.3

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.

 

KOD:

#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
int piksel[321][201],kon=0;
int x=0,y=0;
int main()
{
    ifstream plik("dane.txt");
    while(!plik.eof())
    {
        plik>>piksel[x][y];
        if(x<320) x++;
        else if(x==320)
        {
            x=0;
            y++;
        }
        //cout<<"x="<<x<<" y="<<y<<endl;
    }
    for(int j=1; j<=200; j++)
    {
        for(int i=1; i<=320; i++ )
        {
            //cout<<"i="<<i<<" j="<<j<<" z "<<"i+1="<<i+1<<" j="<<j<<endl;
            //cout<<"i="<<i<<" j="<<j<<" z "<<"i="<<i<<" j+1="<<j+1<<endl;
            if((abs(piksel[i+1][j]-piksel[i][j])>128)&&(i!=320))
            {
                kon++;

            }
            else if((abs(piksel[i][j+1]-piksel[i][j])>128)&&(y!=200))
            {
                kon++;

            }
        }
    }
    cout<<kon<<endl;
    return 0;
}

 

komentarz 25 lutego 2019 przez mokrowski Mędrzec (155,460 p.)
Zadaj pytanie. Teraz nie wiadomo czego chcesz. Czy program nie działa, czy algorytm jest efektywny.... pomoże także albo załączenie plików do testów lub link do samego zadania.
komentarz 25 lutego 2019 przez Dorian Bajorek Dyskutant (7,920 p.)
my mistake.Nie dopisałem.Mam zły wynik ja mam 782 a w odp jest 753
komentarz 25 lutego 2019 przez mokrowski Mędrzec (155,460 p.)
Kolego.. gdzie są dane? Może ułatwisz innym życie i odeślesz do miejsca gdzie będą pliki przykładowe? (Nie nie będzie do 3 razy sztuka...)

1 odpowiedź

0 głosów
odpowiedź 26 lutego 2019 przez gagyn Stary wyjadacz (11,050 p.)

Coś podejrzanie mi wygląda linijka:

int x=0,y=0;

potem wczytywanie:

    while(!plik.eof())
    {
        plik>>piksel[x][y];
        if(x<320) x++;
        else if(x==320)
        {
            x=0;
            y++;
        }
        //cout<<"x="<<x<<" y="<<y<<endl;
    }

A na koniec pętle for:

for(int j=1; j<=200; j++)
    {
        for(int i=1; i<=320; i++ )
        {

Czyli w skrócie: najpierw wczytujesz od zerowego indexu, a przy sprawdzaniu zaczynasz od pierwszego, czyli pomijasz pierwszy rządek.

komentarz 26 lutego 2019 przez Dorian Bajorek Dyskutant (7,920 p.)
Okej to prawda mój błąd,jednak,że dalej jest nie poprawny wynik
komentarz 26 lutego 2019 przez gagyn Stary wyjadacz (11,050 p.)
Napewno pomógłby link do tego zadania, dane oraz aktualny zmieniony kod.

Podobne pytania

0 głosów
1 odpowiedź 804 wizyt
0 głosów
0 odpowiedzi 907 wizyt
pytanie zadane 6 stycznia 2019 w Java przez krawiecki Początkujący (490 p.)
0 głosów
1 odpowiedź 707 wizyt
pytanie zadane 6 stycznia 2019 w Java przez Mr Joker Początkujący (330 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...