Blad wykonania SIGSEGV

0

Po wysłaniu zadanko do sprawdzenia na polskispoj otrzymuje komunikat błąd wykonania (SIGSEGV) co jest nie tak w tym kodzie jak testuje to wszystko ładnie śmiga.Zadanko
http://pl.spoj.com/problems/FR_05_01/

#include <iostream>
using namespace std;

int main()
{
    int t;
    cin>>t;
     string wpiszdztygodnia; int przesuniecie;
     string dnitygodnia [7]={"Pn","Wt","Sr","Cz","Pt","So","Nd"};
     int n=0;
    while(t--)
    {
  n=0;


     cin>>wpiszdztygodnia;
     cin>>przesuniecie;

      for(int i=0;i<7;i++)
      {
          if(wpiszdztygodnia==dnitygodnia[i])
          {

              if(i+przesuniecie>6)
              {

                  while(i+przesuniecie!=6)
                  {
                      n=n+1;
                      przesuniecie=przesuniecie-1;
                      if(n==7)
                      {

                          n=0;
                      }
                  }
                  cout<<dnitygodnia[(0+n-1)];

              }
              else {cout<<dnitygodnia[i+przesuniecie];}

          }

      }
      cout<<endl;
    }

}

2

Gdzieś musisz wyłazić poza tablicę. Popatrz jakie są zakresy danych w zadaniu, wygeneruj odpowiedni zestaw i testuj.
Dla mnie oczywistym jest że błąd jest kiedy n=0, bo robisz potem cout<<dnitygodnia[(0+n-1)]; czyli próbujesz wejść pod indeks -1. Ale że kod napisałeś tragicznie i w ogóle nie wiadomo co tam robisz i po co, to nie jestem w stanie zaproponować fixa innego niż: kill it with fire a potem napisz od nowa, tym razem w wersji zrozumiałej dla ludzi.

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