Segmention foult (core dumped)

Odpowiedz Nowy wątek
2011-04-22 15:38
1

Mam zadeklarowane kilka vectorów vec1,vec2... każdy vector obsługiwany jest przez oddzielny while. Problem w tym, że przy każdym kolejnym whilu (drugim, trzecim...) program wyrzuca błąd segmention foult (core dumped) gdyby był tylko jeden while program by działała, tzn coś tam robił i nie przerywał swojej pracy bo do poprawnego działania muszą być wszystkie pętle jest ich kilka oto fragment:

while((vec1[q].v==vec1[q+1].v)&&(q<(f=vec1.size()-1))){
           s=q+1;
           while((vec1[s].v=vec1[s-1].v)&&(s<(f=vec1.size()))){
              t=0;
              if((vec1[q].x<vec1[s].x)&&(vec1[q].z>=vec1[s].z)) p=vec1[s];
              else if((vec1[q].x>vec1[s].x)&&(vec1[s].z>=vec1[q].z)) p=vec1[q];
              else t++;
              f=vec.size();
              for(int h=0;h<f;h++)
                 if((vec[h].x==p.x)&&(vec[h].y==p.y)) t++;
              if(t==0) vec.push_back(p);
              s++;
           }
           q++;
        }
        q=0;
        while((vec2[q].v==vec2[q+1].v)&&(q<(f=vec2.size()-1))){
           s=q+1;
           while((vec2[s].v=vec2[s-1].v)&&(s<(f=vec2.size()))){
              t=0;
              if((vec2[q].x<vec2[s].x)&&(vec2[q].z>=vec2[s].z)) p=vec2[s];
              else if((vec2[q].x>vec2[s].x)&&(vec2[s].z>=vec2[q].z)) p=vec2[q];
              else t++;
              f=vec.size();
              for(int h=0;h<f;h++)
                 if((vec[h].x==p.x)&&(vec[h].y==p.y)) t++;
              if(t==0) vec.push_back(p);
              s++;
           }
           q++;
        } 

Wie ktoś może o co chodzi?

edytowany 1x, ostatnio: Giks, 2011-04-22 15:40

Pozostało 580 znaków

2011-04-22 15:52
1

o_O

(vec1[q].v==vec1[q+1].v)&&(q<(f=vec1.size()-1)

Czyli: NAJPIERW odwołaj się do pozycji q i q+1 wektora, a POTEM sprawdź czy wolno ci się do tych pól odwołać. Genialne. Poza tym kod to nieczytelny bełkot i trudno ocenic co ty tam w ogóle chcesz zrobić.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Według zasady "shoot first, ask questions later". ;) - Xupicor 2011-04-22 16:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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