• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

mam problem :P chodzi o zadanie z SPOJ'a

Object Storage Arubacloud
0 głosów
813 wizyt
pytanie zadane 15 czerwca 2016 w C i C++ przez jasio1909 Nowicjusz (160 p.)

Tak więc, jestem gimnazjalistą stąd moje myślenie może być dość dziwne, ale moim zdaniem program został napisany poprawnie, lecz wysypuje się po wprowadzeniu pierwszego ciągu na którym program ma operować.

 

Chodzi o zadanie "parzyste i nieparzyste" ze SPOJ'a

Treść:

PP0602A - Parzyste nieparzyste

 

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.

Wejście

Najpierw t - liczba testów. Następnie dla każdego testu liczba n i n liczb, n <= 100.

Wyjście

Dla każdego testu n liczb w opisanym porządku.

Przykład

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

Wyjście:
2 5 1 3
8 9 7

UWAGA KOD ŹRÓDŁOWY (nie chce psuć zabawy)

kod źródłowy całego programu (niestety muszę wkleić cały, gdyż chciałbym uzyskać odpowiedź jak zrobić to "dobrze")

 

 

#include <iostream>
#include <math.h>

using namespace std;

int ile, a, c;

int main()
{
    cin >> ile;
   for (int i=1 ; i<=ile; i++)
   {
       cin >> a;
       int tab[100];

       for (int x=0; x<a ; x++)
       {
           cin >> c;
           tab[x]=c;
       }

       int parzyste [100];
       int nieparzyste [100];
       int b,n;
       for (int x=0; x<a; x++)
       {
           if( (tab[x]/2)-(floor(tab[x]/2)) == 0 )
           {
               b=0;
               tab[x]=parzyste[b];
               b++;
           }
           else if( (tab[x]/2)-(floor(tab[x]/2)) != 0 )
           {
               n=0;
               tab[x]=nieparzyste[n];
               n++;
           }
       }

       for (int z=0 ; z<=b ; z++)   cout << parzyste[z];
       for (int h=0 ; h<=n ; h++)   cout << nieparzyste[h];


   }
    return 0;
}

 

Z góry dziękuję za pomoc i poświęcony czas! ;)

 

2 odpowiedzi

0 głosów
odpowiedź 15 czerwca 2016 przez Grzyboo Nałogowiec (28,860 p.)

int tab[100];

Tak się nie robi, Dynamicznie alokuj pamięć.

int* tab = new int[ile];

// ...

delete[] tab;

 

Nie chcę nawet tego kodu czytać. Pomyśl... Masz wyświetlić liczby na miejscach parzystych, a potem nieparzystych oraz masz tablicę tab ze wszystkimi liczbami do wyświetlenia. To załatwią dwie proste pętle skaczące co 2 liczby.

 

@EDIT

Dobra, odważyłem się przeczytać. To co tu robisz nie ma sensu i nie odnosi się ni jak do zadania.

(tab[x]/2)-(floor(tab[x]/2)) == 0

Taki warunek będzie zawsze spełniony, gdyż dzielisz int/int co daje zawsze wartość int (odcięty zostaje przecinek). Inna sprawa jest taka, że nie mam pojęcia jaki związek ma ten warunek z parzystością pozycji liczby w tablicy

komentarz 15 czerwca 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Na zadaniach algorytmicznych nie ma czasu na bawienie się w dynamiczną alokacje pamięci.
komentarz 15 czerwca 2016 przez Grzyboo Nałogowiec (28,860 p.)
tzn? ;p
komentarz 16 czerwca 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Na olimpiadach / konkursach czasowych nie ma czasu na bawienie się pamięcią, bo rozwiązujemy 1  problem i jeśli się pomylimy przy tej dynamicznej pamięci to uciekają nam cenne minuty by rozwiązać ten problem. Tam deklaruje się tablice po za mainem i się nie bawi z tym.
komentarz 16 czerwca 2016 przez Grzyboo Nałogowiec (28,860 p.)
To może lepiej przerzucić się na Javę...
0 głosów
odpowiedź 16 czerwca 2016 przez krunner Bywalec (2,180 p.)
W ten sposób zepsuliście gimnazjaliście zabawę i możliwość dotarcia do problemu samemu, a przy okazji - nauczenia się czegoś.

Usprawiedliwić Was może tylko to, że sami jesteście w gimnazjum ;-) ;-) ;-)
komentarz 16 czerwca 2016 przez writen Nałogowiec (29,060 p.)
Prawdopodobnie nie przeczytali regulaminu.

Podobne pytania

0 głosów
1 odpowiedź 184 wizyt
pytanie zadane 12 marca 2018 w C i C++ przez coderCpp93 Gaduła (4,200 p.)
0 głosów
1 odpowiedź 158 wizyt
0 głosów
2 odpowiedzi 247 wizyt
pytanie zadane 28 grudnia 2020 w C i C++ przez Lucyfer1234 Początkujący (440 p.)

92,555 zapytań

141,403 odpowiedzi

319,558 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...