Probuje rozwiazac zadanie Parzyste nieparzyste za pomoca wskaznikow. Spoj nie akceptuje i juz nie mam pomyslu dlaczego. Oto moj kod
created
last reply
- 8
replies
- 923
views
- 3
users
- 1
link
Probuje rozwiazac zadanie Parzyste nieparzyste za pomoca wskaznikow. Spoj nie akceptuje i juz nie mam pomyslu dlaczego. Oto moj kod
Krótko, bardzo krótko [wolę nie oglądać twojego kodu ]:
W tym zadaniu nie chodzi wcale o liczby parzyste i nieparzyste. Przeczytaj dokładnie treść zadania i przyjrzyj si ę dokładnie przykładowi.
Przy okazji możesz też poczytać: Jeśli zaczynasz, przeczytaj koniecznie! <--kliknij w to! proszę.
Program liczy dobrze. Dla dluzszych ciagow wejsciowych prawdopodobnie nastepuje blad ochrony pamieci.
przyklad wejscia
2
20 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
2 9 8
Gdy zadeklarowalem z gory odpowiednio duza tablice to Twoj program przeszedl przez sedziego.
Mozna tez troche pozmieniac klejnosc instrukcji zeby wielkosc tablicy byla juz znana wtedy deklarowac czytac do niej wartosc itd.
Faktycznie, @pawoj20, masz częściowo rację, ale pytająca sama sobie winna. Gdyby wkleiła swój kod bardziej staranniej …, np tak:
#include <iostream>
using namespace std;
void sortowanieParzystaNieparzysta(int *tab, int ileLiczb)
{
cin >> ileLiczb;
for (int i=0; i<ileLiczb; i++)
{
cin >> tab[i];
}
for (int i=1; i<=ileLiczb; i++)
{
if (i%2==0)
{
cout << tab[i-1] << " ";
}
}
for (int i=1; i<=ileLiczb; i++)
{
if (i%2!=0)
{
cout << tab[i-1] << " ";
}
}
cout << endl;
}
int main()
{
int ileTestow, ileLiczb;
int *tab;
cin >> ileTestow;
for (int i=0; i<ileTestow; i++)
{
tab = new int[ileLiczb];
sortowanieParzystaNieparzysta(tab, ileLiczb);
delete[] tab;
tab = NULL;
}
return 0;
}
W twoim kodzie wystarczy instrukcję z linii 7, przenieść do [przed] 39 i będzie AC.
Natomiast zamiast sprawdzania - if (i%2 == 0) .....
można po prostu od razu iterować:
for (int i = 1; i < n; i += 2)
//oraz
for (int i = 0; i < n; i += 2)
a nie tak jak to zrobiłaś.
Tak, teraz już wiem, że wiesz. Po prostu mało uważnie popatrzyłem na twój kod , tak mało mi się spodobał.
W twoim pierwotnym kodzie, można też wprowadzić tylko jedną małą zmianę w linii 32:
zamiast:
int ileTestow, ileLiczb;
można wprost napisać:
int ileTestow, ileLiczb{101}; //ileLiczb = 101;
ale wtedy idea zastosowania w twoim kodzie tablicy dynamicznej staje się trochę bezsensu. No i chociaż z taką zmianą też będzie AC, to taki kod nadal nie będzi mi się podobał .
Ja też jak dziecko, chciałbym za rączkę do najbliższej knajpki …
Na razie, może zapomnij o wskaźnikach, no i w C++14 [w C++ > C++11], można i lepiej jest stosować np <vector>
z STL, zamiast “starych”, dynamicznych tablic.
W tym zadaniu, można też wykorzystać odpowiednio dużą tablicę statyczną.
Trzymam kciuki, za szybkie wydostanie się z mgieł
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 152 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 75 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 187 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 125 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 127 | Jul '24 |