164 / 277
Oct 2018

skoro znalazłeś właściwy wątek, to szkoda,że go poprzednio nie przeczytałeś

więc zrób to teraz, a ja w zamian nie napiszę co myślę o twoim programie

Napewno, ale tu nie o to chodzi, chodzi o to abyś w miarę możliwości sam znalazł błąd.

Dokładnie tak, chodzi niby o to ale nie zupełnie tak. Dlatego warto wrócić do treści zadania i dokładnie je przestudiować, łącznie z przykładem. Możliwe, że studiowanie, to w tym wypadku za duże słowo, w końcu tam są tylko trzy zdania i jeden przykład, więc tym bardziej warto to - przeczytać i przemyśleć - , zrobić bardzo powoli, dokładnie i ze zrozumieniem.

Gdybyś uważał, że trzy zdania, to za mało, tutaj --> http://discuss.spoj.com/search?q=“liczby%20pierwsze”10 znajdziesz więcej do poczytania i “studiowania”. :wink:

2 months later

Witam
Program kompiluje się poprawnie.
Spoj jednakże odrzuca odpowiedzi.


Czy byłby ktoś w stanie znaleźć przyczynę odrzucania tego kodu?

Nie uwzględniałem 0 i 1. SPOJ przyjął rozwiązanie.
Nie było tematu, sorry za zamieszanie.

Czy ktoś jest w stanie mi wytłumaczyć mój błąd? W sensie wskazać, rozwiązanie pewnie znajdę jak będę znał przyczynę.

ten problem był już kilkakrotnie omawiany (choć nie mam pewności, czy w tym wątku)
przeczytaj cały wątek i inne poświęcone temu zadaniu a na pewno znajdziesz odpowiedź

5 months later

Powie mi ktoś czemu sędzia nie zalicza mi tego programu? Przecież działa on dobrze…

`#include

using namespace std;

bool isPrime (int n)
{
if (n<2)
return false;

for (int i = 2; i*i <= n; i++)
{
    if (n%i == 0)
    {
        return false;
    }
    return true;
}

}

int main()
{
int n, testy;
cin >> testy;
int tab[testy];
for (int i=0; i < testy; i++)
{
cin >> n;
tab[i] = n;

}
for (int i = 0; i < testy; i++)
{
    isPrime(tab[i]) ? cout << "TAK\n" : cout << "NIE\n";
}
return 0;

}
`

#include <iostream>

using namespace std;

bool isPrime (int n)
{
if (n<2)
return false;

for (int i = 2; i*i <= n; i++)
{
    if (n%i == 0)
    {
        return false;
    }
    return true;
}

}

int main()
{
int n, testy;
cin >> testy;
int tab[testy];
for (int i=0; i < testy; i++)
{
cin >> n;
tab[i] = n;

}
for (int i = 0; i < testy; i++)
{
    isPrime(tab[i]) ? cout << "TAK\n" : cout << "NIE\n";
}
return 0;

}

Czemu sędzia nie zalicza tego programu? Przecież działa on poprawnie.

A czemu Twój program wypisuje “TAK” np. dla liczby 9?

@jokerekv2 powinieneś zwracać wartość true po opuszczeniu pętli. Inaczej wynik funkcji jest niepoprawny.
PS. Nie używaj VLA.

Jakie zadanie masz na myśli z tą pętlą?
Co to jest VLA?

@hipcia Faktycznie… byłem pewien, że return true znajduje się poza pętlą. Kompletnie tego nie zauważyłem. Dzięki wielkie… teraz śmiga i sędzia zaliczył.
@eksekk Błąd naprawiony.

Witam
Nie moge zaliczyc tego zadania
Prosilbym o wskzowki :slight_smile:
Sprawdzalem duzo liczb i wyskakiwalo mi prawidlowo.

#include

using namespace std;

int main()
{
int liczba;

cin>>liczba;

if (liczba<2) {cout<<“NIE”;}
if (liczba==2) {cout<<“TAK”;}
if(liczba%2==1) {cout<<“TAK”;}
else {cout<<“NIE”;}

return 0;

}

  1. Gdy podajesz kod podawaj go najlepiej jako link do Ideone. To jak to podałeś jest bardzo nieczytelne
  2. Twój program nawet nie wczytuje poprawnie danych wejściowych podanych tak jak jest to w treści zadania.
    Przeczytaj dokładnie jak powinno to wyglądać i zrób to na Ideone
  3. Twój kod je niepoprawny. Powiedz jakie wyniki dostaniesz dla 25 35 itp? Będzie, że TAK a to przecież nie są liczby pierwsze

https://ideone.com/YxRsBN30

Witam,
Proszę o pomoc, dlaczego sędzia zwraca błędną odpowiedź.

Program po uruchomieniu i wpisaniu
3
11
1
4
zwraca:
TAK
NIE
NIE

Pozostałe wartości liczb, myślę, że dla każdej kombinacji sprawdzi dobrze.
Gdzie popełniłem błąd. Wiem, że nie jest to szybkie rozwiązanie, ale czy jest błędne?

Z góry dzięki za pomoc,