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

Zadanie ze SPOJ-a, nakrywanie się elementów tablicy w klasie

Object Storage Arubacloud
–1 głos
703 wizyt
pytanie zadane 10 sierpnia 2016 w C i C++ przez Coroys Początkujący (370 p.)

Zadanie ze SPOJ-a: http://pl.spoj.com/problems/PP0502B/

#include <iostream>
#include <algorithm>

int g = 0;

class Tablice{
private:
    int tablica[50];
public:
    void dod();
    void show();

};

using namespace std;

int main()
{
    int i;
    cin >> i;
    Tablice obiekty[i];

   for (int j = 0; j < i; j++)
    {
        obiekty[j].dod();
    }

    for (int j = 0; j < i; j++)
    {
        obiekty[j].show();
        cout << endl;
    }



    return 0;
}

void Tablice::dod()
{
    cin >> g;
    for (int h = 0; h < g; h++)
       {
           cin >> this->tablica[h];
       }
}

void Tablice::show()
{
    reverse(tablica, tablica + g);
    for (int h = 0; h < g; h++)
       {
           cout << this->tablica[h] << " ";
       }
}

Mój kod działa dobrze dla jednego obiektu, czyli z inputem:

1

7 1 2 3 4 5 6 7

OUTPUT:

7 6 5 4 3 2 1

Przy dwóch obiektach tak jakby miesza elementy tablicy, co mnie dziwi, przecież to są inne obiekty! Hmm

komentarz 10 sierpnia 2016 przez niezalogowany
CO TO JEST???? Masz tylko odwrócić wpisane dane... Szok, załamka. Sorry za takie słowa ale naprawdę to jest tragedia.  Tablice obiekty[i]; co to jest??
komentarz 10 sierpnia 2016 przez Coroys Początkujący (370 p.)
jak co to jest? jest to tablica obiektów.

Zadałem pytanie: Dlaczego przy dwóch innych obiektach te tablice się nakrywają?
komentarz 10 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

To na dzień dobry nie ma prawa działać 

Najpierw liczba testów t (t ≤ 100). Następnie dla każdego testu liczba n (n ≤ 100) i n

2 odpowiedzi

+1 głos
odpowiedź 10 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

Twój post kojarzy mi się z pewnym filmikiem xD
https://www.youtube.com/watch?v=k-hYbWs2dPg
Niestety twoje rozwiązanie to rozwiązanie typu "coder".
To niżej to rozwiązanie typu "programmer".
Wniosek? Mniej kombinowania, więcej myślenia (bez obrazy oczywiście).

#include <iostream>

int main()
{
    int Tab[100];
    int Size;
    int n;
    
    std::cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>Size;
        for(int j=0; j<Size; j++) std::cin>>Tab[j];
        for(int j=Size-1; j>=0; j--) std::cout<<Tab[j]<<" ";
        std::cout<<'\n';
    }
}

 

komentarz 10 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

 Arkadiusz Waluk 

Chyba czegoś tutaj nie rozumie 

Oficjalnego zakazu podania gotowego kodu w regulaminie nie ma,

Regulamin II 2 j

  1. w przypadku pytań, dotyczących serwisu SPOJ, zabronione jest wstawianie całego kodu dotyczącego zadania.

 

Jak nie jest jak jest. Możesz mi to wyjaśnić?

komentarz 10 sierpnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)

Przez ten punkt mieliśmy na myśli głównie osoby zadające pytanie. Czyli aby w pytaniu nie znalazł się gotowy kod bo to jest najczęściej spotykane i to stanowi największy problem - pytający wstawia swój prawie że gotowy kod i później inna osoba zamiast się samemu wysilić również może sobie to skopiować. Odpowiedzi w formie gotowców do SPOJa jest bardzo mało, praktycznie wcale ich nie widać dlatego też chyba nie za bardzo myśleliśmy o tym punkcie w tym kontekście. Podobnie tutaj wspominane jest tylko o zadawaniu pytania.

