Proszę o pomoc. Sędzia daje WA. Wydaje mi się że kod jest w porządku, męcze się i nie mogę znaleźć błędu. Z góry dzięki za pomoc. Link: http://ideone.com/fActwb10
Witam, rzuci ktoś okiem na moje rozwiązanie ?
Proszę o podanie danych wejściowych, które dają błędne rozwiązanie
http://ideone.com/KORg9i13
Dopiero zaczynam nauke kodowania, więc mój kod jest bardzo prymitywny, za co przepraszam. Biorę się za zadania powyżej mojego poziomu, ponieważ wierzę że to rozwija praktyczne zrozumienie kodowania. Także bez zbędnego przedłużania, będę bardzo wdzięczny za zerknięcie na mój kod i wyjaśnienie mi, dlaczego C++ uważa że próbuję zrobić w funkcji wskaźniki, mimo że nigdzie mu nic takiego nie sugeruję:
Błąd przy próbie kompilacji:
error: cannot convert 'float*' to 'float' in return
if (n==0) return odl_mix;
Mile widziane także opinie dot komunikatu:
error: invalid operands of types 'int [liczby]' and 'int [liczby]' to binary 'operator*'
odl[i]= sqrt((x*x)+(y*y));
Mam wrażenie że wynika to z podobnego błędu, ale nie jestem pewny.
Z góry dzięki za wszelką pomoc.
Uważaj, bo równie dobrze może to rozwijać praktyczną umiejętność bezrozumnego kopiowania cudzego kodu Jeżeli jednak będziesz ostrożny - dobry pomysł.
Masz niezbyt estetyczny kod. Najbardziej razi mnie klamrowanie w mainie - pierwszy for jest bez wcięć.
Masz funkcję float (na SPOJu używaj raczej double, ale mniejsza teraz o to) więc powinieneś zwracać zmienną tego samego typu, np. 3.14. Tymczasem zwracasz return odl_mix, a odl_mix jest tablicą zmiennych, a nie zmienną! Prawidłowy zapis to np. odl_mix[3] czyli zwracasz konkretną liczbę z całej tablicy.
Intuicja Cię nie zawodzi - błąd jest analogiczny. W związku z tym Tobie zostawiam jego poprawienie
PS
Wszedłem na forum zobaczyć co ciekawego się tutaj dzieje odkąd zniknąłem, ale świat studiów jeszcze przez pewien czas wymusza moją nieobecność więc ewentualne dalsze pytania kieruj do innych. No i powodzenia
PS2
Nie do końca rozumiem skąd biorą się Twoje trudności.
if (x[i]<0) x[i]=x[i]*(-1);
if (y[i]<0) y[i]=y[i]*(-1);
odl[i]= sqrt((x*x)+(y*y));
Pierwsze dwa ify sugerują, że rozumiesz, iż x oraz y są tablicami. Z pewnością masz jakieś pojęcie o tablicach, czego dowodzi zapis int x[liczby-1]. Domyślam się, że odejmowanie jedności związane jest z numeracją od zera - wielki plus, że o tym pamiętasz. Mimo to pierwiastkując niejako zapominasz, że x i y to tablice i zamiast napisać x[i] oraz y[i] napisałeś x i y...
Bardzo dziękuję za szczegółową odpowiedź,
Nic nie kopiuje, póki nie zrozumiem jak i dlaczego działa, ale dzięki za ostrzeżenie!
To prawda, brak mi jeszcze ogłady. Póki co nie wiem co wysuwać, a co przycinać. Mam nadzieję że to przyjdzie z czasem
Tylko że ta funkcja ma właśnie zwrócić tablicę. Tylko nie wiem jak to zapisać. Zawsze mogę zrobić pętle for dla wszystkich elementów tablicy i zwracać je pojedynczo, ale zgaduję że jest jakiś szybszy i łatwiejszy sposób, żeby funkcja zwracała tablicę?
W takim razie tym bardziej dzięki za poświęcony czas
To akurat błąd pozostały z poprzedniej iteracji, zanim sobie przypomniałem że muszę coutować dane wejściowe, a nie tylko odległość od 0,0, Już poprawiłem, dzięki.
Także teraz pozostaje tylko pytanie jak mogę zapisać funkcję, która ma zwracać tablicę, a nie pojedynczego floata?
Nie wiem dlaczego SPOJ nie zalicza. Czy mógłby ktoś pokazać przykłady testów których nie przechodzi i ew. dać wskazówke co poprawić? Jestem początkującym i wszelkie uwagi będą mile widziane.
Twój program nie działa nawet dla przykładowego wejścia. https://ideone.com/AKkXce11
Przed proszeniem o pomoc na forum stwórz program, co do którego istnieje chociaż szansa, że jest poprawny, a nie program, który wywala się już na teście podanym w treści zadania.
Tylko nie kompilatorze, proszę wyrażaj się i nie obrażaj swojego kompilatora.
[local] int tmp;
tworzy lokalną zmienną, o nazwie tmp i o nie określonej wartości. Dlatego twój program raz zadziała a raz nie.
PS
- niestaranne formatowanie kodu.
- nieuzasadnione "zawyżone" typy zmiennych
- nie korzystanie z możliwości testowania na ideone [stdin is empty]
PS 2
Dwa pytania kontrolne:
- Czy aby nie jesteś absolwentem "sławetnego" kursu wideo pana Z?
- Czy aby nie napisałeś komentarza pod którymkolwiek zadanniem? Jeżeli tak, to radzę Ci jak najszybciej go przemyśleć i ewentualnie skasować, bo mam zamiar to sprawdzać [a wierz mi, mimo często brakujących tam loginów, jestem w stanie to sprawdzić] i tworzyć czarną listę osób nie przestrzegających zaleceń [4 pkt pod komentarzami] i wtedy zero podpowiedzi na forum dla spamerów.
Jeżeli nie dotyczy Ciebie, to poprostu zignoruj to.
PS 3
Oczywiście u Ciebie zmienna tmp, o którą chodzi nazywa się inaczej.
Witam, mógłbym ktoś zerknąć na ten błąd? Ciągle otrzymuje błąd wykonania.
ideone9