Czesc wiecie o co chodzi poniewaz testowalem duzo liczb i dziala a sedzia pokazuje blad.
https://ideone.com/LlS8zV61 (tu jest tylko przyklad aby wstawic link z kodem)
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.
@jokerekv2 powinieneś zwracać wartość true po opuszczeniu pętli. Inaczej wynik funkcji jest niepoprawny.
PS. Nie używaj VLA.
Sorry hipcia, jakoś żle popatrzyłem, wydawało mi się, że pisałaś do mnie a Ty pisałaś do @jokerekv2
@korkirw to ja się pomyliłem
- Gdy podajesz kod podawaj go najlepiej jako link do Ideone. To jak to podałeś jest bardzo nieczytelne
- 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 - Twój kod je niepoprawny. Powiedz jakie wyniki dostaniesz dla 25 35 itp? Będzie, że TAK a to przecież nie są liczby pierwsze
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,
Dlaczego nie podałeś jaki rodzaj błędu podaje sędzia?
- Widać, że na pewno masz problem z rozmiarem tablicy. Przyjmuje ci tylko 9 999 testów (tablica w C++ indeksuje się od 0), bo wpisywać zaczynasz od indeksu 1. W warunkach zadania jest napisane, że testów może być do 100 000.
- Po co w ogóle używasz tablicy. Przecież nigdzie tu nie jest potrzebna.
- To niedobra praktyka nadużywać zmiennych globalnych, tutaj tez nie są potrzebne.
- Myślę, że jak się trochę przyłożysz to napiszesz trochę czytelniejszy kod