Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

c++ bład a algorytmu

#1
c++ bład a algorytmu
Kod:
void spadanie(int tablica[12][24]){
                                    for(int pe=288; pe>0;pe--){  
                                    if (tablica[0][pe]==1)
                                    {
                                    if (tablica[0][pe-12]==0){
                                    int pomoc=pe-13;                      
                                    tablica[0][pomoc]=1;
                                    tablica[0][pe]=1;}                  
                                    }
                                    }
Funkcja ta powoduje błąd, dlaczego?
 System operacyjny: windows_xp_2003 Przeglądarka: ie
#2
RE: c++ bład a algorytmu
A w czym jest błąd? Kompilator zwraca uwagę, że brakuje klamry zamykającej funkcję (naprawdę użyteczną rzeczą jest stosowanie odpowiednich wcięć).
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: c++ bład a algorytmu
sorki, że żle przekopiowałem
Kod:
void spadanie(int tablica[12][24]){
             for(int i=288; i>0;i--){  
                                            if (tablica[0][i]==1)
                                            {
                                            if (tablica[0][i-12]==0){
                                                    
                                                     tablica[0][i-12]=1;
                                                     tablica[0][i]=0;
                                                     }                  
                                                     }
                                                    
                                   }
                                   }
Błąd wyskakuje jak włącze program wywołujący tą funkcje-w załączniku fotka
 System operacyjny: windows_xp_2003 Przeglądarka: ie
#4
RE: c++ bład a algorytmu
W pętli zmienna i ma na początku wartość 288, i robisz coś takiego:
tab[0][288], a wiesz (z definicji) że tablica ma tylko 24 elementy. Prawie zawsze gdy pojawia się takie okienko oznacza to wynik pracy z tablicą lub wskaźnikiem.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#5
RE: c++ bład a algorytmu
1. ostatni element tablicy ma numer tablica[0][287], a nie [0][288], bo tablice są numerowane od zera. pierwszy element tablicy to [0][0], a nie [0][-12]. tzn. pętla powinna powinna być skonstruowana inaczej:
Kod:
for(i=287; i>=12;i--){
(...)
}

2. nie stosuj tego typu haków [12][24] -> [0][288]... kompilator może wyrzucić błąd o przekroczeniu zakresu tablic. a poza tym w przypadku złożonych struktur to nie zadziała - wyrabiasz sobie złe nawyki.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
#6
RE: c++ bład a algorytmu
Dodam tylko taka uwage:
Tablice wielowymiarowe stosuje sie zeby ulatwic sobie prace, a ty uzyles tego chyba zeby sobie cos utrudnic? Wow Skoro uzyles tablicy dwuwymiarowej to po co sie odwolujesz do niej tak jak do jednowymiarowej? Czyli zamiast np. wyliczac calkowita liczbe elementow, robic skomplikowane rzeczy z indeksami typu [i-12] i jak widac na zalaczonym przez ciebie obrazku popelniac bledy przez tego typu przekombinowania mozna przeciez zastosowac cos takiego:
Kod:
for(int i=23;i>=0;i--)
{
  for(int j=11;j>=0;j--)
  {
    if (tablica[i][j]==1)
    {
      ...
    }
  }
}

Skoro uparles sie przy takim dziwnym zapisie czemu poprostu nie zrobisz tablicy jednowymiarowej - int tablica[288] ?

Jesli chodzi o slowa klajoka:
"2. nie stosuj tego typu haków [12][24] -> [0][288]... kompilator może wyrzucić błąd o   przekroczeniu zakresu tablic"

Taki kompilator to skarb ja takiego nie mam i jesli faktycznie gdzies przez pomylke wyjdzie sie poza obszar zadeklarowanej przez siebie pamieci na np. tablice to wychodzi to dopiero podczas wykonywania sie programu a nie kompilacji. Wtedy dostajesz error, ze obiekt o takim a takim adresie nie boze byc read i zwieche programu, czesto w najmniej oczekiwanym i specyficznym momencie.
 System operacyjny: windows_2000 Przeglądarka: ie
Programy: Polecane / Nowe / Inne




Podobne wątki (c++ bład a algorytmu)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Bład wysyłania email'a Może został podany zły adres e-mail php by przemo Paubl 0 6766 06.11.2015, 19:56
Ostatni post: Paubl
  Wyznaczyć ilość przypisań dla algorytmu wyznaczającego maksymalną wartość w tablicy Trojan3000 11 10594 17.12.2014, 19:27
Ostatni post: broda99
  Bład JAVA Mc.Memorek 7 2917 30.04.2014, 01:37
Ostatni post: koneton

Skocz do:


Wybrane wątki (c++ bład a algorytmu)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 7890 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 4517 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 21256 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 7021 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 7635 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 9535 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 9013 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 9000 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 11047 28.04.2019 19:31
Ostatni post: koneton
  Skrypt usuwający pliki sylwiaa1 2 4453 28.04.2019 15:20
Ostatni post: sylwiaa1
  Środowisko do assemblera Physicist 4 10281 21.04.2019 14:04
Ostatni post: Ajgor
  VBA excel dmjs 6 10530 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 10246 25.03.2019 12:53
Ostatni post: koneton
  Klasa wewnętrzna w C++ Physicist 4 9892 23.03.2019 18:28
Ostatni post: Physicist
  Ruby on Rails - tutoriale luciussulla 0 8991 23.03.2019 16:49
Ostatni post: luciussulla