1 / 28
Jun 2004

NZEC means you got WA and your program's return code wasn't 0.

In C, for example, you get NZEC when you do exit(1) or return 1 from main.
It can mean some library function called exit(1) for you, which happens with some C++ STL functions (in case of some error), I don't know how it is in fpc, though.

The real reason why we introduced NZEC were languages which are interpreted (and NZEC can mean interpreter caught parse error) and languages with exceptions, where language itself doesn't allow SEGFAULTs (and NZEC can mean an exception was raised).

Anyway, if the output is correct, program gets AC even if it returns non-zero exit code, so RE (NZEC) is really WA with a bit of additional information.

It appears that if you are using the fpc complier, any segmentation fault will be displayed as RE NZEC. If you want to get a nice clean RE SIGSEGV, use gpc smile.

2 years later

Ok, zgodnie z prośbą - zostają włączone.

2 years later

Co jest grane? Robię zadanie BFNTEST. W przykładowe kody wklejam różne komentarze, np kod wejściowy wygląda tak:

#define R(p) rand()%('9'-(p)+1)+(p) // makropolecenie
#define P(p) putc((p),stdout)
#define PP(p) P(R(p)) // makropolecenia zagnieżdżone
#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
/* funkcja generująca ciąg cyfr */
void gen(int x) 
{
	if (x) PP('1'); else PP('0');
	for(;x;x--) PP('0');
}
int main/*123456789*/()
{
	int a, d, n;/* */
	c/*ggg*/in >> a;/*hhhh*/ srand(a); /* inicjalizacja generatora
        liczb pseudolosowych /* */
	cin >> d; cin >> n; cout << n << endl;
	for/*/*uuuu // */(;n;n--)/*/* */ /*/* */
	{
		gen(rand()%d);  P(' ');
		gen(rand()%d);  P('\n');
	}
	return 0;
}

U mnie wszystko działa ok, ale ja wyśle to ANI JEDEN test nie przechodzi. Czy jest możliwość abym dostał jakieś dane testowe najbardziej popieprzone abym mógł sprawdzić u siebie, bo ja już nie wiem co mam dalej robić?

Może kilka podam...

printf("Tekst 1 /* Tekst 2 */ Tekst 3\n");

Powinno wypisać całość. Nie powinno natomiast wypisać tego:

/*/ Hello world! /*/

Warto też zwrócić uwagę:

Coś
/* Linia 1
Linia 2
Linia 3
Linia 4
*/
Drugie coś

Nie powinno wyrzucać pomiędzy "Coś" a "Drugie coś" czterech-pięciu wolnych linii.

I jeszcze pewnie wiele innych pułapek...

4 months later

No i jeszcze jest pytanie, czy mogą być przypadki, gdy komentarze są zagnieżdżone... mianowicie:

/* to jest komentarz, a w nim /* inny komentarz, który zawiera /* wewnętrzny komentarz */ co daje lacznie */ 2 komentarze w 1 ... a niech bedzie jeszcze jeden /* taki maly */ .. i tyle ;] */

@fanatyk99: Fakt, nie kompiluje się xD głupi przykład wink

2 months later

Mój program poprawnie 'odpowiada' na powyższe, a na spoju tylko dwa pierwsze testy zalicza.
Więcej jakichś pułapek? Czegoś, gdzie programy mogą się sypać? Dawał błędne wyniki?

No to testy ode mnie (może trafię w Twój błąd):

printf("");
printf("//   ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/ //alka
/* / ala/ // */
/ala*/
/ala*/* ala *./  */
// komentarz
// komentarz2 \
dalszy komentarzyk
perl/*/*/*///*//*//*//**//*//*//*//
/*/* /* ///*//*//*//**//*//*//*//*/
komentarz // czy nie komentarz
*//.*/.**./

Output:

printf("");
printf("//   ");
printf(" /* */ ");
printf("\n");
printf(" // \n /* \n */ ");
cout<<" Bla // Bla Bla\n";
cout<<" Bla /* Bla // */ // Bla"<<endl;
/ ala/ 
/ala*/
/ala*
perl*
komentarz 
*

Nie jestem jednak pewien, co do liczby wypisywanych enterów, więc może ktoś z 12/12 (albo ponad 5/12) odpowie, ile powinno być enterów i kiedy. smile

1 month later

Ma ktoś jeszcze pomysł na inne testy?
Mój program uwzględnia:
-zwykłe komentarze /* */ i //
-komentarze ze wskaźnikami /**/*
-printfa
-couta
-putsa
-getsa
-takiego typu komentarze:

// komentarz \
dalszy komentarz

-komentarze z enterami; np. dla

/*
*/

wypisuje mi jedną pustą linię.

Nawet najdziwniejsze pomysły mile widziane, bo moje już się wyczerpały.

Nie przechodzi mi testów: 3, 4 i 9 (mam 9/12pkt).

Wypisze to samo (chyba tak powinno być).
[tu był link] <- link do mojego programu na ideone

A czy Twój AC zakłada define'y?

Trochę zagmatwałeś ten program zobacz jeszcze takie test
In:

#include <stdio.h>
/*fddddddd*/
int main(void)
{
  int a=0;//ddddd
  printf("/*csc*/");
  printf("\\ \" %d",/*fdf*/a);
  putchar('\'');
  putchar('\"');
  return 0;
}

Out:

#include <stdio.h>
int main(void)
{
  int a=0;
  printf("/*csc*/");
  printf("\\ \" %d",a);
  putchar('\'');
  putchar('\"');
  return 0;
}

Myślę, że źle podchodzisz do znaków ( ' i " ). Jeśli chcesz to mogę dać ci mój AC do testów.
pozdr.

Też mam dobre wyniki dla Twojego testu.
To poproszę tego ACcepta do testów (na PW jakbyś mógł). smile
//Edit: Dzięki. Jak dostanę maxa, to napiszę, co miałem źle. smile