Tak jest tylko jeśli testujesz z konsoli, wtedy miesza się Twój input z outputem. Jak przekierujesz sobie stdout do pliku i uruchomisz program, zobaczysz wtedy w tym pliku to, co widzi spoj. Nie będzie tam tych liczb.
Dodatkowo, dla spoja jest bez znaczenia czy wypisujesz po kolei czy wszystko na raz, ale lepiej po kolei (zrobisz jeden test i od razu wypisz wynik), gdyż kod jest czytelniejszy.
Lub tylko przekierujesz stdin z pliku
lub przekierujesz i stdin i stdout z i do odpowiednich plików
lub użyjesz ideone z wypełnionym testem [danymi] okienkiem stdin
lub użyjesz innego rozwiązania, które robi to co powyżej
lub napiszesz sobie sam taki odpowiedni program robiący np to co ideone lub więcej
Dokładnie tak. Spoj “przekierowuje” “sobie” stdin z jednego i stdout do drugiego pliku, a nie wypisuje nic na konsoli więc “mu” się nie nie miesza.
Witam, będę wdzięczny za pomoc w znalezieniu błedu
#include
using namespace std;
int main()
{
int n,x,test;
cin >> n;
{
for (int i=0; i<n; i++)
{
cin >> x;
if(x<2) test=0;
if (x==2) test=1;
for(int k=2; k*k<=x; k++){
if(x%k==0) test=0;
else test=1;}
if (test==1) cout <<"TAK"<< endl;
else if (test==0) cout << "NIE"<<endl;
}
}
}
Jeśli zaczynasz, przeczytaj koniecznie! <–kliknij w to proszę!
Weź kartkę papieru i przeanalizuj krok po kroku działanie pętli np dla x=10
Dzień dobry, nie bardzo chyba jeszcze rozumiem mechanizm działania tej strony więc proszę o pomoc w znalezieniu błędu. Z góry dziękuję
#include
using namespace std;
int number;
int main()
{
cin >> number;
if (number == 1) return 0;
else
{
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
cout << "NO";
return 0;
}
}
cout << "YES";
}
return 0;
}
Przeczytaj dokładnie opis zadania.
-
Sprawdź czy Twój kod jest przygotowany na to co może pojawić się na wejściu. W przykładzie podane jest sprawdzenie trzech liczb.
Czy Twój program sobie z tym poradzi? - Nie Twój program przyjmuje tylko jedną liczbę. -
Czy Twój program podaje wyjście zgodne ze specyfikacją podaną przez autora zadania? - Nie Twój program podaje wynik inny niż oczekuje tego autor zadania
Weź pod uwagę fakt, że poprawność rozwiązania sprawdza automat. On podchodzi do problemu zero-jedynkowo. Albo całość jest poprawna i wtedy masz zaliczenie, albo tak nie jest i wtedy nie masz zaliczenia. Nie masz tu częściowo dobrze zrobionego zadania tak jak nie można być trochę w ciąży No, dobrze są takie zadania gdzie częściowe wyniki też się liczą, ale to do takich nie należy.
Inną jeszcze kwestią jest wybór nieefektywnego algorytmu.
Dzień dobry, to moje pierwsze początki w programowaniu w Javie jak i na tym portalu. Po wrzuceniu rozwiązania system wyrzuca mi błąd wykonania (NZEC). Mógłby mi ktoś podpowiedzieć co robię nie tak?
import java.util.*;
public class PrimeNumbers
{
public static void main(String[] args) throws java.lang.Exception
{
Scanner in = new Scanner(System.in);
short Liczba;
byte Dzielniki;
for(int i = 1; i <= 10000; i++)
{
Dzielniki = 0;
Liczba = in.nextShort();
if(Liczba == 1) continue;
for(int j = 2; j <= Liczba; j++)
{
if(Liczba % j == 0)
{
Dzielniki++;
}
}
if(Dzielniki == 1)
{
System.out.println("TAK");
}
else
{
System.out.println("NIE");
}
}
}
}
Zobacz jaki wynik dostaniesz, jak skompilujesz swój program na https://ideone.com/3
Dopiero co się uczę programowanie i mam pytanie czemu wywala mi błąd związany chyba z pamiecią (i tak wiem pewnie dałoby się go znacznie uprościć ale jak wspomniałem dopiero się uczę
#include <iostream>
using namespace std;
int main()
{
int liczba_testow;
cin >> liczba_testow;
int* liczby = new int[liczba_testow];
bool isPrime;
for (int k = 0; k < liczba_testow; k++)
{
cin >> *liczby;
liczby++;
}
for (int l = 0; l < liczba_testow; l++)
{
liczby--;
}
for (int i = 0; i < liczba_testow; i++)
{
if (*liczby == 0 || *liczby == 1)
{
cout << "NIE" << endl;
}
else
{
isPrime = true;
for (int j = 2; j < *liczby; j++)
{
if (*liczby % j == 0)
{
isPrime = false;
}
}
if (isPrime) cout << "TAK" << endl;
else cout << "NIE" << endl;
}
liczby++;
}
delete[] liczby;
return 0;
}