• 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

Cloud VPS
0 głosów
1,079 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,880 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,880 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,880 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ź 235 wizyt
pytanie zadane 12 marca 2018 w C i C++ przez coderCpp93 Gaduła (4,200 p.)
0 głosów
1 odpowiedź 217 wizyt
0 głosów
2 odpowiedzi 328 wizyt
pytanie zadane 28 grudnia 2020 w C i C++ przez Lucyfer1234 Początkujący (440 p.)

93,457 zapytań

142,453 odpowiedzi

322,722 komentarzy

62,837 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

Kursy INF.02 i INF.03
...