Maximlis rszsor
A   preview  szm   programozstechnikarovatba  a P2 nev, 1991-es versenyfe-ladatot  vlasztottam, mivel  rvid  sviszonylag  knnyen megoldhat.  A  me-goldshoz   egybknt   nem   szksgessemmilyen specilis ismeret  (termsze-tesen   a  PASCAL  alapfok   ismeretnkvl),  gyhogy  mindenkinek  ajnlom,aki a magasszint programnyelvek  irnt(is) rdekldik.

A feladat:

         Maximlis rszsorozat

 Adott egy - pozitv s negatv - egszszmokbl ll sorozat (a  ksbbiekbensor). rjon programot, amely  megkeresiazt az egybefgg rszsort, amelyben  aszmok sszege a legnagyobb.

 A program bemen adatai a P2.INP  nevfile-ban  vannak.  A file  minden  sorapozitv  s negatv szmokat  tartalmazszkzkkel  elvlasztva.  Egy  sorozattetszleges file-sorbl llhat;  mindensorozat  utols file-sort nulla  zrjale. A file tetszleges sok ilyen tpussorozatot tartalmazhat.

 A  kimen file-nak (P2.OUT)  az  egyessorozatokhoz tartoz maximlis sszegetkell tartalmaznia, mindegyik  sorozattegy-egy sorban.

 Megjegyzs: az input file egyes soro- zatai maximum 250 szmot tartalmazhat- nak.




 Plda:

 P2.INP              P2.OUT
Ŀ Ŀ1 -2 1 3          5                -1 2 0            6                1 3 2 0                           >>>
A megolds:

 A  program  a  file-ok   megnyitsvalindul, majd ezutn kvetkezik a programmagja,  amely egy ciklus, ami az  inputfile  file-vgig (EOF)  val  olvasstbiztostja.

 Ebben  a  ciklusban  elszr  tmbkberakjuk  az  aktulis  sor  elemeit,  seltroljuk az elemszmot.

 Ezutn  kvetkezik  a  tulajdonkppenimegolds,  melynek  lnyege  a  szmsorvgigpsztzsa. A mdszer a kvetkez:kezdetben a rszsor bal s jobb  hatrais  egyre lltott, a rszsort az  elsszm alkotja. A tovbblps rdekben:

 -  ha a jelenlegi rszsor nem  negatv(a  nulla itt hatreset, mivel az  ressor  rtke  ennyi,  ennek  kiszrsrehasznljuk  fel),  akkor  a   kvetkezszmhoz  hozzvve azt  biztos  nveli,teht a sort jobbra eggyel nveljk,
 -  ha  a  jelenlegi  rszsor  negatv,akkor   ksrletet  tesznk   pozitvvttelre:  balrl,  a sor  els  szmtelhagyjuk.

 A  rszsorral  vgzett  mvelet   utnellenrizzk,  hogy  nem  alakult-e  kijabb  maximum,  majd ha a  jobb  hatrmegegyezik   a  rszsor   vgvel   (azelemszmmal),  befejezzk  a   rszsor-mveleteket,  s kirjuk az eredmnyt. 
 Ezutn tovbblpnk a kvetkez sorra,majd a fciklus lejrta utn a  file-oklezrsval befejezzk a programot.