53 / 77
Apr 2017

Witam
W programie 1 zastąpiłem input() instrukcja randint(1,10000). losowa wybiera ilość testów i liczby. pozbyłem się ostatniego printa nadal mi nie chce zatwierdzić zadania.

Czemu i po co!?
Zmień z powrotem na tak jak było - >> zmień randint na input(), oraz popraw tylko to, o czym napisał Ci @sig

Dziękuje za pomoc. Usunąłem zbędne printy i zadziałało. Bez podpowiedzi nie zrobiłbym tego zadania.

Witam.
Nie będę oryginalny, nie wiem dlaczego nie zatwierdza mi programu.
Proszę o wskazówki.
EDIT:
Dziękuję za nakierowanie, samo sprawdzanie zakresu danych nie było problemem, ale zły zakres tego sprawdzania.
Gdzieś wyżej przeczytałem, żeby usuwać kod, tak też więc robię.

sprawdzanie zakresu danych podanych tekście zadania jest niezalecane - to problem autora

sprawdzanie w taki sposób, jak to zrobiłeś jest podwójnie niezalecane

Oto mój kod, w kompilatorze wszystko działa, ale nie zalicza mi zadania. Pomoże ktoś?

include

using namespace std;

int main(){
int n;
int suma = 0;

cin >> n;

for(int i = 1; i <= n; i++){
	if(n%i == 0){
		suma++;
	}
}
if(suma==2 && n>1){
	cout << "TAK" << endl;
}else{
	cout << "NIE" << endl;
}
return 0;

}

nie bardzo rozumiem, co to znaczy: w kompilatorze wszystko działa - czy to, że program się kompiluje ?

doskonale za to rozumiem: ale nie zalicza mi zadania - i słusznie, bo program daje rozwiązanie innego problemu, niż podano w zadaniu - przeczytaj uważnie jeszcze raz (dwa, trzy, ... aż do zrozumienia) treść zadania

Nie będę oryginalny program się kompiluje, mi wydaję się że wszystko jest w porządku jednak sędzia nie uznaje...

udało się ogarnać dzięki za pomoc wyrzucam kod

Masz o jeden nawias za dużo. Po co Ci ten warunek:

Zobacz sobie test:
2
100
50

Ta pętla jest dla mnie dzika. Spróbuj ją jeszcze raz zdefiniować. Zrób sobie nieskończoną pętle for, zadeklaruj jednostkę pomocniczą (zorientujesz się o jakiej wartości), inkrementuj ją i nie zapomnij o przerwaniu funkcji jak zostanie spełniony warunek. Wydaje mi się, że to najłatwiejszy sposób. Ale jestem początkujący więc mogę się mylić :slight_smile: Powodzenia :slight_smile:

zmieniając pętle for (j= 2; j<=sqrt(liczba); j++) na (j= 2; j<liczba; j++) warunek

else if (liczba ==3) {
cout << "TAK" << endl;}

stawał się niekonieczny, po wprowadzeniu dodatkowej zmiennej do pętli zadziałało
tak że dzięki i pozdrawiam

11 days later

include

using namespace std;
int y,x,d=0;
int main()
{
cin>>y;
for (int i=1; i<=y; i++)
{cin>> x;
for (int i=1; i<=x; i++)
{
if(x%i==0)
d++;
}
if (d==2)
cout<<"TAK"<<endl;
else
cout<<"NIE"<<endl;
}

return 0;

}

Czy rzeczywiście jest tu jakiś błąd?

a czy zrobiłeś jakieś testy ?

bo gdybyś zrobił, to byś wiedział, że jest (a nawet więcej niż jeden, bo ja widzę dwa, co nie znaczy, że nie ma więcej)

Ująłbym to tak:
Nieumiejętne i niuuzasadnione stosowanie zmiennych globalnych, prowadzące do naiwnego myślenia, że zmienna globalna załatwia "sprawę".

PS
Sama metoda sprawdzania [aby nie obrażać algorytmu] jest bardzo nieoptymalna.

2 months later

co działa? Zapoznaj się z definicją liczb pierwszych. Sprawdź później np. 121

1 month later

Jakieś sugestie?

okulary? :wink:
okulista?

A potem porównaj twój output z przykładem z zadania.

  • twój kod nie działa dla testu pod zadaniem
  • wielkość liter na wyjściu ma znaczenie
  • nie musisz zapisywać wejścia, możesz wywołać swoją funkcję first dla wczytanej wartości i wypisać wynik
  • twoja funkcja first nie zwraca nigdy true

powrót do szkoły podstawowej, aby nauczyć się czytać ze zrozumieniem proste teksty ?

bo nawet tego prostego testu z zadania nie wykonuje poprawnie