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

SPOJ Liczby na ich kwadraty - Rozwiązałem zadanie, wynik dostaje poprawny, lecz system nie przyjmuje

Object Storage Arubacloud
0 głosów
816 wizyt
pytanie zadane 22 listopada 2016 w C i C++ przez Kubx007 Nowicjusz (150 p.)

Witam,

rozwiązałem to zadanie: http://pl.spoj.com/WSDOCPP/problems/KWADRATY/

Kiedy podaje liczby z przykładu oraz inne, to wynik jest prawidłowy, lecz gdy wklejam kod na strone, dostaję błąd "Błędna odpowiedź" W czym problem?

PS. nie wiedziałem jak skrócić kod, bo nie wiem gdzie leży błąd

Proszę o jakieś nakierowanie :)

 

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int liczba[10000],n;
    cin >> n;
    for (int i=0; i<n; i++)
    {
        cin >> liczba[i];
    }
    for (int j=n-1; j>=0; j--)
    {
        if (liczba[j]%2==0)
        {
            cout << pow(liczba[j],2) << endl;
        }
        else if (liczba[j]%2!=0&&liczba[j]>9)
        {
            cout << liczba[j]/10 << endl;

        }
        else if (liczba[j]%2!=0&&liczba[j]<=9)
        {
            cout << 0 << endl;
        }
    }
}

 

komentarz 22 listopada 2016 przez DamianW Bywalec (2,080 p.)

Hej :D. Tam jest napisane "... ich kwadraty a nieparzyste skróci o cyfrę jedności..." czyli np. jak masz 13 to odejmujesz 13-3 :D,a ja zauważyłem ,że dzielisz prez 10 co daje w wyniku np. 1.3 :D. Może to ten problem ? :D

komentarz 22 listopada 2016 przez niezalogowany
On to zrobił dobrze. Jeżeli liczba jest intem to dzielenie jakiejś liczby przez 10 po prostu ucina ostatnią liczbę. Bo: 13/10 = 1.3, ale w zmiennej typu int nie można zapisać cyfr po przecinku i są ucinane. Zostaje więc 1.
komentarz 22 listopada 2016 przez DamianW Bywalec (2,080 p.)
w sumie masz rację :D

2 odpowiedzi

+1 głos
odpowiedź 22 listopada 2016 przez niezalogowany
wybrane 23 listopada 2016 przez Kubx007
 
Najlepsza

Nie korzystaj z biblioteki cmath. Zamiast funkcji pow użyj mnożenia:

cout << liczba[j]*liczba[j] << endl;

Zwiększ też ilość elementów w tablicy do 100 000 tak jak jest w treści zadania :)

komentarz 23 listopada 2016 przez niezalogowany
edycja 23 listopada 2016
Z funkcją pow nie będzie działać ponieważ ta funkcja zwraca liczby w postaci zmiennoprzecinkowej. Dlatego spoj nie rozpoznaje ich poprawnie. Można też dokonać takiego rzutowania by już były rozpoznawane jako liczby całkowite:

cout << (int) pow(liczba[j],2) << endl;
komentarz 23 listopada 2016 przez Kubx007 Nowicjusz (150 p.)
Zmiana na mnożenie pomogła :)

Widzę również na spoju, że aż sam zrobiłeś to zadanie :D

 

Dzięki! :)
0 głosów
odpowiedź 23 listopada 2016 przez niezalogowany

Ja bym na Twoim miejscu stworzył tablice dynamiczną wielkości (ja tak zrobiłem i rozwiązanie okazało się dobre). Stworzyć dwie pętle for, jedna od inicjalizacji i aktualizacji wartości tablicy (w zależności od warunku) i drugą od wyświetlenia tablicy od tyłu. Warunki masz dobre tylko pozbądź się tego co jest po &&.

komentarz 23 listopada 2016 przez niezalogowany
Jak się pozbędzie warunkòw po znaku && to trzecia instrukcja warunkowa nigdy się nie spełni. Możnaby skorzystać z tablic dynamicznych... tylko problem w tym,  że Twoja odpowiedz nie zawiera rozwiązania problemu autora. To znaczy zawiera tylko połowe i to nie w sposób , że wiedziałby od razu co zaszło nie tak...
komentarz 23 listopada 2016 przez niezalogowany
Trzecia instrukcja warunkowa jest niepotrzebna i można to sprawdzić za pomocą podanych danych testowych. Można równie dobrze zrobić to zadanie ustalając wielkość tablicy z góry, więc nie ma znaczenia, który sposób wybierze bo oba są dobre.
komentarz 23 listopada 2016 przez niezalogowany
A dobra już czaję. Jednak nie spodobało mi się to, że zamiast powiedzieć mu gdzie ma dwa małe błędy to proponujesz zrobienie tego zadania w kompletnie inny sposób. Jak zrobi to nadal nie będzie wiedział gdzie wcześniej (teraz) miał błąd.
komentarz 23 listopada 2016 przez niezalogowany

Ja podałem sposób w jaki można dobrze wykonać to zadanie i przede wszystkim jak sam podkreśliłeś proponuje mu je.

Podobne pytania

0 głosów
0 odpowiedzi 186 wizyt
pytanie zadane 16 lipca 2017 w C i C++ przez Yomen Nowicjusz (120 p.)
0 głosów
1 odpowiedź 326 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez Sinnley Stary wyjadacz (12,810 p.)
+1 głos
2 odpowiedzi 521 wizyt
pytanie zadane 26 września 2019 w C i C++ przez Tedi Użytkownik (580 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 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!

...