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

Zadanie maturalne - matura z informatyki 2016 zadanie "gra w życie"

Object Storage Arubacloud
0 głosów
1,045 wizyt
pytanie zadane 1 kwietnia 2017 w C i C++ przez Ditrix Mądrala (5,650 p.)

Witam

Ogólnie program wydaję się dla mnie być prostym do zrobienia, lecz mój komputer nie chce ze mną współpracować, nie wie wykonuje kodu tak jak powinien działać :/

https://www.cke.edu.pl/images/_EGZAMIN_MATURALNY_OD_2015/Arkusze_egzaminacyjne/2016/formula_do_2014/MIN-R2_1P-162.pdf ----- zadanie 5.

Wytłumaczę co nie co w programie. Zmienne takie jak "r", "ur" "dl" to zmienne, które określają sąsiadów zmiennej tab[i]  na planszy. "r" to right, "ur" to up right, "dl" to down left i tak dalej. Zmienna licz ma liczyć ile jest sąsiadów posiadających 'x'.

Nie wykonuje się żaden z if'ów inkrementujących zmienną licz. I tu jest problem, nie wiem co jest grane, wyświetlając wartości tych zmiennym wyświetlają się dobrze, zgodnie z zasadami mojego rozumowania.

Oto mój kod.

#include <iostream>
#include <fstream>
#include <conio.h>

using namespace std;

int main()
{
    ifstream plik("gra.txt", ios_base::in);
    char tab[221];

    for(int i=0;i<220;i++)
    {
         plik.get(tab[i]);
    }
    tab[221] = 'a';
    int choose = 0;
    while(choose==0)
    {
        for(int i=0;i<220;i++)
    {
            int u=220;
            int r=220;
            int d=220;
            int l=220;
            int ul=220;
            int ur=220;
            int dl=220;
            int dr=220;
            int licz=0;

            if(i-20>=0)u=i-20;
            if(i+1<220)r=i+1;
            if(i+20<220)d=i+20;
            if(i-1>=0)l=i-1;

            if(i-21>=0) ul=i-21;
            if(i-19>=0) ur=i-19;
            if(i+19<220) dl=i+19;
            if(i+21<220) dr=i+21;

            if(tab[u]=='x') ++licz;
            if(tab[r]=='x') ++licz;
            if(tab[d]=='x') ++licz;
            if(tab[l]=='x') ++licz;
            if(tab[ul]=='x') ++licz;
            if(tab[ur]=='x') ++licz;
            if(tab[dl]=='x') ++licz;
            if(tab[dr]=='x') ++licz;

            if(tab[i]=='x')
            {
                if(licz!=2 || licz!=3)
                    tab[i]='.';
            }
            if(tab[i]=='.')
            {
                if(licz==3)
                    tab[i]='x';
            }

        }

    for(int i=0;i<220;i++)
    {
        cout << tab[i];
        if(i+1%20==0) cout << endl;
    }

    cout << endl;
    cout << "Wybierz: ";
    cin >> choose;
    }

    return 0;
}

Plik potrzebny do zadania

....................
....................
....................
....................
.......X.XX.........
.......XXX..........
........X...........
....................
....................
....................
....................
....................
komentarz 1 kwietnia 2017 przez mokrowski Mędrzec (155,460 p.)
Matko boska... a jak będziesz miał liczyć 25 sąsiadów to wstawisz więcej if'ów?! Napisz to z sensem indeksując po vektorze lub w ostateczności tablicy.
komentarz 2 kwietnia 2017 przez Ditrix Mądrala (5,650 p.)
To jest matura, tam nie ma czasu na pielęgnowanie kodu, przynajmniej dla mnie byłoby to czasochłonne. Gdyby było 25 sąsiadów znalazł bym pewnie jakieś zależności dzięki, którym mógłbym skrócić kod, tutaj się nie opłaca za bardzo, jeśli biorąc pod uwagę, że za dużo czasu nie ma.
komentarz 3 kwietnia 2017 przez Dis_Boi Nowicjusz (100 p.)
edycja 3 kwietnia 2017 przez Dis_Boi
W kodzie masz 'x', a w pliku 'X' z wielkiej litery dlatego ify nie działaja. W tablicy nie powinno byc przypadkiem 240 znakow (12*20)? Zresztą chyba lepiej korzystac z tablicy dwuwymiarowej zdecydowanie wygodniejsza do tego zadania. Ponadto nie masz opisanych warunków brzegowych (wiersz 1 i 12, kolumna 1 i 20).

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 3,013 wizyt
pytanie zadane 23 sierpnia 2016 w C i C++ przez Blue Obywatel (1,180 p.)
0 głosów
1 odpowiedź 2,174 wizyt
pytanie zadane 30 listopada 2016 w C i C++ przez Krystek102 Bywalec (2,440 p.)
+2 głosów
2 odpowiedzi 2,338 wizyt
pytanie zadane 12 czerwca 2018 w Inne języki przez lucelka Początkujący (260 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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!

...