#!/bin/bash
# 09.12.2
# Hasznalat: zh <filenev kiterjesztes nelkul>

# Szukseges file-ok:
# <filenev>.zhk (Felevben szerzett pontszamok)
# <filenev>.kov (Felev kovetelmenyei)
# <filenev>.knv (A kurzus neve)

####
# opciok es a filenev beolvasasa
####

while getopts g:o:v:n opcio
do
 case "$opcio" in
  g) gyakvez="$OPTARG";;
  o) oszlop="$OPTARG";;
  v) vizsgalap="$OPTARG";;
  n) szin="n"
 esac
done
if [ $# == 1 ] ; then filenev=$1 ; fi
if [ $# == 2 ] ; then filenev=$2 ; fi
if [ $# == 3 ] ; then filenev=$3 ; fi
if [ $# == 4 ] ; then filenev=$4 ; fi
if [ $# == 5 ] ; then filenev=$5 ; fi
if [ $# == 6 ] ; then filenev=$6 ; fi
if [ $# == 7 ] ; then filenev=$7 ; fi
if [ $# == 8 ] ; then filenev=$8 ; fi

# Bash parameter expansion
filenev=${filenev%.*}

# Ellenorzesul:

# echo "gyakvezer=$gyakvez"
# echo "oszlop=$oszlop"
# echo "vizsgalap=$vizsgalap"
# echo "optind="$OPTIND
# echo "filenev="$filenev
# echo "dollar hessmark="$#

####
# Gyakvezer szerint valogatunk, ha meg van adva.
####

cat $filenev.zhk | awk ' $1 !~ /^\#/ { print($0); }' |

awk -F\; ' BEGIN { OFS=";"}
{
split(gyv,gtomb,",")
if (length(gyv)!=0) {
 for (i in gtomb) {
  if ($3==gtomb[i]) print($0);
 };
};
if (length(gyv)==0) print($0);
}' gyv=$gyakvez > $filenev.zhg

####
# Kiszedjuk a neptun kodokat a vizsgalapban tarolt fileokbol
####

#####
# (Ez itt csak probalkozas volt tobb filenev szeparalasara, nem erdekes.)
# echo $vizsgalap > $filenev.zhf
#
# awk -F\, '{
# for (i=1; i<=NF; i+=1) printf(" "$i);
# }' $filenev.zhf
#####

if [ $vizsgalap ] #ha a vizsgalap nem ures 
 then

 cat $filenev.zhg |

 awk -F\; '{
 split(keres,ktomb,",")
 for (i in ktomb) if ($2==ktomb[i]) print($0);;
 }' keres=`awk -F\( '{ for (i=2; i<=NF; i+=1) printf(substr($i,1,6)","); }' $vizsgalap`  > $filenev.zhv

 else 
 cp $filenev.zhg $filenev.zhv
fi

#####
# Szamolas, osztalyzas, ertekeles...
#####

# Atadjuk a filenevet az awknak

cat $filenev.zhv |

awk -F\; ' BEGIN { 
if (((hfszorzo+0)!=hfszorzo) || (length(hfszorzo)==0)) hfszorzo=1;
if (((zhszorzo+0)!=zhszorzo) || (length(zhszorzo)==0)) zhszorzo=1;
if (((vizsgaszorzo+0)!=vizsgaszorzo) || (length(vizsgaszorzo)==0)) vizsgaszorzo=1;
}

{
# kompatibilitas a regi hfdobas rendszerrel: ha "i" akkor 1, ha egyeb szam akkor marad, ha egyeb barmi akkor 0.
if ((hfdobas=="i")) hfdobas=1;
if (((hfdobas)+0)!=hfdobas) hfdobas=0;
# nev, neptun, gyakvezt egyszeruen bemasoljuk:

for (i=1; i<=3; i+=1) sor[i] = $(i);

# hf-ek feldolgozasa:

hfsum=0; hffelev=0; hfdarab=0;

####
# Regi hfdobas kod volt: if (hfdobas=="i") hfsummax = (hfszam-1)*hfmax;
# else hfsummax = hfszam*hfmax;
####

hfsummax = (hfszam-hfdobas)*hfmax;

for (i=4; i<=3+hfszam; i+=1) {
 sor[i] = $i
 if ((($i+0)==$i) && (length($i)!=0)) {
  atlossz[i] = atlossz[i]+$i
  atldb[i] = atldb[i]+1
  hfsum = hfsum+$i
  hffelev = hffelev+hfmax

####
# Regi hfdobas kod:  if ($i < hflegrosszabb) {
#    hflegrosszabb = $i
#    dobhf = i
#   };
####

 }; 
 if ((($i+0)!=$i) && (length($i)!=0)){
  hffelev = hffelev+hfmax
# Regi hfdobas kod:  hflegrosszabb = 0
#   dobhf = i
 }; 
};
if ((hfmax+0==hfmax) && (hfmax>0)) hfdarab = hffelev/hfmax;

####
# Regi hfdobas kod: if ((hfdobas=="i") && (hffelev==hfmax*hfszam)) {
# hffelev = hffelev-hfmax
# if (hflegrosszabb<100000) hfsum = hfsum-hflegrosszabb;
# sor[dobhf] = "("$dobhf")"
# };
####

# HFdobas, uj kod:
# Eddig nem dobtunk hf-et, ez most jon.
# Eloszor egy ciklus annyiszor, ahanyszor dobni akarunk:

# Ezt az egeszet csak akkor, ha elkezdhetunk dobni, azaz hfdarab>hfszam-hfdobas

if ((hfdarab>(hfszam-hfdobas)) && (hfdobas>0)) {
 for (j=1; j<=hfdarab-hfszam+hfdobas; j+=1) {
  hflegrosszabb=100000 #<-- a legrosszabb HF pontszama
  dobhf=0              #<-- a legrosszabb HF indexe

# Most egy ciklus a HF-eken at:

  for (i=4; i<=3+hfszam; i+=1) {

# Ha nem zarojeleztuk mar be:

   if ((sor[i] !~ /\(/)) {

# Ha nem szm, akkor tuti a legrosszabb

    if ((($i+0)!=$i) && (length($i)!=0)){
     hflegrosszabb = 0
     dobhf = i
    }

# Ha szam, akkor megnezzuk

    if ((($i+0)==$i) && (length($i)!=0)){
     if ($i < hflegrosszabb) {
      hflegrosszabb = $i
      dobhf = i
     }
    }
   }
  }

# Most hflegrosszabb tartalmazza a legrosszabb nem zarojelezett pontszamot, es dobhf az o indexet.

  hffelev = hffelev-hfmax
  if (hflegrosszabb<100000) hfsum = hfsum-hflegrosszabb;
  sor[dobhf] = "("$dobhf")"
 }
}

# zh-k es potzh-k feldolgozasa:

zhsum=0; zhfelev=0; vakompgmento=0; plusszok=0; minuszok=0;
# Uj bajkezelssel nem kell: zhbaj=0;

for (i=4+hfszam; i<=3+hfszam+zhszam; i+=1) {
 sor[i] = $i
 sor[i+zhszam] = $(i+zhszam)
 sor[i+2*zhszam] = $(i+2*zhszam)
 if ((length($i)!=0) || (length($(i+zhszam))!=0) || (length($(i+2*zhszam))!=0)) zhfelev = zhfelev+zhmax;

# ha van i. potpotzh:
 if ((($(i+2*zhszam)+0)==$(i+2*zhszam)) && (length($(i+2*zhszam))!=0)) { 
  atlossz[i+2*zhszam] = atlossz[i+2*zhszam]+$(i+2*zhszam)
  atldb[i+2*zhszam] = atldb[i+2*zhszam]+1
  zhsum = zhsum+$(i+2*zhszam)
  if ($(i+2*zhszam)<zhmin) {
# Uj bajkezelssel nem kell:    zhbaj = 1
    minuszok = minuszok+zhmin-$(i+2*zhszam)
  }
  if (($(i+2*zhszam)>zhmin) && (zhmin>0)) {
    plusszok = plusszok-zhmin+$(i+2*zhszam)
  }
  if (length($i)!=0) sor[i] = "("$i")";
  if (length($(i+zhszam))!=0) sor[i+zhszam] = "("$(i+zhszam)")";
 };

# ha van i. potzh
 if ((($(i+zhszam)+0)==$(i+zhszam)) && (length($(i+zhszam))!=0)) {
  atlossz[i+zhszam] = atlossz[i+zhszam]+$(i+zhszam)
  atldb[i+zhszam] = atldb[i+zhszam]+1
# de nincs i. potpotzh:
  if ((($(i+2*zhszam)+0)!=$(i+2*zhszam)) || (length($(i+2*zhszam))==0)) {
   zhsum = zhsum+$(i+zhszam)
   if ($(i+zhszam)<zhmin) {
# Uj bajkezelssel nem kell:    zhbaj = 1
    minuszok = minuszok+zhmin-$(i+zhszam)
   }
   if (($(i+zhszam)>zhmin) && (zhmin>0)) {
    plusszok = plusszok-zhmin+$(i+zhszam)
   }
   if (length($i)!=0) sor[i] = "("$i")";
  };
 };
 if ((($i+0)==$i) && (length($i)!=0)) {
  atlossz[i] = atlossz[i]+$(i)
  atldb[i] = atldb[i]+1
 };
 if ((($(i+zhszam)+0)!=$(i+zhszam)) && (($(i+2*zhszam)+0)!=$(i+2*zhszam)) && ((($i)+0)==$i) && (length($i)!=0)) {
  zhsum = zhsum+$i
  if ($i<zhmin) {
# Uj bajkezelssel nem kell:   zhbaj = 1
   minuszok = minuszok+zhmin-$i
  }
  if (($i>zhmin) && (zhmin>0)) {
   plusszok = plusszok-zhmin+$i
  }
 };
 if ((($(4+hfszam+3*zhszam)+0)==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) {
  if (length($i)!=0) sor[i] = "("$i")";
  if (length($(i+zhszam))!=0) sor[i+zhszam] = "("$(i+zhszam)")";
  if (length($(i+2*zhszam))!=0) sor[i+2*zhszam] = "("$(i+2*zhszam)")";
 };
 if ((zhmin>0) && (($(i+zhszam)+0)!=$(i+zhszam)) && (($(i+2*zhszam)+0)!=$(i+2*zhszam)) && (($i+0)!=$i) && ((length($i)>0) || (length($(i+zhszam))>0) || (length($(i+2*zhszam))>0))) {
# Uj bajkezelssel nem kell:  zhbaj = 1
  minuszok = minuszok+zhmin
 }

};

# hfsum feldolgozasa:

if (hffelev!=0) {
 if (($(4+hfszam+3*zhszam)+0==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) sor[4+hfszam+3*zhszam] = "("hfsum"/"hffelev")";
 else sor[4+hfszam+3*zhszam] = hfsum"/"hffelev;
 atlossz[4+hfszam+3*zhszam] = atlossz[4+hfszam+3*zhszam]+hfsum
 atldb[4+hfszam+3*zhszam] = atldb[4+hfszam+3*zhszam]+1
};

# zhsum feldolgozasa:

if (zhfelev!=0) {
 if (($(4+hfszam+3*zhszam)+0==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) sor[5+hfszam+3*zhszam] = "("zhsum"/"zhfelev")";
 else sor[5+hfszam+3*zhszam] = zhsum"/"zhfelev;
 atlossz[5+hfszam+3*zhszam] = atlossz[5+hfszam+3*zhszam]+zhsum
 atldb[5+hfszam+3*zhszam] = atldb[5+hfszam+3*zhszam]+1
};

zhsumold = zhsum
hfsumold = hfsum

# ivzh feldolgozasa + ivzh eseten alairas megadasa:
ivbaj=0
sor[7+hfszam+3*zhszam] = ""

sor[6+hfszam+3*zhszam] = $(4+hfszam+3*zhszam)
if ((($(4+hfszam+3*zhszam)+0)==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) {
 atlossz[6+hfszam+3*zhszam] = atlossz[6+hfszam+3*zhszam]+$(4+hfszam+3*zhszam)
 atldb[6+hfszam+3*zhszam] = atldb[6+hfszam+3*zhszam]+1
 if ($(4+hfszam+3*zhszam)<ivmin) {
  zhsum = $(4+hfszam+3*zhszam)
  ivbaj=1
  if (minnemala!="i") sor[7+hfszam+3*zhszam] = "-"
  if (minnemala=="i") sor[7+hfszam+3*zhszam] = "+"
 }
 else {
  zhsum = ivmin/zhszorzo
  hfsum = 0
  sor[7+hfszam+3*zhszam] = "+"
 };
};

# alairas kiertekelese es kitoltese:

baj = 0
if ((length($(5+hfszam+3*zhszam))!=0) && ($(5+hfszam+3*zhszam)!="k")) { #Ha "k"-n kivul valami van alairasnal
 baj=1;
 };
if ((hffelev>0) && (hfsummax>0)) {
 if (hfsum/hffelev<hfsummin/hfsummax) {
# Uj bajkezelssel nem kell:  baj = 1
  minuszok = minuszok+hffelev*hfsummin/hfsummax-hfsum
 }
 if ((hfsum/hffelev>hfsummin/hfsummax) && (hfsummin>0)) {
  plusszok = plusszok-hffelev*hfsummin/hfsummax+hfsum
 }
};
if ((zhfelev>0) && (zhszam>0) && (zhmax>0)) {
 if (zhsum/zhfelev<zhsummin/(zhszam*zhmax)) baj = 1;
 };
if ((hffelev+zhfelev+0==hffelev+zhfelev) && (hffelev+zhfelev>0) && (hfsummax+zhszam*zhmax+0==hfsummax+zhszam*zhmax) && (hfsummax+zhszam*zhmax>0)) {
 if ((hfszorzo*hfsum+zhszorzo*zhsum)/(hfszorzo*hffelev+zhszorzo*zhfelev)<felevmin/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)) baj=1;
 };

# Bajkezeles zhmin-re es hfsummin-re V.A. fele kompenzacios szaballyal kiegeszitve:

if ((vakompsz=="i") && (plusszok<minuszok^2)) baj=1;

if ((vakompsz=="i") && (plusszok>=minuszok^2)) vakompgmento=1; # Ez kell majd a zh szinezesehez

if (((length(vakompsz)==0) || (vakompsz!="i")) && (0<minuszok)) baj=1;

if ((($(4+hfszam+3*zhszam)+0)!=$(4+hfszam+3*zhszam)) && ((hffelev>0) || (zhfelev>0))) {
 if (baj==1) {
  if ((hfdarab==hfszam) && (zhfelev==zhszam*zhmax)) {
   if (minnemala!="i") sor[7+hfszam+3*zhszam] = "-" ;
   if (minnemala=="i") sor[7+hfszam+3*zhszam] = "+" ;	# Akkor is kap alairast, ha baj van (minnemala="i")
  }
  else sor[7+hfszam+3*zhszam] = "!";
  if ($(5+hfszam+3*zhszam)=="k") {
   zhsum = korabbialairas/zhszorzo
   hfsum = 0
   sor[7+hfszam+3*zhszam] = "k"   
  }
 } 
  else if ((hfdarab==hfszam) && (zhfelev==zhszam*zhmax)) { 
  sor[7+hfszam+3*zhszam] = "+"
 };
};

if ((length($(5+hfszam+3*zhszam))!=0) && ($(5+hfszam+3*zhszam)!="k")) { #Ha "k"-n kivul valami van alairasnal
 sor[7+hfszam+3*zhszam] = $(5+hfszam+3*zhszam);
 if (minnemala=="i") {
 atldb[7+hfszam+3*zhszam] = atldb[7+hfszam+3*zhszam]+1 
 };
};

if (sor[7+hfszam+3*zhszam]=="+") {
 atlossz[7+hfszam+3*zhszam] = atlossz[7+hfszam+3*zhszam]+1
 atldb[7+hfszam+3*zhszam] = atldb[7+hfszam+3*zhszam]+1
};
if (sor[7+hfszam+3*zhszam]=="-") {
 atldb[7+hfszam+3*zhszam] = atldb[7+hfszam+3*zhszam]+1
};

# felevkozi jegy

if ((felevkozi=="i") && (hfdarab==hfszam) && (zhfelev==zhmax*zhszam)) {
 if ((sor[7+hfszam+3*zhszam]!="+") && (sor[7+hfszam+3*zhszam]!="k")) sor[8+hfszam+3*zhszam] = "-";
 if ((sor[7+hfszam+3*zhszam]=="+") || (sor[7+hfszam+3*zhszam]=="k")) {
  nagyosszeg = hfszorzo*hfsum + zhszorzo*zhsum
  csalt=0
  for (j=4; j<=3+hfszam; j+=1) if ($j=="cs") csalt = 1;
  for (j=4+hfszam; j<=3+hfszam+zhszam; j+=1)  if (($j=="cs") || ($(j+zhszam)=="cs") || ($(j+2*zhszam)=="cs")) csalt = 1;
  if ($(4+hfszam+3*zhszam)=="cs") csalt = 1;
  nagyosszeg = nagyosszeg-csalt*csalas
  if ((($(4+hfszam+3*zhszam)+0)==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) { # ha iv-t kell osztalyozni
   sor[8+hfszam+3*zhszam] = "1"
   if (($(4+hfszam+3*zhszam)>=minivd) && (ivbaj!=1)) sor[8+hfszam+3*zhszam] = "2";
   if (($(4+hfszam+3*zhszam)>=minivc) && (ivbaj!=1)) sor[8+hfszam+3*zhszam] = "3";
   if (($(4+hfszam+3*zhszam)>=minivb) && (ivbaj!=1)) sor[8+hfszam+3*zhszam] = "4";
   if (($(4+hfszam+3*zhszam)>=miniva) && (ivbaj!=1)) sor[8+hfszam+3*zhszam] = "5";
  };
  if (($(4+hfszam+3*zhszam)+0)!=$(4+hfszam+3*zhszam)) { # ha nincs ivpontszam
   sor[8+hfszam+3*zhszam] = "1"
   if ((nagyosszeg>=minfvd) && ((baj!=1) || (sor[7+hfszam+3*zhszam]=="k"))) sor[8+hfszam+3*zhszam] = "2";
   if ((nagyosszeg>=minfvc) && ((baj!=1) || (sor[7+hfszam+3*zhszam]=="k"))) sor[8+hfszam+3*zhszam] = "3";
   if ((nagyosszeg>=minfvb) && ((baj!=1) || (sor[7+hfszam+3*zhszam]=="k"))) sor[8+hfszam+3*zhszam] = "4";
   if ((nagyosszeg>=minfva) && ((baj!=1) || (sor[7+hfszam+3*zhszam]=="k"))) sor[8+hfszam+3*zhszam] = "5";
  };
 };
 if (sor[8+hfszam+3*zhszam]=="1") atlosszf[8+hfszam+3*zhszam] = atlosszf[8+hfszam+3*zhszam]+1;
 if (sor[8+hfszam+3*zhszam]=="2") atlosszd[8+hfszam+3*zhszam] = atlosszd[8+hfszam+3*zhszam]+1;
 if (sor[8+hfszam+3*zhszam]=="3") atlosszc[8+hfszam+3*zhszam] = atlosszc[8+hfszam+3*zhszam]+1;
 if (sor[8+hfszam+3*zhszam]=="4") atlosszb[8+hfszam+3*zhszam] = atlosszb[8+hfszam+3*zhszam]+1;
 if (sor[8+hfszam+3*zhszam]=="5") atlossza[8+hfszam+3*zhszam] = atlossza[8+hfszam+3*zhszam]+1;
};

# vizsgapont es vizsgajegy kiertekelese, beirasa

for (i=1; i<=vizsgaszam; i+=1) { # i a vizsga sorszama!!
 nagyosszeg = hfszorzo*hfsum + zhszorzo*zhsum
 if (felevkozi=="i") nagyosszeg = 0;
 sor[7+hfszam+3*zhszam+2*i] = $(5+hfszam+3*zhszam+i)
 if ((length($(5+hfszam+3*zhszam+i))!=0) && ($(5+hfszam+3*zhszam+i)!="-")) {
  if ((($(5+hfszam+3*zhszam+i)+0)==$(5+hfszam+3*zhszam+i)) && (length($(5+hfszam+3*zhszam+i))!=0)) {
   nagyosszeg = nagyosszeg + vizsgaszorzo*$(5+hfszam+3*zhszam+i)
   atlossz[7+hfszam+3*zhszam+2*i] = atlossz[7+hfszam+3*zhszam+2*i]+$(5+hfszam+3*zhszam+i)
   atldb[7+hfszam+3*zhszam+2*i] = atldb[7+hfszam+3*zhszam+2*i]+1
  };
  csalt=0
  for (j=4; j<=3+hfszam; j+=1) if ($j=="cs") csalt = 1;
  for (j=4+hfszam; j<=3+hfszam+zhszam; j+=1)  if (($j=="cs") || ($(j+zhszam)=="cs") || ($(j+2*zhszam)=="cs")) csalt = 1;
  if ($(4+hfszam+3*zhszam)=="cs") csalt = 1;
  nagyosszeg = nagyosszeg-csalt*csalas
  sor[8+hfszam+3*zhszam+2*i] = "1"
  if (nagyosszeg>=mind) sor[8+hfszam+3*zhszam+2*i] = "2";
  if (nagyosszeg>=minc) sor[8+hfszam+3*zhszam+2*i] = "3";
  if (nagyosszeg>=minb) sor[8+hfszam+3*zhszam+2*i] = "4";
  if (nagyosszeg>=mina) sor[8+hfszam+3*zhszam+2*i] = "5";
  if (($(5+hfszam+3*zhszam+i)+0==$(5+hfszam+3*zhszam+i)) && ($(5+hfszam+3*zhszam+i)<vizsgamin)) sor[8+hfszam+3*zhszam+2*i] = "1";
 };
 if (((sor[7+hfszam+3*zhszam]!="+") && (sor[7+hfszam+3*zhszam]!="k") && (length($(5+hfszam+3*zhszam+i))!=0)) || ($(5+hfszam+3*zhszam+i)=="-") || ((felevkozi=="i") && (length($(5+hfszam+3*zhszam+i))!=0) && ((sor[8+hfszam+3*zhszam]+0!=sor[8+hfszam+3*zhszam]) || (sor[8+hfszam+3*zhszam]==1)))) sor[8+hfszam+3*zhszam+2*i] = "-";
if (sor[8+hfszam+3*zhszam+2*i]==5) atlossza[8+hfszam+3*zhszam+2*i] = atlossza[8+hfszam+3*zhszam+2*i]+1;
if (sor[8+hfszam+3*zhszam+2*i]==4) atlosszb[8+hfszam+3*zhszam+2*i] = atlosszb[8+hfszam+3*zhszam+2*i]+1;
if (sor[8+hfszam+3*zhszam+2*i]==3) atlosszc[8+hfszam+3*zhszam+2*i] = atlosszc[8+hfszam+3*zhszam+2*i]+1;
if (sor[8+hfszam+3*zhszam+2*i]==2) atlosszd[8+hfszam+3*zhszam+2*i] = atlosszd[8+hfszam+3*zhszam+2*i]+1;
if (sor[8+hfszam+3*zhszam+2*i]==1) atlosszf[8+hfszam+3*zhszam+2*i] = atlosszf[8+hfszam+3*zhszam+2*i]+1;
};

# Az i. hf szine

nagymax = hfszorzo*hfsummax+zhszorzo*zhszam*zhmax+vizsgaszorzo*vizsgamax # a felevben szerezheto osszpontszam

if (felevkozi=="i") {
 fszd = minfvd/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)
 fszc = minfvc/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)
 fszb = minfvb/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)
 fsza = minfva/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)
};
if (felevkozi!="i") {
 fszd = mind/(nagymax)
 fszc = minc/(nagymax)
 fszb = minb/(nagymax)
 fsza = mina/(nagymax)
};

for (i=1; i<=hfszam; i+=1) {
 sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "n"
 if ((($(3+i)+0)==$(3+i)) && (length($(3+i))!=0) && (hfmax>0)) {
  sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "lgt"
  if ($(3+i)/hfmax>=fszd) sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "lgs";
  if ($(3+i)/hfmax>=fszc) sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "koz";
  if ($(3+i)/hfmax>=fszb) sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "jo";
  if ($(3+i)/hfmax>=fsza) sor[8+hfszam+3*zhszam+2*vizsgaszam+i] = "jel";
 };
};

# Az zh-k es potzh-k szine; sor-bol veve, hogy zarojelest ne szinezzen.

for (i=1; i<=3*zhszam; i+=1) {
 sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "n"
 if (((sor[3+hfszam+i]+0)==sor[3+hfszam+i]) && (length(sor[3+hfszam+i])!=0) && (zhmax>0)) {
  sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "lgt"
  if (sor[3+hfszam+i]/zhmax>=fszd) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "lgs";
  if (sor[3+hfszam+i]/zhmax>=fszc) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "koz";
  if (sor[3+hfszam+i]/zhmax>=fszb) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "jo";
  if (sor[3+hfszam+i]/zhmax>=fsza) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "jel";
  if ((sor[3+hfszam+i]<zhmin) && (vakompgmento!=1)) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "f";
 };
 if ((sor[3+hfszam+i]=="cs") && (zhmin>0) && (vakompgmento!=1)) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "f";
 if ((i<=zhszam) && (sor[3+hfszam+i]=="-") && (zhmin>0) && (vakompgmento!=1)) sor[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "f";
};

# A hfsum szine

sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if (($(4+hfszam+3*zhszam)+0!=$(4+hfszam+3*zhszam)) && (hffelev>0)) {
 sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt"
 if (hfsumold/hffelev>=fszd) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if (hfsumold/hffelev>=fszc) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if (hfsumold/hffelev>=fszb) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if (hfsumold/hffelev>=fsza) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if ((hfsumold/hffelev<hfsummin/hfsummax) && (vakompgmento!=1)) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
 if ((hfszorzo*hfsumold+zhszorzo*zhsum)/(hfszorzo*hffelev+zhszorzo*zhfelev)<felevmin/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)) sor[9+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# A zhsum szine

sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if (($(4+hfszam+3*zhszam)+0!=$(4+hfszam+3*zhszam)) && (zhfelev>0)) {
 sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt"
 if (zhsumold/zhfelev>=fszd) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if (zhsumold/zhfelev>=fszc) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if (zhsumold/zhfelev>=fszb) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if (zhsumold/zhfelev>=fsza) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if (zhsumold/zhfelev<zhsummin/(zhszam*zhmax)) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
 if ((hfszorzo*hfsumold+zhszorzo*zhsumold)/(hfszorzo*hffelev+zhszorzo*zhfelev)<felevmin/(hfszorzo*hfsummax+zhszorzo*zhszam*zhmax)) sor[10+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# Az ivzh szine

if ((felevkozi=="i") && (ivmax>0)) {
 iszd = minivd/ivmax
 iszc = minivc/ivmax
 iszb = minivb/ivmax
 isza = miniva/ivmax
};
if (felevkozi!="i") {
 iszd = mind/(nagymax)
 iszc = minc/(nagymax)
 iszb = minb/(nagymax)
 isza = mina/(nagymax)
};

sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if ((($(4+hfszam+3*zhszam)+0)==$(4+hfszam+3*zhszam)) && (length($(4+hfszam+3*zhszam))!=0)) {
 sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt";
 if (($(4+hfszam+3*zhszam))/ivmax>=iszd) sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if (($(4+hfszam+3*zhszam))/ivmax>=iszc) sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if (($(4+hfszam+3*zhszam))/ivmax>=iszb) sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if (($(4+hfszam+3*zhszam))/ivmax>=isza) sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if ($(4+hfszam+3*zhszam)<ivmin) sor[11+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# Vizsgapontok szinei

if (felevkozi=="i") nagymaxx = vizsgamax ; else nagymaxx = nagymax;

for (i=1; i<=vizsgaszam; i+=1) {
 sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "n";
 if ((($(5+hfszam+3*zhszam+i)+0)==$(5+hfszam+3*zhszam+i)) && (length($(5+hfszam+3*zhszam+i))!=0)) {
  sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "lgt";
  if ($(5+hfszam+3*zhszam+i)/vizsgamax>=mind/nagymaxx) sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "lgs";
  if ($(5+hfszam+3*zhszam+i)/vizsgamax>=minc/nagymaxx) sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "koz";
  if ($(5+hfszam+3*zhszam+i)/vizsgamax>=minb/nagymaxx) sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "jo";
  if ($(5+hfszam+3*zhszam+i)/vizsgamax>=mina/nagymaxx) sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "jel";
  if ($(5+hfszam+3*zhszam+i)<vizsgamin) sor[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "f";
 };
};

# sor nyomtatatasa:
for (i=1; i<=10+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(sor[i]";");
print(sor[11+2*hfszam+6*zhszam+3*vizsgaszam]);}

####
# Most jon az atlagok es statisztikak kiirasa:
####

END {

# Eloszor nyomtatunk egy ures sort:

for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) printf(";");
for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=10+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf("n;");
print("n")

# jegyek atlaganak szamolasa; 0. a felevkozi

for (i=0; i<=vizsgaszam; i+=1) {
if (((atlossza[8+hfszam+3*zhszam+2*i]+atlosszb[8+hfszam+3*zhszam+2*i]+atlosszc[8+hfszam+3*zhszam+2*i]+atlosszd[8+hfszam+3*zhszam+2*i]+atlosszf[8+hfszam+3*zhszam+2*i]+0)==atlossza[8+hfszam+3*zhszam+2*i]+atlosszb[8+hfszam+3*zhszam+2*i]+atlosszc[8+hfszam+3*zhszam+2*i]+atlosszd[8+hfszam+3*zhszam+2*i]+atlosszf[8+hfszam+3*zhszam+2*i]) && (atlossza[8+hfszam+3*zhszam+2*i]+atlosszb[8+hfszam+3*zhszam+2*i]+atlosszc[8+hfszam+3*zhszam+2*i]+atlosszd[8+hfszam+3*zhszam+2*i]+atlosszf[8+hfszam+3*zhszam+2*i]>0)) {
  atldb[8+hfszam+3*zhszam+2*i] = atlossza[8+hfszam+3*zhszam+2*i]+atlosszb[8+hfszam+3*zhszam+2*i]+atlosszc[8+hfszam+3*zhszam+2*i]+atlosszd[8+hfszam+3*zhszam+2*i]+atlosszf[8+hfszam+3*zhszam+2*i]
  atlossz[8+hfszam+3*zhszam+2*i] = 5*atlossza[8+hfszam+3*zhszam+2*i]+4*atlosszb[8+hfszam+3*zhszam+2*i]+3*atlosszc[8+hfszam+3*zhszam+2*i]+2*atlosszd[8+hfszam+3*zhszam+2*i]+atlosszf[8+hfszam+3*zhszam+2*i]
 };
};

for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
# if (((atldb[i]+0)==atldb[i]) && (length(atldb[i])!=0)) soratl[i] = atlossz[i]/atldb[i]; # <-- ezzel baj lehet a szam-nem szam kitetellel: ha 0-ra vegzodik akkor elbukik a szamteszten.
# if (((atldb[i]+0)==atldb[i]) && (length(atldb[i])!=0)) soratl[i] = atlossz[i]/atldb[i];
 if (((atldb[i]+0)==atldb[i]) && (length(atldb[i])!=0)) soratl[i]=atlossz[i]/atldb[i];
};

# atlag hf-ek szine

for (i=1; i<=hfszam; i+=1) {
 soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "n"
 if (((soratl[3+i]+0)==soratl[3+i]) && (length(soratl[3+i])!=0)) {
  soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "lgt"
  if (soratl[3+i]/hfmax>=fszd) soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "lgs";
  if (soratl[3+i]/hfmax>=fszc) soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "koz";
  if (soratl[3+i]/hfmax>=fszb) soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "jo";
  if (soratl[3+i]/hfmax>=fsza) soratl[8+hfszam+3*zhszam+2*vizsgaszam+i] = "jel";
 };
};

# Az atlag zh-k es potzh-k szine

for (i=1; i<=3*zhszam; i+=1) {
 soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "n"
 if (((soratl[3+hfszam+i]+0)==soratl[3+hfszam+i]) && (length(soratl[3+hfszam+i])!=0)) {
  soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "lgt"
  if (soratl[3+hfszam+i]/zhmax>=fszd) soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "lgs";
  if (soratl[3+hfszam+i]/zhmax>=fszc) soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "koz";
  if (soratl[3+hfszam+i]/zhmax>=fszb) soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "jo";
  if (soratl[3+hfszam+i]/zhmax>=fsza) soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "jel";
  if (soratl[3+hfszam+i]<zhmin) soratl[8+2*hfszam+3*zhszam+2*vizsgaszam+i] = "f";
 };
};

# Az atlag hfsum szine

soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if (((soratl[4+hfszam+3*zhszam]+0)==soratl[4+hfszam+3*zhszam]) && (length(soratl[4+hfszam+3*zhszam])!=0)) {
 soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt";
 if (soratl[4+hfszam+3*zhszam]/hffelev>=fszd) soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if (soratl[4+hfszam+3*zhszam]/hffelev>=fszc) soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if (soratl[4+hfszam+3*zhszam]/hffelev>=fszb) soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if (soratl[4+hfszam+3*zhszam]/hffelev>=fsza) soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if (soratl[4+hfszam+3*zhszam]/hffelev<hfsummin/hfsummax) soratl[9+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# Az atlag zhsum szine

soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if (((soratl[5+hfszam+3*zhszam]+0)==soratl[5+hfszam+3*zhszam]) && (length(soratl[5+hfszam+3*zhszam])!=0)) {
 soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt"
 if (soratl[5+hfszam+3*zhszam]/zhfelev>=fszd) soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if (soratl[5+hfszam+3*zhszam]/zhfelev>=fszc) soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if (soratl[5+hfszam+3*zhszam]/zhfelev>=fszb) soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if (soratl[5+hfszam+3*zhszam]/zhfelev>=fsza) soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if (soratl[5+hfszam+3*zhszam]/zhfelev<zhsummin/(zhszam*zhmax)) soratl[10+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# Az atlag ivzh szine

soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "n";
if (((soratl[6+hfszam+3*zhszam]+0)==soratl[6+hfszam+3*zhszam]) && (length(soratl[6+hfszam+3*zhszam])!=0)) {
 soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "lgt";
 if ((soratl[6+hfszam+3*zhszam])/ivmax>=iszd) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "lgs";
 if ((soratl[6+hfszam+3*zhszam])/ivmax>=iszc) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "koz";
 if ((soratl[6+hfszam+3*zhszam])/ivmax>=iszb) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "jo";
 if ((soratl[6+hfszam+3*zhszam])/ivmax>=isza) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "jel";
 if (soratl[6+hfszam+3*zhszam]<ivmin) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam] = "f";
};

# Atlag vizsgapontok szinei

for (i=1; i<=vizsgaszam; i+=1) {
 soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "n";
 if (((soratl[7+hfszam+3*zhszam+2*i]+0)==soratl[7+hfszam+3*zhszam+2*i]) && (length(soratl[7+hfszam+3*zhszam+2*i])!=0)) {
  soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "lgt";
  if (soratl[7+hfszam+3*zhszam+2*i+0]/vizsgamax>=mind/nagymaxx) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "lgs";
  if (soratl[7+hfszam+3*zhszam+2*i+0]/vizsgamax>=minc/nagymaxx) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "koz";
  if (soratl[7+hfszam+3*zhszam+2*i+0]/vizsgamax>=minb/nagymaxx) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "jo";
  if (soratl[7+hfszam+3*zhszam+2*i+0]/vizsgamax>=mina/nagymaxx) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "jel";
  if (soratl[7+hfszam+3*zhszam+2*i+0]<vizsgamin) soratl[11+2*hfszam+6*zhszam+2*vizsgaszam+i] = "f";
 };
};

# Masodik helyre beirjuk, hogy "atl":

soratl[2] = "<b>tl.:</b>"

for (i=1; i<=3; i+=1) printf(soratl[i]";")
for (i=4; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1){ 
 if ((soratl[i]==soratl[i]+0) && (length(soratl[i])>0)) printf("%.2f",soratl[i]);
 printf(";")
};
for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratl[i]";")
print(soratl[11+2*hfszam+6*zhszam+3*vizsgaszam])


# jegyek szazalekainak nyomtatasa

visz = 0
for (i=0; i<=vizsgaszam; i+=1) {
 if (((atldb[8+hfszam+3*zhszam+2*i]+0)==atldb[8+hfszam+3*zhszam+2*i]) && atldb[8+hfszam+3*zhszam+2*i]>0) {
  soratla[8+hfszam+3*zhszam+2*i]=sprintf("%.2f",atlossza[8+hfszam+3*zhszam+2*i]/atldb[8+hfszam+3*zhszam+2*i])
  visz = 1
 };
};
if (visz==1) {

# Megint nyomtatunk egy ures sort:


 for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) printf(";");
 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=10+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf("n;");
 print("n")

 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) soratla[i]="n";
 soratla[2] = "<b>5:</b>"
 for (i=1; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratla[i]";");
 print(soratla[11+2*hfszam+6*zhszam+3*vizsgaszam])
};

for (i=0; i<=vizsgaszam; i+=1) {
 if (((atldb[8+hfszam+3*zhszam+2*i]+0)==atldb[8+hfszam+3*zhszam+2*i]) && atldb[8+hfszam+3*zhszam+2*i]>0) soratlb[8+hfszam+3*zhszam+2*i]=sprintf("%.2f",atlosszb[8+hfszam+3*zhszam+2*i]/atldb[8+hfszam+3*zhszam+2*i]);
};
if (visz==1) {
 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) soratlb[i]="n";
 soratlb[2] = "<b>4:</b>"
 for (i=1; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratlb[i]";");
 print(soratlb[11+2*hfszam+6*zhszam+3*vizsgaszam])
};

for (i=0; i<=vizsgaszam; i+=1) {
 if (((atldb[8+hfszam+3*zhszam+2*i]+0)==atldb[8+hfszam+3*zhszam+2*i]) && atldb[8+hfszam+3*zhszam+2*i]>0) soratlc[8+hfszam+3*zhszam+2*i]=sprintf("%.2f",atlosszc[8+hfszam+3*zhszam+2*i]/atldb[8+hfszam+3*zhszam+2*i]);
};
if (visz==1) {
 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) soratlc[i]="n";
 soratlc[2] = "<b>3:</b>"
 for (i=1; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratlc[i]";");
 print(soratlc[11+2*hfszam+6*zhszam+3*vizsgaszam])
};

for (i=0; i<=vizsgaszam; i+=1) {
 if (((atldb[8+hfszam+3*zhszam+2*i]+0)==atldb[8+hfszam+3*zhszam+2*i]) && atldb[8+hfszam+3*zhszam+2*i]>0) soratld[8+hfszam+3*zhszam+2*i]=sprintf("%.2f",atlosszd[8+hfszam+3*zhszam+2*i]/atldb[8+hfszam+3*zhszam+2*i]);
};
if (visz==1) {
 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) soratld[i]="n";
 soratld[2] = "<b>2:</b>"
 for (i=1; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratld[i]";");
 print(soratld[11+2*hfszam+6*zhszam+3*vizsgaszam])
};

for (i=0; i<=vizsgaszam; i+=1) {
 if (((atldb[8+hfszam+3*zhszam+2*i]+0)==atldb[8+hfszam+3*zhszam+2*i]) && atldb[8+hfszam+3*zhszam+2*i]>0) soratlf[8+hfszam+3*zhszam+2*i]=sprintf("%.2f",atlosszf[8+hfszam+3*zhszam+2*i]/atldb[8+hfszam+3*zhszam+2*i]);
};
if (visz==1) {
 for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) soratlf[i]="n";
 soratlf[2] = "<b>1:</b>"
 for (i=1; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(soratlf[i]";");
 print(soratlf[11+2*hfszam+6*zhszam+3*vizsgaszam])
};
}' `cat $filenev.kov` > $filenev.zhr

# Vannak-e duplazott neptun kodok?

# felcsereljuk az elso ket oszlopot

cat $filenev.zhr |

awk -F\; '{
printf($2";")
printf($1";")
for (i=3; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf($i";");
print($(11+2*hfszam+6*zhszam+3*vizsgaszam))
}' `cat $filenev.kov` > $filenev.zhb

# most neptun az elso oszlop, abc sorrendbe teszuk

awk -F\; '{ if (($1!="") && ($1!="<b>tl.:</b>") && ($1!="<b>1:</b>") && ($1!="<b>2:</b>") && ($1!="<b>3:</b>") && ($1!="<b>4:</b>") && ($1!="<b>5:</b>")) print($0); }' $filenev.zhb | sed -f ~/zhpontozo/sort/betkod.sed | sort | sed -f ~/zhpontozo/sort/kodbet.sed > $filenev.zhe

awk -F\; '{ if (($1=="") || ($1=="<b>tl.:</b>") || ($1=="<b>1:</b>") || ($1=="<b>2:</b>") || ($1=="<b>3:</b>") || ($1=="<b>4:</b>") || ($1=="<b>5:</b>")) print($0); }' $filenev.zhb >> $filenev.zhe


# "neptunok"ban ott az osszes neptun kod, abc sorrendben. Ha van elozo/koveto, nyilat teszunk, pontosvesszo nelkul!! DE nem szamit az ures sor, es az, ami "<b>"-vel kezdodik.

cat $filenev.zhe |

awk -F\; ' BEGIN {
sorszam=1
}
{
split(neptunok,neptlist,",")
printf($1";"$2";"$3";")
for (i=4; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
#printf(neptunok)
#printf(neptlist[sorszam]"idenezz")
 printf($i)
 if ((length($1)!=0) && ($1 !~ /^<b>/) && (length($i)!=0)){ #nem ures a neptun kod, es nem is <b>-vel kezd
  if ($1==neptlist[sorszam-1]) { #az egyel elozovel egyezik
   printf("&uarr");
  }
  if ($1==neptlist[sorszam+1]) { #a kovetkezovel egyezik
   printf("&darr");
  }
 }
printf(";");
}
for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf($i";") ;
print($(12+2*hfszam+6*zhszam+3*vizsgaszam))
sorszam = sorszam+1

}' `cat $filenev.kov` neptunok=`cat $filenev.zhe | awk -F\; '{ printf($1",") }'` |


# visszacsereljuk az elso ket oszlopot

awk -F\; '{
printf($2";")
printf($1";")
for (i=3; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf($i";");
print($(11+2*hfszam+6*zhszam+3*vizsgaszam))
}' `cat $filenev.kov` > $filenev.zhd


if [ "$szin" == "n" ]
 then

cat $filenev.zhd |

awk -F\; '{
for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) printf($i";");
for (i=9+hfszam+3*zhszam+2*i; i<11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf("n;");
print("n")
}' `cat $filenev.kov` > $filenev.zhs
 else
cp $filenev.zhd $filenev.zhs
fi




####
# Html file fejlec gyartas, eloszor a publikus, nev nelkul
####

cat ~/zhpontozo/html/html_fej1.html > publ_$filenev.html
cat $filenev.knv >> publ_$filenev.html
cat ~/zhpontozo/html/html_fej2.html >> publ_$filenev.html
cat $filenev.knv >> publ_$filenev.html
cat ~/zhpontozo/html/html_fej3.html >> publ_$filenev.html
echo `date +%Y`". " >> publ_$filenev.html
if [ `date +%m` == 01 ] ; then echo "janur " ; fi >> publ_$filenev.html
if [ `date +%m` == 02 ] ; then echo "februr " ; fi >> publ_$filenev.html
if [ `date +%m` == 03 ] ; then echo "mrcius " ; fi >> publ_$filenev.html
if [ `date +%m` == 04 ] ; then echo "prilis " ; fi >> publ_$filenev.html
if [ `date +%m` == 05 ] ; then echo "mjus " ; fi >> publ_$filenev.html
if [ `date +%m` == 06 ] ; then echo "jnius " ; fi >> publ_$filenev.html
if [ `date +%m` == 07 ] ; then echo "jlius " ; fi >> publ_$filenev.html
if [ `date +%m` == 08 ] ; then echo "augusztus " ; fi >> publ_$filenev.html
if [ `date +%m` == 09 ] ; then echo "szeptember " ; fi >> publ_$filenev.html
if [ `date +%m` == 10 ] ; then echo "oktber " ; fi >> publ_$filenev.html
if [ `date +%m` == 11 ] ; then echo "november " ; fi >> publ_$filenev.html
if [ `date +%m` == 12 ] ; then echo "december " ; fi >> publ_$filenev.html
echo `date +%d`"." >> publ_$filenev.html
cat ~/zhpontozo/html/html_fej4.html >> publ_$filenev.html

####
# Kiirjuk a publ_$filenev.osz fileba melyik oszlopok kellenek
####

cat $filenev.zhs |

awk -F\; '{

if (length(sor[1])==0) { # ezt csinaljuk eloszor
 sor[1]="0"
 sor[2]="1"
 for (i=3; i<=(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) sor[i]="0";
 split(oszlop,otomb,",")
};
if (length(oszlop)==0) {for (i=3; i<=(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) if ((length($i))!=0) sor[i]="1";
};
for (i in otomb){
 if ((otomb[i]<=(8+hfszam+3*zhszam+2*vizsgaszam)) && (otomb[i]>=3) && length($(otomb[i]))!=0) sor[otomb[i]]="1";
};


}
END {

for (i=1; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]";");
print(sor[8+hfszam+3*zhszam+2*vizsgaszam])

}' oszlop=$oszlop `cat $filenev.kov` > publ_$filenev.osz

####
# Kiszedjuk a nem kello oszlopokat es abc sorrendbe rendezunk
####

cat $filenev.zhs |

awk -F\; '{
split(osz,otomb,";");
for (i in otomb) {
 if (otomb[i]=="0") sor[i]="";
 if (otomb[i]=="1") sor[i]=$i;
 };
for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) sor[i]=$i;
for (i=1; i<=10+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(sor[i]";");
print(sor[11+2*hfszam+6*zhszam+3*vizsgaszam])
}' `cat $filenev.kov` osz=`cat publ_$filenev.osz` > publ_$filenev.zhc


# sort -o publ_$filenev.zha publ_$filenev.zhc  # <-- ez nem volt jo, mert az atlagokat nem kellene sorba rendezni.

# mar nem kell abc, mert fent megvolt.:

cp publ_$filenev.zhc publ_$filenev.zha

# awk -F\; '{ if (($2!="") && ($2!="<b>tl.:</b>") && ($2!="<b>1:</b>") && ($2!="<b>2:</b>") && ($2!="<b>3:</b>") && ($2!="<b>4:</b>") && ($2!="<b>5:</b>")) print($0); }' publ_$filenev.zhc | sort > publ_$filenev.zha

# awk -F\; '{ if (($2=="") || ($2=="<b>tl.:</b>") || ($2=="<b>1:</b>") || ($2=="<b>2:</b>") || ($2=="<b>3:</b>") || ($2=="<b>4:</b>") || ($2=="<b>5:</b>")) print($0); }' publ_$filenev.zhc >> publ_$filenev.zha

####
# Html file keszitese
####

cat publ_$filenev.zha |

awk -F\; 'BEGIN {
sorsz=1
if (length(hfnev)==0) hfnev="HF";
}
{\
if (sorsz==1) { #ezeket csak a legelso sorban hajtjuk vegre
 split(osz,otomb,";");

# eloszor oszlopszamozas

 printf("<tr><td style=\"border: 1px solid DarkSlateGray\"></td>")
 for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) if (otomb[i]==1) printf("<td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>"i".</font></td>");;
 print("</tr>")

# most jonnek az oszlopok nevei

 sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\"></td>"
# for (i in otomb) { #!!! ez hibat produkalt a paritasvizsgalat ket soranal!!! Lehet, hogy bugos az awk?
 for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
  if ((otomb[i]==1) && (i==1)) sor[i]="<th align=left style=\"border: 1px solid DarkSlateGray\">Nv</th>";
  if ((otomb[i]==1) && (i==2)) sor[i]="<th align=left style=\"border: 1px solid DarkSlateGray\">Neptun</th>";
  if ((otomb[i]==1) && (i==3)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Gyv.</th>";
  if ((otomb[i]==1) && (i>3) && (i<=3+hfszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3"."hfnev"</th>";
  if ((otomb[i]==1) && (i>3+hfszam) && (i<=3+hfszam+zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam".ZH</th>";
  if ((otomb[i]==1) && (i>3+hfszam+zhszam) && (i<=3+hfszam+2*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam-zhszam".PZH</th>";
  if ((otomb[i]==1) && (i>3+hfszam+2*zhszam) && (i<=3+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam-2*zhszam".PPZH</th>";
  if ((otomb[i]==1) && (i==4+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">&sum;"hfnev"</th>";
  if ((otomb[i]==1) && (i==5+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">&sum;ZH</th>";
  if ((otomb[i]==1) && (i==6+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">IV</th>";
  if ((otomb[i]==1) && (i==7+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Al.</th>";
  if ((otomb[i]==1) && (i==8+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Flvk.</th>";
  if ((otomb[i]==1) && (i>=9+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==1)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"(i-7-hfszam-3*zhszam)/2".Vi</th>"
  if ((otomb[i]==1) && (i>=10+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==0)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"(i-8-hfszam-3*zhszam)/2".V.jegy</th>"
 };
 for (i=0; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]);
 print(sor[8+hfszam+3*zhszam+2*vizsgaszam]"</tr>")
};

###
# innentol minden nem ures (kiveve 2. oszlop) sorban vegrehajtjuk
###

# sorszamozas ha nem atlagnal vagyunk

sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\"><font size=-1>"sorsz".</font></td>";
if (($2=="") || ($2=="<b>tl.:</b>") || ($2=="<b>1:</b>") || ($2=="<b>2:</b>") || ($2=="<b>3:</b>") || ($2=="<b>4:</b>") || ($2=="<b>5:</b>")) sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\">&nbsp;</td>";

for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
 if ((otomb[i]==1) && (i==1)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==2)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==3)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i>3) && (i<=6+hfszam+3*zhszam)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\" align=center class=\""$(5+hfszam+3*zhszam+2*vizsgaszam+i)"\">"$i"</td>";
 if ((otomb[i]==1) && (i==7+hfszam+3*zhszam)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==8+hfszam+3*zhszam)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i>=9+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==1)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\" align=center class=\""$((i+15+3*hfszam+9*zhszam)/2+2*vizsgaszam)"\">"$i"</td>";
 if ((otomb[i]==1) && (i>=10+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==0)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
};
for (i=0; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]);
print(sor[8+hfszam+3*zhszam+2*vizsgaszam]"</tr>")

# };

sorsz+=1
}' `cat $filenev.kov` osz=`cat publ_$filenev.osz` |

# A uarr es a darr meg pontosvesszo nelkul szerepel, rakjuk be.

sed 's/\&uarr/\&uarr\;/g' | sed 's/\&darr/\&darr\;/g' >> publ_$filenev.html

if [ "$szin" == "n" ]
 then
 cat ~/zhpontozo/html/html_lab1n.html >> publ_$filenev.html
 else
 cat ~/zhpontozo/html/html_lab1.html >> publ_$filenev.html
fi

cat publ_$filenev.osz |

awk -F\; '{
if (csalas>0) print(" + a jegyek szmtsnl "csalas" pont levondik.");
else print(".");
}' `cat $filenev.kov` >> publ_$filenev.html

cat ~/zhpontozo/html/html_lab2.html >> publ_$filenev.html

####
# Itt beirjuk a ponthatarokat a html file aljara, ha szukseg van ra.
####

cat publ_$filenev.osz |

awk -F\; '

BEGIN { 
if (((hfszorzo+0)!=hfszorzo) || (length(hfszorzo)==0)) hfszorzo=1;
if (((zvszorzo+0)!=zhszorzo) || (length(zhszorzo)==0)) zhszorzo=1;
if (((vizsgaszorzo+0)!=vizsgaszorzo) || (length(vizsgaszorzo)==0)) vizsgaszorzo=1;
if (length(hfnev)==0) hfnev="HF";
}
{
fvt="0"
fvt = $(4+hfszam+3*zhszam)+$(5+hfszam+3*zhszam)+$(8+hfszam+3*zhszam)
if ((felevkozi=="i") && (fvt>0)) {
 print("<br>&nbsp;")
 print("Flvkzi jegyek:<br>")
 print(hfnev"szorz: "hfszorzo"; ZHszorz: "zhszorzo"<br>") 
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"minfva"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvb", "minfva")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvc", "minfvb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvd", "minfvc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["felevmin", "minfvd")</font></td></tr>")
 print("</table>")
};
if ((felevkozi=="i") && ($(6+hfszam+3*zhszam)==1)) {
 print("<br>&nbsp;")
 print("IV jegyek:<br>")
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"miniva"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivb", "miniva")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivc", "minivb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivd", "minivc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["ivmin", "minivd")</font></td></tr>")
 print("</table>")
};
vit="0"
for (i=9+hfszam+3*zhszam; i<=7+hfszam+3*zhszam+2*vizsgaszam; i+=2) {
 vit = vit+$i
};
if (vit>0) {
 print("<br>&nbsp;")
 print("Vizsgajegy:<br>")
 print(hfnev"szorz: "hfszorzo"; ZHszorz: "zhszorzo"; vizsgaszorz: "vizsgaszorzo"<br>") 
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"mina"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minb", "mina")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minc", "minb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["mind", "minc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&lt;"mind"</font></td></tr>")
 print("</table>")
};
}' `cat $filenev.kov` >> publ_$filenev.html

cat ~/zhpontozo/html/html_lab3.html >> publ_$filenev.html

######################

# Most mindezt megismeteljuk a nem publikus verzioval, nevek nelkul.


####
# Html file fejlec gyartas
####

cat ~/zhpontozo/html/html_fej1.html > $filenev.html
cat $filenev.knv >> $filenev.html
cat ~/zhpontozo/html/html_fej2.html >> $filenev.html
cat $filenev.knv >> $filenev.html
cat ~/zhpontozo/html/html_fej3.html >> $filenev.html
echo `date +%Y`". " >> $filenev.html
if [ `date +%m` == 01 ] ; then echo "janur " ; fi >> $filenev.html
if [ `date +%m` == 02 ] ; then echo "februr " ; fi >> $filenev.html
if [ `date +%m` == 03 ] ; then echo "mrcius " ; fi >> $filenev.html
if [ `date +%m` == 04 ] ; then echo "prilis " ; fi >> $filenev.html
if [ `date +%m` == 05 ] ; then echo "mjus " ; fi >> $filenev.html
if [ `date +%m` == 06 ] ; then echo "jnius " ; fi >> $filenev.html
if [ `date +%m` == 07 ] ; then echo "jlius " ; fi >> $filenev.html
if [ `date +%m` == 08 ] ; then echo "augusztus " ; fi >> $filenev.html
if [ `date +%m` == 09 ] ; then echo "szeptember " ; fi >> $filenev.html
if [ `date +%m` == 10 ] ; then echo "oktber " ; fi >> $filenev.html
if [ `date +%m` == 11 ] ; then echo "november " ; fi >> $filenev.html
if [ `date +%m` == 12 ] ; then echo "december " ; fi >> $filenev.html
echo `date +%d`"." >> $filenev.html
cat ~/zhpontozo/html/html_fej4.html >> $filenev.html

####
# Kiirjuk a $filenev.osz fileba melyik oszlopok kellenek
####

cat $filenev.zhs |

awk -F\; '{

if (length(sor[1])==0) { # ezt csinaljuk eloszor
 sor[1]="1"
 sor[2]="1"
 for (i=3; i<=(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) sor[i]="0";
 split(oszlop,otomb,",")
};
if (length(oszlop)==0) {for (i=3; i<=(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) if ((length($i))!=0) sor[i]="1";
};
for (i in otomb){
 if ((otomb[i]<=(8+hfszam+3*zhszam+2*vizsgaszam)) && (otomb[i]>=3) && length($(otomb[i]))!=0) sor[otomb[i]]="1";
};


}
END {

for (i=1; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]";");
print(sor[8+hfszam+3*zhszam+2*vizsgaszam])

}' oszlop=$oszlop `cat $filenev.kov` > $filenev.osz

####
# Kiszedjuk a nem kello oszlopokat es abc sorrendbe rendezunk
####

cat $filenev.zhs |

awk -F\; '{
split(osz,otomb,";");
for (i in otomb) {
 if (otomb[i]=="0") sor[i]="";
 if (otomb[i]=="1") sor[i]=$i;
 };
for (i=9+hfszam+3*zhszam+2*vizsgaszam; i<=11+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) sor[i]=$i;
for (i=1; i<=10+2*hfszam+6*zhszam+3*vizsgaszam; i+=1) printf(sor[i]";");
print(sor[11+2*hfszam+6*zhszam+3*vizsgaszam])
}' `cat $filenev.kov` osz=`cat $filenev.osz` > $filenev.zhc

# az alabbi kod cserevel rendez, hogy a nyelvi beallitasok ne tolhassak el az ekezetes betuket.

awk -F\; '{ if (($2!="") && ($2!="<b>tl.:</b>") && ($2!="<b>1:</b>") && ($2!="<b>2:</b>") && ($2!="<b>3:</b>") && ($2!="<b>4:</b>") && ($2!="<b>5:</b>")) print($0); }' $filenev.zhc | sed -f ~/zhpontozo/sort/betkod.sed | sort | sed -f ~/zhpontozo/sort/kodbet.sed > $filenev.zha

awk -F\; '{ if (($2=="") || ($2=="<b>tl.:</b>") || ($2=="<b>1:</b>") || ($2=="<b>2:</b>") || ($2=="<b>3:</b>") || ($2=="<b>4:</b>") || ($2=="<b>5:</b>")) print($0); }' $filenev.zhc >> $filenev.zha


####
# Html file keszitese
####


cat $filenev.zha |

awk -F\; 'BEGIN {
sorsz=1
if (length(hfnev)==0) hfnev="HF";
}
{\
if (sorsz==1) { #ezeket csak a legelso sorban hajtjuk vegre
 split(osz,otomb,";");

# eloszor oszlopszamozas

 printf("<tr><td style=\"border: 1px solid DarkSlateGray\"></td>")
 for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) if (otomb[i]==1) printf("<td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>"i".</font></td>");;
 print("</tr>")

# most jonnek az oszlopok nevei

 sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\"></td>"
# for (i in otomb) { #!!! ez hibat produkalt a paritasvizsgalat ket soranal!!! Lehet, hogy bugos az awk?
 for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
  if ((otomb[i]==1) && (i==1)) sor[i]="<th align=left style=\"border: 1px solid DarkSlateGray\">Nv</th>";
  if ((otomb[i]==1) && (i==2)) sor[i]="<th align=left style=\"border: 1px solid DarkSlateGray\">Neptun</th>";
  if ((otomb[i]==1) && (i==3)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Gyv.</th>";
  if ((otomb[i]==1) && (i>3) && (i<=3+hfszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3"."hfnev"</th>";
  if ((otomb[i]==1) && (i>3+hfszam) && (i<=3+hfszam+zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam".ZH</th>";
  if ((otomb[i]==1) && (i>3+hfszam+zhszam) && (i<=3+hfszam+2*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam-zhszam".PZH</th>";
  if ((otomb[i]==1) && (i>3+hfszam+2*zhszam) && (i<=3+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"i-3-hfszam-2*zhszam".PPZH</th>";
  if ((otomb[i]==1) && (i==4+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">&sum;"hfnev"</th>";
  if ((otomb[i]==1) && (i==5+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">&sum;ZH</th>";
  if ((otomb[i]==1) && (i==6+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">IV</th>";
  if ((otomb[i]==1) && (i==7+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Al.</th>";
  if ((otomb[i]==1) && (i==8+hfszam+3*zhszam)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">Flvk.</th>";
  if ((otomb[i]==1) && (i>=9+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==1)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"(i-7-hfszam-3*zhszam)/2".Vi</th>"
  if ((otomb[i]==1) && (i>=10+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==0)) sor[i]="<th align=center style=\"border: 1px solid DarkSlateGray\">"(i-8-hfszam-3*zhszam)/2".V.jegy</th>"
 };
 for (i=0; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]);
 print(sor[8+hfszam+3*zhszam+2*vizsgaszam]"</tr>")
};


###
# innentol minden sorban vegrehajtjuk
###

# sorszamozas ha nem atlagnal vagyunk

sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\"><font size=-1>"sorsz".</font></td>";
if (($2=="") || ($2=="<b>tl.:</b>") || ($2=="<b>1:</b>") || ($2=="<b>2:</b>") || ($2=="<b>3:</b>") || ($2=="<b>4:</b>") || ($2=="<b>5:</b>")) sor[0]="<tr><td style=\"border: 1px solid DarkSlateGray\">&nbsp;</td>";

for (i=1; i<=8+hfszam+3*zhszam+2*vizsgaszam; i+=1) {
 if ((otomb[i]==1) && (i==1)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==2)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==3)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i>3) && (i<=6+hfszam+3*zhszam)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\" align=center class=\""$(5+hfszam+3*zhszam+2*vizsgaszam+i)"\">"$i"</td>";
 if ((otomb[i]==1) && (i==7+hfszam+3*zhszam)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i==8+hfszam+3*zhszam)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
 if ((otomb[i]==1) && (i>=9+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==1)) sor[i]="<td style=\"border: 1px solid DarkSlateGray\" align=center class=\""$((i+15+3*hfszam+9*zhszam)/2+2*vizsgaszam)"\">"$i"</td>";
 if ((otomb[i]==1) && (i>=10+hfszam+3*zhszam) && ((i-hfszam-zhszam)%2==0)) sor[i]="<td align=center style=\"border: 1px solid DarkSlateGray\">"$i"</td>";
};
for (i=0; i<(8+hfszam+3*zhszam+2*vizsgaszam); i+=1) printf(sor[i]);
print(sor[8+hfszam+3*zhszam+2*vizsgaszam]"</tr>")

# };

sorsz+=1
}' `cat $filenev.kov` osz=`cat $filenev.osz` |

# A uarr es a darr meg pontosvesszo nelkul szerepel, rakjuk be.

sed 's/\&uarr/\&uarr\;/g' | sed 's/\&darr/\&darr\;/g' >> $filenev.html

if [ "$szin" == "n" ]
 then
 cat ~/zhpontozo/html/html_lab1n.html >> $filenev.html
 else
 cat ~/zhpontozo/html/html_lab1.html >> $filenev.html
fi

cat $filenev.osz |

awk -F\; '{
if (csalas>0) print(" + a jegyek szmtsnl "csalas" pont levondik.");
else print(".");
}' `cat $filenev.kov` >> $filenev.html

cat ~/zhpontozo/html/html_lab2.html >> $filenev.html

####
# Itt beirjuk a ponthatarokat a html file aljara, ha szukseg van ra.
####

cat $filenev.osz |

awk -F\; '
BEGIN { 
if (((hfszorzo+0)!=hfszorzo) || (length(hfszorzo)==0)) hfszorzo=1;
if (((zvszorzo+0)!=zhszorzo) || (length(zhszorzo)==0)) zhszorzo=1;
if (((vizsgaszorzo+0)!=vizsgaszorzo) || (length(vizsgaszorzo)==0)) vizsgaszorzo=1;
if (length(hfnev)==0) hfnev="HF";
}
{
fvt="0"
fvt = $(4+hfszam+3*zhszam)+$(5+hfszam+3*zhszam)+$(8+hfszam+3*zhszam)
if ((felevkozi=="i") && (fvt>0)) {
 print("<br>&nbsp;")
 print("Flvkzi jegyek:<br>")
 print(hfnev"szorz: "hfszorzo"; ZHszorz: "zhszorzo"<br>") 
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"minfva"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvb", "minfva")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvc", "minfvb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minfvd", "minfvc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["felevmin", "minfvd")</font></td></tr>")
 print("</table>")
};
if ((felevkozi=="i") && ($(6+hfszam+3*zhszam)==1)) {
 print("<br>&nbsp;")
 print("IV jegyek:<br>")
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"miniva"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivb", "miniva")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivc", "minivb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minivd", "minivc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["ivmin", "minivd")</font></td></tr>")
 print("</table>")
};
vit="0"
for (i=9+hfszam+3*zhszam; i<=7+hfszam+3*zhszam+2*vizsgaszam; i+=2) {
 vit = vit+$i
};
if (vit>0) {
 print("<br>&nbsp;")
 print("Vizsgajegy:<br>")
 print(hfnev"szorz: "hfszorzo"; ZHszorz: "zhszorzo"; vizsgaszorz: "vizsgaszorzo"<br>") 
 print("<table border=1 rules=all style=\"border-collapse: collapse; border: 1px solid DarkSlateGray\">")
 print("<tr><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Jegy</font></th><th style=\"border: 1px solid DarkSlateGray\"></th><th style=\"border: 1px solid DarkSlateGray\"><font size=-1>Pontszm</font></th></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>5</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>jeles</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&ge;"mina"</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>4</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>j</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minb", "mina")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>3</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>kzepes</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["minc", "minb")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>2</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgsges</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&isin;["mind", "minc")</font></td></tr>")
 print("<tr><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>1</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>elgtelen</font></td><td align=center style=\"border: 1px solid DarkSlateGray\"><font size=-1>&lt;"mind"</font></td></tr>")
 print("</table>")
};
}' `cat $filenev.kov` >> $filenev.html

cat ~/zhpontozo/html/html_lab3.html >> $filenev.html


####
# Takaritas. szedjuk ki, ha valamelyik filera szukseg lenne
####

rm $filenev.zhg
rm $filenev.zhv
rm $filenev.zhr
rm $filenev.zhb
rm $filenev.zhe
rm $filenev.zhd
rm $filenev.zhs
rm $filenev.osz
rm $filenev.zhc
rm $filenev.zha
rm publ_$filenev.osz
rm publ_$filenev.zhc
rm publ_$filenev.zha

