Wątek przeniesiony 2016-10-19 20:38 z C/C++ przez kq.

Zagwozdka w stworzeniu algorytmu

0

Witam
Tworzę nowy program, którego zadaniem jest pobrać dane liczby do tablicy, następnie chce sprawdzić prawdzowiość pierwszego argumentu. Pokażę to na drobnym przykładzie:

jest sobie tablica: int tab[5][5];

Teraz tworzę pętlę: for(int i=0; i<=10; i++)

Ta pętla w każdym kroku ma sprawdzać czy elementy tab[5][0], tab[4][0], tab[3][0] itp jest równoważny podanej liczbie. Wydaje się, że to prosty algorytm ale siedzę na tym już dwa dni. Byłbym wdzięczny za jakieś wskazówki lub pokazanie na przykładzie jak taka pętla powinna wyglądać.

3

Skoro siedzisz nad tym dwa dni, to pokaż kod, pomożemy :)

0
#include <iostream>


using namespace std;

int x, n; // n - liczba przeszkod, x - dlugosc trasy
int wynik; // wynik, w przypadku bledu wypisze nie.

bool w = true; // bool sprawdzajacy czy gracz wciaz jest zywy

int pozX = 0; // pozycja kulki w ukladzie x
int pozY = 0; // pozycja kulki w ukladzie y


int main()
{


    while (w != true) // glowna petla algorytmu
    {
        cout << ": ";

        cin >> n >> x; // pobranie glownym parametrow

        int tab[n][3]; // inicjalizacja tablicy  trzymajacej wartosci luk w przeszkodach


        for (int i = 0; i <= x; i++) //     petla pobierajaca parametry do  tablicy
        { //
            for (int k = 0; k <= 3; k++) //
            { //
                cin >> tab[i][k]; //
            } //
        } //

        for (int j = 0; j <= x; j++)
        {

            for (int h = 0; h <= n; h++)
            {
                if (pozX == tab[h][0] - 1)
            }
        }
    }


    return 0;
}

Teraz musze sprawdzić czy pozX jest rowna tablicy-1 i jesli jest to sprawdzic przedzial w tablicy tab[x][1] i tab[x][2]

2
cin>>n>>x;  // pobranie glownym parametrow
        
int tab[n][3]; // inicjalizacja tablicy  trzymajacej wartosci luk w przeszkodach 

To nie jest prawidłowa inicjalizacja tablicy w języku C++. Wielkość zwykłej tablicy musi być znana w czasie kompilacji.
Dla dynamicznie przydzielanej pamięci użyj np. std::vector.

Zmienne globalne, ZŁO.

formatowanie treści postów na forum

0

Okey, a w jaki sposób sprawdzić czy pozX jest równa pierwszemu elementowi z tablicy-1? np.

for(int i=0; i<n; i++)
   
    if (pozX==tab[i][0]-1) 
      .....?

Na raze to mi przyszło do głowy ale widzę, że w programie mi to nie działa, jak to powinno wyglądać?

0

Chcesz sprawdzić tab[i][0]-1 czyli pomniejszoną wartość w tym elemencie tablicy,
czy wcześniejszy element tab[i - 1][0]?

0

Kurzę, nie mam pomysłu jak to zbudować. Chodzi o pętle, która jest trasą. Przyjmijmy, że ma długość 10.
W każdym kroku muszę sprawdzić czy kulka, która jest na początku jest przez kolumną. Kolumny zaś są w tablicy. Problem dokładnie tkwi w kwestii rozpisania co się dzieje gdy kulka jest już 1 wartość przed kolumną. Musi ona wtedy sprawdzić pierwszy i drugi parametr tablicy. Pytanie jak stworzyć pętle, która sprawdzi numer tablicy

 if(pozX==tab[h][0]-1)        // sprawdzanie czy pozycjaX jest rowna pierwszej wartosci w wierszu -1
                {
                    for (int g=0; g<tab[h])     <-- tu jest pytanie jak zrobic petle ktora sprawdza wartosc z tablicy
                       {
                         if(pozY>tab[g][1]
                        }
                }
0

Kurza. Nic nie kumam. Wydaje mi się, że od złej strony się zabierasz. Sprawdzaj na bieżąco, czy kulka jest na trasie, a gdy nie będzie,
sprawdź sąsiadujące pola i zareaguj.

0

właśnie dobre zaprojektowanie tej trasy aby sprawdzać czy coś jest przed nią, a jeśli już jest to sprawdzić przedział jest trudne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1