Pascal - problém s programom

Programovacie jazyky, rady, poradňa...
karotka15
Novice
Novice
Príspevky: 3
Registrovaný: 15 júl 2014, 20:36

Pascal - problém s programom

Príspevok od používateľa karotka15 »

Dobrý deň, chcel by som vás, pokročilejších programátorov požiadať o pomoc pri tomto programe. Program je na výpočet známok, na základe celkového počtu bodov a získaných bodov a potom aj zo všetkých písomok. Problém je, že program mi hádže nelogicky známky. Program je napísaný v pascale.

Kód: Vybrať všetko

program znamka;
var  maxpole, bodypole: array [1..40] of real;
     koniec: string;
     subor, subor2: text;
     percento, max, body, sucetmax, sucetbody, percento2: real;
     i, j,f, znamkx, znamkx2 : integer;
begin
  assign(subor,'D:\znamky.txt');
  assign(subor2,'D:\znamky2.txt');
  rewrite(subor2);
  rewrite(subor);
  writeln();
  writeln('Tento program vám vypočíta známku na základe hodnôt.');
  writeln();
  repeat
  begin
  percento:=0.00;
  writeln('Zadajte koľko bodová bolá písomka.');
  readln(max);
  writeln('Koľko bodov získal/a ?');
  readln(body);
  percento:=((body)/(max)*100);
  writeln('Z toho vyplýva, že žiak mal ',percento:3:2,'%');
  if ((percento>90) and (percento<100)) then
  znamkx:=1;
  if ((percento>75) and (percento<89.99)) then
  znamkx:=2;
  if ((percento>50) and (percento<74.99)) then
  znamkx:=3;
  if ((percento>30) and (percento<49.99)) then
  znamkx:=4;
  if ((percento>0) and (percento<29.99)) then
  znamkx:=5;
  case znamkx of
       1: writeln('Známka je 1.');
       2: writeln('Známka je 2.');
       3: writeln('Známka je 3.');
       4: writeln('Známka je 4.');
       5: writeln('Známka je 5.');

  end;
  writeln();
  readln();
  append(subor);
  writeln(subor, max);
  append(subor2);
  writeln(subor2, body);
  reset(subor2);
  reset(subor);
  i:=1;
  while not EOF(subor) do
    begin
    readln(subor, maxpole[i]);
    i:=i+1
    end;
  j:=1;
  while not EOF(subor2) do
    begin
    readln(subor2, bodypole[j]);
    j:=j+1;
    end;
  sucetmax:=0;
  for f:=1 to i do
    sucetmax:=sucetmax+maxpole[f];
  sucetbody:=0;
  for f:=1 to i-1 do
    sucetbody:=sucetbody+bodypole[f];
  percento2:=((sucetbody)/(sucetmax)*100);
  writeln();
  writeln('Celkové percento z doterajších všetkých známok je ',percento2:3:2);
  close(subor);
  close(subor2);
  if ((percento2>90) and (percento2<100)) then
  znamkx2:=1;
  if ((percento2>75) and (percento2<89.99)) then
  znamkx2:=2;
  if ((percento2>50) and (percento2<74.99)) then
  znamkx2:=3;
  if ((percento2>30) and (percento2<49.99)) then
  znamkx2:=4;
  if ((percento2>0) and (percento2<29.99)) then
  znamkx2:=5;
  case znamkx2 of
       1: writeln('Celková známka je 1.');
       2: writeln('Celková známka je 2.');
       3: writeln('Celková známka je 3.');
       4: writeln('Celková známka je 4.');
       5: writeln('Celková známka je 5.');

  end;
  writeln();
  readln();
  writeln('Ak chcete zadať ďalšiu písomku, stlač enter.');
  writeln('Ak chcete skončiť, jednoducho to zavrite.');
  readln();
  end;
  until koniec='koniec';
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Pascal - problém s programom

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

for f:=1 to i do
tam má byť iba po i-1 tak ako to máš aj v cykle pod tým
karotka15
Novice
Novice
Príspevky: 3
Registrovaný: 15 júl 2014, 20:36

Re: Pascal - problém s programom

Príspevok od používateľa karotka15 »

Ďakujem veľmi pekne. Neviem ako som si mohol takúto vec nevšimnúť :/
Napísať odpoveď