ИЗВЕСТУВАЊЕ

 

Натпревари по информатика, 2008

 

Натпреварите по информатика за учениците од средните училишта во Република Македонија, во 2008 година, ќе се одржат според следниов распоред:

·         Два електронски натпревари

·         Регионален натпревар

·         Државен натпревар

·         Македонска информатичка олимпијада

 

Правила за спроведување на натпреварите, 2008

 

Натпреварите по Информатика целосно ќе бидат извршувани преку страната http://ioi.ii.edu.mk, (имате и линк преку www.cs.org.mk , Натпревари) од поставување на задачите за натпреварите, испраќање на решенијата, објавување на резултати и целосната комуникација.

На страната се наоѓа врска Online натпревари каде најпрво треба да се регистрирате. Доколку не сте регистрирани, истото можете да го сторите се до почетокот на регионалниот натпревар.

Откако ќе отпочне натпреварот, по вашата најава, имате можност да ги прочитате задачите, како и да ги испратите вашите решенија. Решенијата можете да ги испратите повеќе пати, ќе се прегледува само последното испратено решение.

Во рамки на страната каде се наоѓаат задачите има и врска кон системот за поставување на прашања, каде можете да поставите прашање или да ги прочитате одговорите на сите претходно поставени прашања.

Во продолжение се наведени повеќе појаснувања околу начинот на спроведување на натпреварот. Ве молиме прочитајте го внимателно.

Ве потсетуваме дека работата е исклучиво индивидуална и непочитување на истото ќе биде санкционирано.

Програмски Алатки

Решавањето на зададените проблеми треба да се изведува во следните програмски алатки:

n      (Borland) Turbo Pascal 7.0

n      (Borland) Turbo C++ 3.0  (кај компајлер треба да е избрано: code generation model – medium)

Алатките можете да ги најдете на страната на Здружението на Информатичарите на Македонија http://www.cs.org.mk/ под менито Натпревари.

Решенија

Решенијата се една верзија: програмски код (PAS, CPP).

Иако програмските алатки се по избор, испратеното решение треба да биде датотека со програмски код (не извршна верзија) во соодветен програмски јазик.

Влезните и излезните операции се едноставни што ви дозволува да се сконцентрирате на програмирање на самиот алгоритам. Не се потребни и не се користат никакви посебни програмерски техники што се однесуваат на графички излез и употреба на глувче, тастатура и слично. Посебно, следните техники нема да влијаат во оценувањето и треба да се избегнуваат: графички излез, користење на глувче во вашите програми, напредни операции со датотеки, напредни техники на нумеричко процесирање, повици на DOS функции и сл.

Потребно е добро да го познавате програмската средина во која се работи, поврзувањето со библиотеки и unit-и, преведување и дебагирање. За побрзо извршување на програмите придонесува и подоброто познавање на преведувачите кои се користат и нивно подобро искористување.

Влезни податоци

Целиот влез на програмите треба да биде преку ASCII текст датотеки, дури и ако влезот се состои од само еден податок. НЕ СЕ КОРИСТИ тастатура или глувче како влез. Имињата на влезните датотеки се задаваат во описите на секоја од задачите и потребно е да се користат само тие имиња.

Влезните податоци се состојат од секвенци на податоци. Секој податок може да биде цел број или непразна низа на знаци (буквитеaдоz” и “AдоZ”) и декадните цифри (“0” до “9”). Податоците меѓусебно се поделени или со едно празно место или со знак за крај на линија (новите податоци во нова линија). За секоја задача даден е пример за влезна датотека.

Излезни податоци

Програмите треба својот излез да го запишуваат исклучително во ASCII текст датотека, како што ќе биде специфицирано во описот на проблемот. Програмите НЕ СМЕАТ ДА запишуваат на екран.

Излезната датотека за секој проблем мора да ја има точно онаа структура што е специфицирана во описот на проблемот. Секоја линија мора да завршува со знак за нова линија, дури и последната.

Излезните датотеки претставуваат низи од податоци. Секој податок може да биде цел број или непразна низа на знаци (буквитеaдоz” и “AдоZ”) и декадните цифри (“0” до “9”). Податоците меѓусебно се поделени или со едно празно место или со знак за крај на линија (новите податоци во нова линија).

Прегледување на задачите
Прегледувањето на задачите е автоматизирано. Се врши евалуација на вашето решение на неколку веќе дефинирани влезни датотеки. По завршување на вашата задача во предвидениот временски рок, излезот од истата ќе биде спореден со точниот излез и ќе бидат доделени соодветен број на поени за секој точен излез. Делумните решенија или решенијата кои формираат излезни датотеки кои не се согласно форматот наведен во задачата не носат половични поени. Се признаваат само оние излези кои во целост се поклопуваат со бараното решение. На крајот од натпреварот ќе биде направен обид да се достават точните решенија на задачата во некој од програмските јазици кои се користат на натпреварот, како и влезните и излезните датотеки со кои биле тестирани решенијата.
Пример на користење на датотеки во PASCAL, C и C++

Со оваа програма се илустрира читање на два броја од влезна датотека чие име се внесува од тастатура и нивно запичување во датотекатаoutput.txt”.

Program Datoteka;

var  v, i: text;      (*v и i се текстуални датотеки*)

ime: string;      (*физичко име на датотеката на дискетата/дискот*)

a: integer;

b: real;

s: string;

begin

   write(Vnesi ime na vlezna datoteka:’);

   readln(ime);

   assign(v,ime);       (*поврзување на физичкото со логичкото име на влезната датотека v*);        

   reset(v);      (* поставување на почетокот на датотеката*)

   readln(v,a,b,s); (* читање од датотеката i*)

   close(v);      (*затворање на датотеката v-задолжително!!!*)

   assign(i, ‘output.txt’);   (*поврзување на физичкото име ‘output.txt’*)

(*со логичкото на излезната датотека i*)

   rewrite(i);    (*креирање на нова датотека со име ‘output.txt’*)

   writeln(i,a,b:5:5,s); (*запишување во излезната датотека на вредностите на a,b и s.*)

   close(i);      (*затворање на датотеката i-задолжително!!!*)

end.

 

C

C++

#include <stdio.h>

void main() {

      int n;

      FILE * fin;

      FILE * fout;

      fin = fopen("dat.in","r");

      fout = fopen("dat.out","w");

      fscanf(fin, "%i", &n);

      fprintf(fout, "%i\n", n);

      fclose(fin);

      fclose(fout);

}

#include<fstream.h>

#include<iostream.h>

void main(){

      int n;

      ifstream fin("dat.in");

      ofstream fout("dat.out");

      fin >> n;

      fout << n;

      fin.close();

      fout.close();

}