BUJ
Bieži uzdotie jautājumi
Testēšanas rezultāti
Testēšanas rezultāta statusa paziņojumi:
- WAIT gaida testēšanos,
- TESTING notiek risinājuma testēšana,
- OK risinājums veiksmīgi notestēts,
- CE iesūtītā risinājuma kompilācija neizdevās,
- IE iekšēja sistēmas kļūda,
Testa testēšanas rezultāta statusa paziņojumi:
- OK pareizs risinājuma izvads,
- WA nepareizs risinājuma izvads,
- PE risinājuma izvads neatbilst uzdevuma formātam,
- RE risinājums atgrieza ne nulles vērtību,
- SG programma tika apstādināta ar signālu,
- TO tika pārsniegts laika limits,
- XX iekšējā sistēmas kļūda, ziņojiet pasniedzējam,
- UNKNOWN nezināma kļūda, ziņojiet pasniedzējam.
"**" apzīmē, ka attiecīgie testēšanas rezultāti ir tikai par publiskajiem testiem.
Kurš risinājums tiks izvēlēts novērtēšanai kursā?
Pēdējais iesūtījums uzdevumā ar statusu OK.
SG, RE Iespējamie cēloņi:
- Fails atvērts ar "w+", "r+", risinājums - nomainiet uz "w", "r",
- Atvērts fails ar nepareizu nosaukumu.
- (Pārbaudiet, ka neatveriet, piemēram,
cd.in
vietācd_suns.txt
). - Par ievadfaila, izvadfaila vārdiem ir jāizvēlās tie, kas ir norādīti iekš apts.lv uzdevuma apraksta ,
- Fails ir norādīts ar nepareizu paplašinājumu, piemēram,
cd.in
vietā ir nepareizi norādītscd.in.txt
.
- (Pārbaudiet, ka neatveriet, piemēram,
- Atvērts fails uzdevumā, kurā darbs notiek ar standarta ievadu, izvadu (stdin, stdout)
- Jūsu programma rezervē vairāk atmiņas resursu nekā uzdevumā atļauts. Piemērs:
Tad $ 400000000 = 10^8 \times 4 < 10MB = 10 \times 1024^2 = 10485760 $ neizpildās.// Uzdevumā atļauti 10 MB int arr[100000000]; // 10^8 int mainīgie. int mainīgais aizņem 4 baitus.
- Pārsniegts atmiņas limits (pievērsiet uzmanību patērētajai atmiņai, vai tā ir ļoti tuvu maksimumam),
- neizpildījies assert,
- programma mēģina piekļūt netļautam atmiņas apgabalam,
- utml.
Problēmu gadījumā ar SG iesakam:
- Izveidot risinājumu, kas tikai atver ielasāmo failu, izveido izvadfailu un pabeidz savu darbu. Tādējādi Jūs varat pārbaudīt, vai Jūsu programma pareizi strādā ar failiem.
- Izvadīt starprezultātus, lai secinātu cik tālu Jūsu programma izpildās. Neaizmirstam pēc starprezultāta izvadīšanas veikt
fflush(stderr);
vai līdzīgu darbību. - Rakstīt programmu no jauna, ik pa brīdim to iesūtot APTS ar starprezultātu izvadi.
Starprezultāti
Veids kā atkļūdot programmas uz apts
Programma darbības laikā var drukāt datus uz stderr (standarta kļūdas izvadu). Uz stderr izdrukātais teksts ir pēc tam redzams pie testēšanas rezultātiem. Šo izvadu varat izmantot, lai uzzinātu publisko testu ievaddatus, lai atkļūdotu programmu. Svarīgi! Stderr testēšanas rezultātos parādās tikai pie publiskajiem testiem, no tā tiek parādīti tikai pirmie 5000 simboli.
Neizdodas izdrukāt starprezultātus uz ekrāna no CPP programmas.
Starprezultātus var izdrukāt uz standarta kļūdas izvadu. Iesakam izmantot #include <stdio.h>
un funkcijas no šīs bibliotēkas, kā izejas faila pointeri norādot stderr. Piemēram, fprintf(stderr, "Viss %i\n", 0);
izdrukā uz ekrāna “Viss 0”. Var izmantot arī std::cerr
, piemērs, std::cerr << "tests" << std::endl;
.
Testēšanas rezultātos starprezultāti tiek parādīti tikai publiskajiem testiem. Uz ekrāna tiek izvadīti līdz 5000 simboliem. Starprezultāts redzams laukā stderr testēšanas rezultātos.
Gala risinājumā ieteicams starprezultātu izdrukāšanu noņemt, jo tā arī patērē resursus.
Kā ielasīt, izvadīt programmā datus?
Datu ielasīšana, izvadīšana notiek standarta ievadā, izvadā vai, ja tas norādīts uzdevuma ierobežojumos, failos.
Paraugs C,C++ valodās darbam ar standarta ievadu, izvadu:
int n;
scanf("%d", &n); // Nolasa skaitli n no stdin
printf("%d", n); // Izdrukā skaitli n uz stdout
Skat. https://contest.lio.lv/stdio.html
Paraugs C, C++ valodās darbam ar failiem:
// Pāradresējam failus uz standarta ievadu, izvadu
freopen("fails.in", "r", stdin);
freopen("fails.out", "w", stdout);
// fails.in, fails.out aizstājam ar attiecīgajā uzdevumā
// norādītajiem failu vārdiem
// Tālāk varam strādāt ar ievadfailu, izvadfailu
// tieši tā pat kā strādātu ar standarta ievadu, izvadu
int n;
scanf("%d", &n); // Nolasa skaitli n no stdin, kas ir pāradresēts uz fails.in
printf("%d", n); // Izdrukā skaitli n uz stdout, kas ir pāradresēts uz fails.out
Drīkst izmantot arī iostream.
Paraugs Pascal valodā:
Integer n;
Read(n); // Nolasa skaitli n
Write(n); // Izdrukā skaitli n
Nekompilējas programma.
Skatiet programmas testēšanas rezultāta izvadu, kurā tiek izvadīts kompilatora kļūdas paziņojums/i.
GCC kompilera brīdinājums warning: null character(s) ignored
Viens no iespējamajiem cēloņiem ir, ka fails ir saglabāts UTF-16 formātā. Atveriet failu un saglabājiet to ascii vai UTF-8 formātā, piemēram, notepad++:
Varat mēģināt izmantot dos2unix, vai līdzīgu rīku. Vai vērsieties pie mātes google.
Cita problēma? Nepieciešama palīdzība?
Par problēmām, ieteikumiem, jautājumiem, sistēmas kļūdām, lūdzu, rakstiet PPakalns vai Github issues, vai .