W regulaminie jest to właśnie tak samo zapisane, zwróć uwagę na tytuł punktu 2:

2. Zadając pytanie Pasjonat zobowiązany jest do przestrzegania następujących zasad:
...
J. ​w przypadku pytań, dotyczących serwisu SPOJ, zabronione jest wstawianie całego kodu dotyczącego zadania. 

"Zadając pytanie" a nie "Odpowiadając". 

komentarz 10 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
W każdym razie.. myślę, że tą dyskusję można już zakończyć..
A ja na przyszłość będę bardziej uważał przy pisaniu odpowiedzi..
to forum ma czujnego strażnika xD
komentarz 11 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
No cóż na twe szczęście lub nie znam się trochę na algorytmach :)
komentarz 11 sierpnia 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
@MetRiko ja w zasadzie już zakończyłem, wszystko co miałem od siebie powiedzieć to powiedziałem ;)

A z tym strażnikiem to bez przesady, po prostu jak widzę, że coś się dzieje i jest zgłoszenie to zapoznaje się z tematem i jak trzeba to w jakiś sposób interweniuje czy porozmawiam - taka rola administratora, czuwanie nad forum, jak trzeba interweniować albo coś wyjaśnić to się nie będę chował przecież.
0 głosów
odpowiedź 10 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
Bez sensu kompilowanie sobie życia przy takich zadaniach ( te zadania nie służą do pięknego kodu tylko do myślenia ). Robisz 1 tablicę. Pętle na liczbę testów i drugą pętlę zagnieżdzoną do wczytywania tych elementów w tablicy, potem robisz zamiane elementów w tej tablicy, wypisujesz tablicę finito
komentarz 10 sierpnia 2016 przez Kasztan Dyskutant (8,080 p.)
Dokładnie straszne jest co tu natworzyłeś. Najlepsze jest to, że output nie musi być "stablicowany" : D
komentarz 10 sierpnia 2016 przez Coroys Początkujący (370 p.)

No to zrobiłem tak:

#include <iostream>
#include <algorithm>


using namespace std;

int main()
{
    int t;
    int g;
    cin >> t;
    for (int i = 0; i < t; i++)
    {
        cin >> g;
        int tablica[g];
        for (int i = 0; i < g; i++)
        {
            cin >> tablica[i];
        }
        for (int i = 0; i < g; i++)
        {
            reverse(tablica, tablica + g);
            cout << tablica[i] << " ";
        }
        cout << endl;
    }




    return 0;
}

Czemu to nie przechodzi przez kompilator SPOJA?

komentarz 10 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)
w każdej pętli iteratorem jest ta sama zmienna co koliduje ze sobą do 1 pętli powinno być do innych j. Po drugie w ogóle to skompilowałeś i sprawdziłeś czy działa czy odrazu walnąłeś to na SPOJ ?
komentarz 10 sierpnia 2016 przez Coroys Początkujący (370 p.)

Dobra już nieważne działa. A mógłby mi ktoś powiedzieć jeśli chodzi o ten mój pierwszy program:

Dlaczego przy dwóch innych obiektach te tablice się nakrywają?

komentarz 10 sierpnia 2016 przez manjaro Nałogowiec (37,390 p.)
Sprawdzałeś to chociaż dla przykładowych danych?
komentarz 10 sierpnia 2016 przez ZakosiliMiNeta Nałogowiec (30,870 p.)

Nic nie koliduje

 Jak jesteś taki mądry to czemu prosisz o pomoc ? Koliduje bo pętla zagnieżdzona korzysta z i z głównej pętli i zmienia wartość tego i 

komentarz 10 sierpnia 2016 przez Coroys Początkujący (370 p.)
Dobra, dzięki.

Podobne pytania

0 głosów
3 odpowiedzi 1,682 wizyt
pytanie zadane 30 sierpnia 2015 w C i C++ przez k222 Nałogowiec (30,150 p.)
0 głosów
1 odpowiedź 641 wizyt
+1 głos
2 odpowiedzi 1,071 wizyt

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,012 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!

...