Masz w swoim kodzie jeszcze sporo błędów, więc jak będziesz miała problemy, z samodzielnym poprawieniem, wystarczy że się uśmiechniesz , to może Ci wyśle poprawiony twój kod na pw.
Błędy, jakie znalazłem:
Ta instrukcja, nie jest konieczna:
[bbone=cpp,2593]if (test<100000)[/bbone]
a dodatkowo tu jest błędna. zAMIEŃ na:
[bbone=cpp,2594]if (test <= 100000)[/bbone]
analogicznie
[bbone=cpp,2595] if (liczba <= 10000)[/bbone]
Ta instrukcja:
[bbone=cpp,2596] else if(liczba==2||3)[/bbone]
powinna być zapisana:
[bbone=cpp,2597] else if(liczba == 2 || liczba == 3)[/bbone]
ale będzie u Ciebi działać, bo warunek zawsze jest true, i tak naprawdę u Ciebie, zadziała też samo else [inne warunki są już rozpatrzone wcześniej:
[bbone=cpp,2598] else
{
cout << "TAK\n";
}
[/bbone]
No i najważniejsze, musisz poprawić główną pętlę samego sprawdzania.
Witam.
Chciałbym poprosić o wskazówkę, gdzie popełniłem błąd.
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
static const auto max_test = 100000;
void print(std::vector<int> _v)
{
for (auto&& x : _v)
{
auto flag = true;
if (x < 2)
{
std::cout << "NIE\n";
flag = false;
continue;
}
for (int i = 2; i*i <= x; i++)
{
if (x%i == 0)
{
std::cout << "NIE\n";
flag = false;
continue;
}
}
if(flag)
std::cout << "TAK\n";
}
}
int main()
{
int x;
std::cin >> x;
std::vector<int> v;
if (x < max_test)
{
int y;
for (int i = 0; i < x; ++i)
{
std::cin >> y;
if(1 <= x && x <= 10000)
v.push_back(y);
}
print(v);
}
return 0;
}
Z góry dziękuję za podpowiedź.
1) Program powinien wypisywać TAK i NIE, "sędziuje" program porównujący pliki więc wielkość liter jest ważna
2) Może być 100000 testów, podczas gdy ty masz tablicę tylko na 10000.
3) Za zgodność wejścia z specyfikacją w zadaniu odpowiada twórca testów, nie musisz tego sprawdzać. Ze względu na błąd z punktu drugiego to była jedna z przyczyn nie zaliczenia.
Po poprawieniu punktów 1 i 2 dostałem AC, więc usuń kod z forum
Witam mam prośbę o pomoc lub udzielenie wskazówki nad poprawą programu. Program działa poprawnie, sędzia go zaakceptową, jednak chciałbym w nim poprawić to żeby pozbyć się breaków oraz zmienić pętlę nieskończoną.
kod programu:
#include <iostream>
using namespace std;
int main()
{
int testy, n, pomocnicza;
cin >> testy;
for(int i=0; i<testy; i++)
{
cin >> n;
pomocnicza = 2;
for( ; ; )
{
if (pomocnicza == n)
{
cout << "TAK" << endl; break;
}
else if(0 == n%pomocnicza)
{
cout << "NIE" << endl; break;
}
else if(n<2)
{
cout << "NIE" << endl; break;
}
pomocnicza++;
}
}
return 0;
}