20 / 77
Sep 2015

Witam,
Chciałbym się dowiedzieć dlaczego mój kod nie przechodzi. Gdzie robię błąd?
Kod wygoda w tak.


Dzieki sig

Testowaniem zajmuje się maszyna, więc wielkość liter ma znaczenie. Jak dasz
if(pierwsza(a))
printf("TAK\n");
else
printf("NIE\n");

To ci zaliczy ten program. Jak już to zrobi nie zapomnij usunąć kodu z forum.

czy w tym zadaniu powinien być cin >> wprowadzający poszczególne liczby ? czy tylko cin >> określający liczbę testów ? nie chcę wprowadzać kodu, bo według mnie jest dobrze, a wyskakuje mi błędny wynik, gdy wrzucam już do sprawdzenia.

A co wyrzuca Ci twój program, gdy podajesz mu [na tacy] test z zadania?

na dzień dobry proszę o "n"... i program wyrzuca:

NIE - 1 (- liczba się nie pojawia, tyyko samo TAK, NIE)
TAK - 2
TAK - 3
NIE - 4
.
.
.

Program działa w oparciu o algorytm sita E.

Możliwe, że sito dobrze przesiewa i to rozumiem, ale zupełnie nie rozumiem, dlaczego wychodzi, dlaczego twój program wyrzuca zupełnie co innego, niż jest w zadaniu po słowie output?

OUTPUT:
TAK
NIE
NIE

Możliwe, że źle prosisz [twój program prosi] o n? No i nie ma tam żadnego 1 2 3 4, tylko n = 3 i [11, 1, 4]

2 months later

POMOCY! Błąd:błędna odp.

     
#include <iostream>

using namespace std;

long long n,l;

bool p(long long n)
{
    if(n<=2)
        return false;

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


int main()
{
    cin>>l;


    for(int i=0; i<l; i++)
{
    cin>>n;
    if(p(n)) cout<<"TAK"<<endl;
    else cout<<"NIE"<<endl;
}

return 0;
}

2 jak najbardziej jest liczbą pierwszą, a ty temu przeczysz w tej if(n<=2) linijce. Popraw to i usuń kod z forum bo będzie AC.

Witam, Czy mógłby mi ktoś pomóc z kodem. Na moim komputerze działa wszystko ok, natomiast po wrzuceniu na ideone wyrzuca same odpowiedzi na NIE. Co trzeba poprawić?

include

using namespace std;
int n,i,x;
bool pierw (int t)
{
for (x=2; x {
if((t%x) == 0) return true;
}
}
int main()
{
cin>>n;
int tab[n-1];
for (i=0;i {
cin>>tab[i];
if(pierw(tab[i]) || tab[i]==1)
{
cout<<"NIE"< }
else cout<<"TAK"< }
return 0;
}

include

using namespace std;

long int n;

int main()
{
cout << "Podaj ilosc sprawdzanych liczb:";
cin >> n;

int *tablica;
tablica= new int [n];

for (int i=0; i<n; i++)
{
    cout<< "Podaj liczbe nr. " << i+1 <<":" ;
    cin >> tablica[i];
}

    for (int i=0; i<n; i++)
    {
        int liczba;
        string x;

       if (*tablica<2);
       if (*tablica==2) cout << "TAK";
       else
        {
            for (int i=1; i<*tablica-1; i++)
            {
            liczba=*tablica%(*tablica-i);
            if (liczba==0) {x="NIE"; i=*tablica;}
            else x="TAK";
            }
        }

        cout << x<<endl;
        tablica++;
    }

return 0;

}

Witam
Dlaczego sędzia nie może uznac tego kodu ? Komunikat to Przekroczono limit czasu.
Pozdrawiam

Po pierwsze nie wypisuj niczego czego niema w specyfikacji wyjścia, wyniki sprawdza komputer więc "Podaj ilosc sprawdzanych liczb:" oraz "Podaj liczbe nr. cośtam" zostaną uznane za błędne odpowiedzi. Co zaś się tyczy przekroczenia limitu czasu, to przy sprawdzaniu czy 1 jest liczbą pierwszą nie wypisze mi nic (mi zresztą kompilator zwrócił uwagę że masz ifa który nie nie robi nawet jeśli warunek jest prawdziwy).

ps nie musisz korzystać z tablic, możesz wczytać liczbę, sprawdzić ją, wypisać i wczytać następną.

Daj linka do ideone, albo wklej kod w tagach dostepnych pod ctrl +k. Bo teraz jest tak "pocięty" że nie widać co jest z nim nie tak.

Funkcja pierw nic nie zwraca w przypadku gdy trafi na liczbę pierwszą, więc program się zatrzymuje. Popraw to i usuń linka oraz kod bo ci zaliczy.

16 days later

Mógłby mi ktoś powiedzieć co jest nie tak z tym kodem?

Z góry dzięki... sig <3

Sprawdza ci tylko podzielność przez 2, jak nie jest podzielna to else drukuje "TAK" i kończy pętlę bez sprawdzenia podzielności przez 3 i dalej.

Witam, mógłby ktoś dać jakąś wskazówkę?

include

  > using namespace std;
  > int main()
  > {
  >         int n,x;

  >         cin >> n;
  >         int tab [n];
  >         for (int i=0; i<n; i++)
  >         {   cin >> x;
  >             tab[i]=x; }

  >         for (int i=0; i<n; i++)
  >         {
  >         for (int a=2; a<n; a++)
  >         {
  >             if (tab[i]%a==0)
  >                 cout << "NIE" << endl;
  >             else
  >                 cout << "TAK" << endl;
  >         }}
  >      return 0;
  > }

No przede wszystkim nie sprawdzasz podzielności do ilości liczb pierwszych tylko do liczby, Po co zmienna x? Można wpisać prosto do tablicy, która tak przy okazji jest niepotrzebna. Zmień układ pętli, dla znalezionego dzielnika przerwij pętlę i zajmij się wypisaniem (jakiś bool może pomóc albo coś). Bo jak na to na razie patrzę to nie działa to chyba zbyt dobrze.

Dzięki za radę! smiley wymyśliłem już trochę inny sposób i sędzie zaakceptował smiley jestem nowy i mam pytanie, czy umieszczać tutaj mój kod (gotowca), w kontekście pomocy innym?

Nie. Kody po AC, nawet te błędne i nie będące jakąkolwiek podpowiedzią, usuwaj.