45 / 52
Apr 2020

Mam działający w codeblocks program ale na spoju wyskakuje błąd wykonania SIGABRT

#include
using namespace std;
int t,n;
int main()
{
cin >>t;
for(int a=1; a<=t; a++)
{
int *tablica;
tablica = new int [n];
cin >>n;
for (int i=1; i<=n; i++)
{cin >> tablica[i];}
for(int i=2; i<=n; i+= 2)
{cout << tablica[i] << endl;}
for (int i=1; i<=n; i+= 2)
{cout << tablica [i] << endl;}
}
return 0;
}

Pytanie za 100pkt, jakiego rozmiaru jest tablica?

dobra faktycznie zamieniłem miejscami i git wielkie dzięki

8 months later


rzuci ktoś oczkiem i powie dlaczego nieakceptowane… z testów wynika, ze działa prawidłowo ?!?

Z testów właśnie wynika, że robisz to źle:

Wejście:
2
4 1 2 3 5
3 9 8 7
Wyjście:
2 5 1 3
8 9 7

Twoje wyjście dla tych danych:

2 1 3 5
8 9 7

“…z zachowaniem pierwotnej kolejności w obrębie obu grup.” czyli u mnie jest właśnie dobrze. Inaczej tego nie umiem zinterpretować. co najwyżej przykład ma błąd…Lub proszę nakierować… być może czegoś nie widzę lub najnormalniej nie rozumiem :slight_smile:

Wczytaj ciąg liczb. Następnie wypisz wczytane liczby w taki sposób, aby najpierw pojawiły się te, które wystąpiły na pozycjach parzystych, a następnie te, które wystąpiły na pozycjach nieparzystych; z zachowaniem pierwotnej kolejności w obrębie obu grup. Numerujemy od 1.

Wypisujesz najpierw liczby parzyste, a później nieparzyste - czyli zupełnie coś innego.

czyli co jest nie tak ??? przecież wypisuje najpierw parzyste, następnie nieparzyste i jest zachowana kolejność… więc nie wiem o co chodzi :slight_smile:

4 1 2 3 5 8 9 2 4

Liczba Jej pozycja w ciągu
4 1
1 2
2 3
3 4
5 5
8 6
9 7
2 8
4 9

Pierwszą kolumnę tabeli zignoruj. Liczy się tylko druga.

1
4 1 2 3 5

Na pozycjach parzystych znajduje się 2 i 5. Na nieparzystych 1 i 3.

i tak to jest jak się czyta co drugi wyraz :slight_smile: już widzę, nie chodzi o liczby a o ich pozycję :slight_smile: dzięki

12 months later

Witam. Pod spodem wklejam swoj kod. Póki co ten kod ma za zadanie tylko wprowadzic liczby w odpowiedniej kolejnosci do kolejnych szufladek w tablicy ktora nazwalem liczby[]. Mam problem z tym zeby wyrzucic je na ekran w odpowiedniej kolejnosci. Czy w dobry sposób sie do tego zabralem czy powinienem to skasowac i zaczac od poczatku w inny sposob? Co mozecie zasugerowac? Jestem poczatkujacy.

#include

using namespace std;

int t, n, liczby[20];

int main()
{
cin>>t;
cin>>n;
for (int i=0; i<=t; i++)
{
for(int i=0; i<=n; i++)
{
cin<<liczby[i];
}
}
return 0;
}

Ps. Wolalbym nie wklejac tu swoich kodow bo sie troche zle wyswietlaja. Gdzie polecacie wklejac kody zeby pozniej moc tu wkleic link?

Kod najlepiej wklejać na Ideone i podawać do tego link. zaletą Ideone jest również to, że możesz tam sobie testować swoje kody. Na SPOJ da się poprawnie wklejać kod, ale lepiej jest to robić jednak przez Ideone Jeśli zaczynasz, przeczytaj koniecznie! <–kliknij w to proszę!. Gdy podasz link do dobrze wklejonego kodu będzie wygodniej go analizować, ale to co ja zauważyłem to:

  1. Niepotrzebnie używasz zmiennych globalnych. Nie jest to błąd formalny, ale jest to niedobre przyzwyczajenie.
  2. Twoja tablica liczby jest zbyt mała. Liczb może być nawet 100.
  3. Tablicę rozmiaru n w C++ indeksuje się od 0 do n-1 więc przy wczytywaniu tablicy t wychodzisz poza jej zakres. Powinno być … i < n
  4. Podobnego rodzaju błąd robisz w pierwszej pętli. Masz t testów a w pętli masz t+1 wczytywań. Ponieważ jest to pętla w pętli to nie używałbym takiego samego indeksu. Zamiast i wziąłbym k. Warunek powinien być: k<t
  5. We wczytywaniu elementów t[i] tablicy powinno być “cin >>” a nie “cin <<”.

Dziekuje za zainteresowanie. Poprawilem problemy o ktorych wspomniales i teraz wyglada to tak: https://ideone.com/Q761Jc8
Czy mozesz mi dac jakas sugestie w jaki sposob wyrzucic na ekran liczby z tablicy w odpowiedniej kolejnosci?

Nie mogę za dawać za dużo wskazówek bo uważam, że zrobiłbym ci w ten sposób krzywdę. Właściwie to dam dwie wskazówki:

  1. Jest to proste :slight_smile:
  2. Jeśli to było za mało :grinning: to przypomnij sobie jaki jest ogólny wzór liczby parzystej i jaki jest ogólny wzór liczby nieparzystej a później to wykorzystaj w swoim algorytmie.

A tak w ogóle to dlaczego w Ideone nie masz ustawionego tego kodu na C++ tylko na Javę? Naprawdę nie obejdziesz się bez zmiennych globalnych w tym zadaniu?

Chcialem zrobic petle for w ktorej iterator zwieksza sie +2…
Ale nie wiem czy tak sie da bo nigdy tego nie robilem i cuda wianki mi wychodza.
do tej pory inkrementowalem tylko o 1… czyli ++.

Dzieki. Napewno tez skozystam aczkolwiek wlasnie udalo mi sie dokonczyc to zadanie i sedzia je zaakceptowal a ze to moje pierwsze samodzielnie wykonane zadanie na spoj to otwieram szampana! :smiley:
Dziekuje korkirw za rady!