From KSP.sk

Seminar: Ako má vyzerať odovzdaný program

Program má čítať zo štandardného vstupu (stdin, resp. input, inak povedané klávesnice v konzole), písať na štandardný výstup (stdout, resp. output, inak povedané obrazovku). Výstup musí dodržiavať formát uvedený v zadaní. A za každým riadkom na výstupe musí byť znak nového riadku (v C++ '\n', v Pascale/Jave/C# použite writeln/println/WriteLine). Vo svojom riešení sa nemusíš zaoberať kontrolovaním správnosti vstupných údajov. Súbor sa môže volať ľubovoľne, pri submitovaní je vždy jasné, ktorú úlohu submituješ.

Počas behu sa musí tvoje riešenie správať slušne. Zakázaný je akýkoľvek prístup k súborovému systému (na vstup a výstup sa používa štandardný vstup a výstup), prístup do pamäte testovača, snaha akýmkoľvek spôsobom narušiť jeho fungovanie a všetky podobné aktivity. Explicitne je zakázané používať viac ako 1 thread, t. j. volať fork().

Operačný systém a kompilátory na počítači, ktorý testuje riešenia

Vaše riešenia testujeme pod Debian Linuxom, na počítači, ktorý je vybavený 64bitovým procesorom. Pre jazyky používame kompilátory s nasledovnými nastaveniami:

C: gcc -static -O2 -lm riesenie.c
C++: g++ -static -O2 riesenie.cc
Pascal: fpc -Sg -O2 riesenie.pas
Java: javac riesenie.java
C#: mcs riesenie.cs

Príklady korektných programov

Ako riešenie úlohy "na vstupe je zopár malých celých čísel, spočítajte ich a vypíšte ich súčet" by sme uznali napr. nasledujúce programy:

C

#include <stdio.h>

int main(void) {
  int x, TOTAL=0;
  while (scanf("%d",&x)==1) TOTAL += x;
  printf("%d\n",TOTAL);
  return 0;
}

C++

#include <iostream>
using namespace std;

int main(void) {
  int x, TOTAL=0;
  while (cin >> x) TOTAL += x;
  cout << TOTAL << endl;
  return 0;
}

Pascal

var x, TOTAL : longint;

begin
   TOTAL := 0;
   while not eof do begin
      readln(x);
      TOTAL := TOTAL + x;
   end;
   writeln(TOTAL);
end.

Java

import java.io.*;
import java.util.*;

class WholeProgram {
  public static void main(String args[])   {
    String Line;
    int TOTAL = 0;
    try     {
      BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
      while (true) {
        Line = stdin.readLine();
        if (Line == null) break;
        StringTokenizer st = new StringTokenizer(Line);
        int x = Integer.parseInt(st.nextToken());
        TOTAL += x;
      }
    }
    catch (EOFException e) { }
    catch (IOException e) { }
    System.out.println(TOTAL);
  }
}

C#

using System;

class MojeRiesenie {
  public static void Main() {
    int TOTAL = 0;
    while (true) {
      string Line = Console.ReadLine();
      if (Line == null) break;
      TOTAL += int.Parse( Line );
    }
    Console.WriteLine("{0}", TOTAL);
  }
}

Môj program mi funguje, ale keď ho submitnem, neakceptujete ho!

Môžeš nás samozrejme kontaktovať vo fóre. Predtým ale vyskúšaj, či ti nepomôže jedna z nasledujúcich rád:

Ak si dostal odpoveď Chyba počas kompilácie:

Ak si dostal odpoveď Pokus o narušenie bezpečnosti:

Ak si dostal odpoveď Chyba počas behu programu:

Ak si dostal odpoveď Prekročený časový limit:

No a samozrejme, pokiaľ dostávaš ako odpoveď Zlá odpoveď:

Retrieved from http://old.ksp.sk/wiki/Seminar/ERiesenie
Page last modified on 09 september, 2011, 13:22 CET