41 / 277
Sep 2016
15 days later

Witam odnowie temat , wiem że wiele osób już o to pytało, ale zaptam i ja. Co robię źle z kodem, wydaje mi się poprawny sprawdziłem wszytkie warianty błedów z tego forum , a i tak sedzia ocenia mnie negatywnie... oto mój kod.

#include <iostream>

using namespace std;


int main()
{


int liczba;

    

    for(int n=0;n<1000000;n++)
    {
    cin>>liczba;
            
            if(liczba<2)
            {
                cout<<"NIE"<<endl;
            }
                
            else 
            {
                
                for (long int p=2; p<=liczba; p++)
                {
                    if(liczba==p)
                    {
                        cout<<"TAK"<<endl;break;
                    }
                    if(liczba%p==0)
                    {
                        cout<<"NIE"<<endl;break;
                    }
                
                    
                }
            
            }
    }
    
    
    
    
    return 0 ;
}

W takim razie, przeczytaj [uważnie] jeszcze raz albo aż do skutku, treść zadania - w końcu to tylko 3 zdania. Potem [dokładnie] przeanalizuj podany tam przykład, najlepiej metodą kartka i ołówek.

4 months later

Witam, możliwe że mam w kodzie problem, który już w tym wątku wystąpił, ale niestety nie mogę go znaleźć, będę bardzo wdzięczny za pomoc, starałem się dokładnie komentarzami opisać mój tok rozumowania (jbc kod w c++) :wink:
https://ideone.com/jS7Vb522

Taki test:

2
4
2

Niepotrzebnie skomplikowałeś sobie życie zmienną "pierwsza". Jeśli chcesz jej używać w ten sposób, to nie może mieć ona staniu nieokreślonego, tj. musi być inicjalizowana.
Dodatkowo w celach edukacyjnych możesz się zastanowić, skąd taka, a nie inna jej wartość przy drugim przebiegu pętli dla powyższego testu (czyli sprawdzaniu, czy 2 jest pierwsze).

TAK, masz!

Tok rozumowania jest całkowicie poprawny [ale możnaby go jeszcze "lekko podrasować" - czytaj przyśpieszyć - ale to już inna bajka]. Natomiast kod już nie jest dobry i nawet komentarze nic tu nie zmienią. W tym wypadku, pomagający mają w małym paluszku cały algorytm i najczęściej taki miejscami nadmiarowy miejscami błędny, miejscami za długi komentarz tylko zaciemniają [na mój gust] kod.

jbc, ideone po prawej stronie, na środku, małymi literami napisał to :wink:

Kiepsko szukałeś - czytaj testowałeś. Np zobacz:
https://ideone.com/uN4S9A38

Dzięki za pomoc, nie zauważyłem tego błędu dla liczby 2, gdy to zmieniłem zadziałało :wink:

Domyślam się, że kod jest słabej jakości, są to dopiero moje początki, sam fakt, że mam problem z takimi zadaniami to pokazuje :wink: Dzięki za porady, nad samym zapisem toku rozumowania muszę dużo pracować, bo jak na razie to jest wszystko chaotyczne i niespójne, ale mam nadzieję, że w miarę ćwiczeń będzie coraz czyściej i przejrzyściej.

Raczej za dobrze to te programy nie działają.

Sprawdź np:

6
1
2
3
21
22
33

Jest mnóstwo tematów dotyczących tego zadania, tam już powiedziano wszystko, co można :wink: .
Zdecyduj się na jedną wersję (moim zdaniem lepsza ta z dodatkową funkcją) i ją rozwijaj, aż zadziała. Algorytm, który próbujesz zaimplementować powinien być wystarczająco szybki, żeby dostać AC (chociaż ludzkości znane są szybsze :wink: ).

@shaggy1990
Druga wersja jest bardziej skopana, a pierwsza prawie dobra. Popraw tylko w pierwszej wersji odpowiedź dla liczby = 2.

8 days later

Witam, na wstępie zaznaczę, iż jestem zielony jak szczypiorek w kwestii szeroko pojętego programowania więc prosiłbym o uwagi co do kodu wytłumaczone jak dla głąba :wink:. Napisałem kod, przeprowadziłem testy, zmodyfikowałem kod i wydaje mi się, iż mimo że nie jest najschludniejszy, działa poprawnie. Niestety Sędzia uważa inaczej...
https://ideone.com/XiwXwu34

Działa poprawnie, to prawda. Jednak nie zastosowałeś się do wymagań autora zadania co do wyjścia. Skoro odpowiedź ma być "TAK" / "NIE", to nie możesz sobie wypisywać co innego.

Dziękuję za zainteresowanie moim problemem. Nie przypuszczałem, iż wielkość liter przy wyjściu ma znaczenie. Cenna informacja na przyszłość. Raz jeszcze wielkie dzięki za pomoc. Pozdrawiam.

Nie ma najmniejszego znaczenia, pod warunkiem że jest dokładnie taka sama jaką zażyczył sobie autor zadania.

Witam, czy mógłby ktoś podpowiedzieć co jest nie tak w moim rozwiązaniu? Dla danych wejściowych podanych w zadaniu mój program działa, jednak dla danych wejściowy tj. 1111 , 3333, 5555 czy 9999 podaje błędną odpowiedź.

http://pl.spoj.com/files/src/19026801/11

kod na spoju jest widoczny tylko dla właściciela i autora zadania.

wskazane jest podawanie kodu zadania poprzez umieszczenie na ideone.com3 i podanie linku

jeżeli znasz dane, dla których działa źle, to w zasadzie jest to już tylko twój problem - ja z zasady ograniczam się do podania danych dla których program źle działa