Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sugestie wzgledem kodu

Ostatnio zmodyfikowano 2016-10-24 21:37
Autor Wiadomość
Dev142
Temat założony przez niniejszego użytkownika
Sugestie wzgledem kodu
» 2016-10-22 17:53:00
Witajcie!
Moglibyscie pomp mi w znalezc blad logiczny w tym kodzie?

to kod na Flappy bird w olimpiadze na oi.edu.pl.  Licze na sugestie gdzie jest i jaki logiczny blad

https://sio2.mimuw.edu.pl/c/oi24-1/p/fla/  -  link do zadania


C/C++
#include <iostream>
using namespace std;



int skok;
bool wynik = true;


int x, n; // x - d toru n  - l kolumn
int px = 0; // pozycja na osi x
int py = 0; // pozycja na osi y

int k[ 1000000 ]; // tablica na  numer kolumny na osi x
int p[ 1000000 ]; // tablica na początek luki w  kolumnie
int z[ 1000000 ]; // tablica na koniec luki w kolumnie

// wartosci do petel
int i = 0;
int j = 0;
int r = 0;
int b = 0;
// i po wartosciach

int main()
{
   
    cin >> n >> x;
   
    for( i = 0; i < n; i++ ) { cin >> k[ i ] >> p[ i ] >> z[ i ]; } // pobranie wartosci kolumn
   
   
   
   
   
    for( int i = 0; i <= x; i++ ) // petla  wykonujaca sie tyle razy ile ma dlugosc tor
    {
       
       
        if( px + 1 < k[ i ] ) // gdy ptak jest +1 przed kolumna
        {
            if( py + 1 < p[ i ] )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if( py + 1 == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if( py == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if(( py + 1 > p[ i ] ) &&( py < z[ i ] ) )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if(( py > p[ i ] ) &&( py == z[ i ] ) )
            {
                --py;
                ++px;
            }
            else if( py > p[ i ] )
            {
                wynik = false;
            }
        }
        else if( px + 1 == k[ i ] ) // warunek gdy ptak jest 1 wartosc przed przedzalem
        {
            if( py + 1 < p[ i ] )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if( py + 1 == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if( py == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if(( py + 1 > p[ i ] ) &&( py < z[ i ] ) )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if(( py > p[ i ] ) &&( py == z[ i ] ) )
            {
                --py;
                ++px;
            }
            else if( py > p[ i ] )
            {
                wynik = false;
            }
           
        }
        else if( px == k[ i ] ) // warunek gdy ptak jest w przedziale
        {
            if( py + 1 < p[ i ] )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if( py + 1 == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if( py == p[ i ] )
            {
                ++skok;
                ++px;
                ++py;
            }
            else if(( py + 1 > p[ i ] ) &&( py < z[ i ] ) )
            {
                ++skok;
                ++py;
                ++px;
            }
            else if(( py > p[ i ] ) &&( py == z[ i ] ) )
            {
                --py;
                ++px;
            }
            else if( py > p[ i ] )
            {
                wynik = false;
            }
           
        }
        else if(( px == p[ i ] ) &&( py == p[ i ] ) )
        {
            wynik = false;
           
        }
        else if(( px == p[ i ] ) &&( py == z[ i ] ) )
        {
            wynik = false;
        }
       
       
    }
   
   
   
   
    cout << skok << endl;
   
   
    return 0;

Ogolne założenie jest takie aby sprawdzić gdzie jest ptak i  przedział czyli luka. Następnie nakierować tam ptaka. Lecz o dziwo ptak wydaje sie isc ciagle w gore. ;/
}[/i][/i]
P-152762
carlosmay
» 2016-10-22 20:46:25
Sugestie wzgledem kodu
Doprowadź go do stanu użyteczności.
P-152771
Dev142
Temat założony przez niniejszego użytkownika
W jaki sposób
» 2016-10-22 21:01:18
W jaki sposób? Nie mam innego pomysłu aby go stworzyć. Zrobiłem już ponad 20 wersji tego kodu i tylko ten wydaje się najbliższy prawdy. Od tygodnia jedyne co udało mi się wymyślić to zamiana tego przykładu z flappy birded na przedziały liczbowe  i odwrócenie tej tabelki o 90 stopni. Następnie w każdym kroku x(długosc trasy)  sprawdzamy gdzie znajduje się dany przedział. Jeśli jest  na prawo od ptaszka to ptak idzie w prawo (py) itd.
P-152773
michal11
» 2016-10-22 21:04:29
Wstaw kod w znaczniki. Przeczytaj czerwoną ramkę pod pierwszym postem.
P-152774
mateczek
» 2016-10-22 21:07:54
no i daj linka do zadania lub jego treść. Skąd ktoś obcy ma wiedzieć co ten kod robi ??
P-152775
Dev142
Temat założony przez niniejszego użytkownika
d
» 2016-10-22 23:24:16
Żadnych sugestii?
P-152779
carlosmay
» 2016-10-23 00:58:59
Zmienne globalne zło wcielone.
Użyj debuggera i odnajdź miejsce, w którym program zachowuje się niezgodnie z oczekiwaniem.
P-152780
mateczek
» 2016-10-23 09:06:33
Żadnych sugestii?
Chłopie opanuj się. Nie każdemu musi się chcieć siedzieć i wymyślać algorytmy, które do niczego być może nie będą mu potrzebne (a nad takim algorytmem zawsze trzeba posiedzieć). A co dopiero analizować taki kod, który jest kodem osoby początkującej w programowaniu i siłą rzeczy zagmatwany nad miarę??

Wracając do merytorycznej oceny zadania.
"Zadanie przypomina trochę "pracę z punktu a do punktu b". Nie zależnie jaką drogą przebędzie się praca zawsze i tak będzie taka sama!!!

reasumując:
A(0 0) B(10 0) wynik zawsze 5 puknięć droga nie ma znaczenia ilość puknięć zależy tylko od punktu startowego i końcowego.   
P-152785
« 1 » 2
  Strona 1 z 2 Następna strona