1 / 9
Apr 2019

Witam, mam problem z zadaniem “proste dodawanie”. Mój kod działa, ale przekracza limit pamięci. Oto treść zadania:
Proste dodawanie

Twoim zadaniem jest dodać wszystkie liczby całkowite podane na wejściu.
Wejście

W pierwszym wierszu znajduje się liczba t testów (0 < t < 100) Każdy test opisany jest w następujący sposób. W pierwszym wierszu dana jest liczba n - liczba liczb do zsumowania. Następnie podanych jest n liczb pooddzielanych spacją.
Przykład

Input:
2
5
1 2 3 4 5
2
-100 100

Output:
15
0

A oto kod: https://ideone.com/VhPAEs65
Możecie pomóc w ograniczeniu zużywanej pamięci? Z góry informuje, iż jestem początkujący i mogę popełniać głupie błędy.

  • created

    Apr '19
  • last reply

    Feb '24
  • 8

    replies

  • 978

    views

  • 7

    users

  • 4

    likes

  • 4

    links

Z tego co widzę SPOJ przyjmuje kod. Zastanów się jak zrobić to zadanie bez tablicy. Poza tym w C++ taki zapis jest niepoprawny:

    int n;
    cin>>n;
    int liczby[n];

Zrobiłem to bez tablicy i powiodło się. Powinienem był pokombinować, zanim niepotrzebnie stworzę nowy temat. Dziękuję za pomoc.

Najlepiej jest dołączyć się do wątku, który chcesz poruszyć. Chyba na każde zdanie są już otwarte wątki. A jeszcze lepiej przed dołączeniem do wątku poczytać co jest w nim napisane. Jest bardzo prawdopodobne, że ktoś poruszył już Twój problem :slight_smile:

3 months later

Witam. Mam problem z tym zadaniem. Wydaje mi się, że wszystko jest dobrze napisane, co więcej kompilator zwraca prawidłowe wyniki. Mimo wszystko sędzią nie akceptuje mojego wariantu poprzez rzekomą “błędną odpowiedź”

Kod:

Nie możesz użyć typu unsigned jeżeli na wejściu pojawią się liczby ujemne. Nie musisz sprawdzać czy liczba testów jest poprawna - to jest zbędne.

if (1 < uTestNumber < 1000)

Dodatkowo taki zapis w C++ oznacza coś innego niż prawdopodobnie chciałeś osiągnąć. Operator < to funkcja dwuargumentowa zwracająca wartość logiczną. Zobacz ostrzeżenia kompilatora:

prog.cc1: In function ‘int main()’:
prog.cc:10:22: warning: comparison of constant ‘1000’ with boolean expression is always true [-Wbool-compare]
10 | if (1 < uTestNumber < 1000)
prog.cc:10:8: warning: comparisons like ‘X<=Y<=Z’ do not have their mathematical meaning [-Wparentheses]
10 | if (1 < uTestNumber < 1000)

Poprawnie powinno to wyglądać tak:

if (1 < uTestNumber && uTestNumber < 1000)
2 years later

Witam wszystkich koderów i proszę o pomoc w tym trywialnym zadaniu
mój kod działa, ale… oczywiście coś jest nie tak :smiley:


Nie korzystałem z metody cin tylko scanf, odkąd autor zadania prosi o podawanie liczb oddzielonych spacją

Brawo za zaliczenie zadania, ale ty sam wiesz co robisz i czemu to ma służyć ??

int tablica[ileL]; //co to jest ?? Jakaś nowa metoda deklarowania przez zmienne ??
for(int j=0;j<ileL;j++)
{
scanf("%d",&tablica[ileL]); //jaki zakres ma tablica i do jakiego pola coś ma być wkładane
suma+=tablica[ileL]; /// i jaki sens ma ta tablica…
}

2 years later

Ciekawy ten sędzia, bo skoro działa w Visual Studio to dlaczego nie przyjmuje SPOJ - sędzia?
#include
using namespace std;
int t, n, liczba;

int main()
{
int wynik = 0;
cin >> t;
if (t > 0 && t < 100)
{
for (int i = 0; i < t; i++)
{
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> liczba;
wynik += liczba;
}
cout << wynik;
wynik = 0;
}
} else {
cout << “Out of range. Number of tests (1-99)” << endl;
return 0;
}
return 0;
}