Не работает программа, не сходится ответ - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Sample Input 475.6 10.9.27.4.14.98 6. 102.0 99.9 220.0 132.9 256.3 147.9 275.0 102.9 277.6 112.9 381.8 100.9 Sample Output 27.31

Решение задачи: «Не работает программа, не сходится ответ»

textual
Листинг программы
const naedu=2.00;
var rasst,{до пункта назначения}
    vbaka,{объем бака}
    rasxod,
    stbaka:real;{стоимость бака в пункте отправления}
    n:integer;{количество заправочных станций на маршруте}
    rdozapr,{расстояние в километрах от исходного города до заправочной станции}
    stoimost:real;{цена в копейках за литр бензина на этой станции}
    i:integer;
    rez:real;
    vbake:real;{текущее количество бензина в баке}
    sl_rdozapr,sl_stoimost:real;
    pz:real;{расстояние до заправки на которой последний раз заправлялись}
begin
    assign(input,'input.txt');reset(input);    
    assign(output,'output.txt');rewrite(output);
    readln(rasst);
    readln(vbaka,rasxod,stbaka);
    readln(n);
    rez:=stbaka;
    readln(rdozapr,stoimost);
    i:=1;pz:=0;
    for i:=2 to n do
     begin
      vbake:=vbaka-(rdozapr-pz)/rasxod;
      readln(sl_rdozapr,sl_stoimost);
      if (vbake<vbaka/2)or((vbake>vbaka/2)and(vbake<((sl_rdozapr-pz)-(rdozapr-pz))/rasxod))
       then
        begin
         rez:=rez+(vbaka-vbake)*(stoimost/100)+naedu;
         vbake:=vbaka;
         pz:=rdozapr;
        end;
       rdozapr:=sl_rdozapr;stoimost:=sl_stoimost;
      end;
     if vbake<((rasst-pz)-(sl_rdozapr-pz))/rasxod then rez:=rez+(vbaka-vbake)*(sl_stoimost/100)+naedu;
     writeln(rez:0:2)
end.

Объяснение кода листинга программы

  1. const naedu=2.00;
  2. var rasst, vbaka, rasxod, stbaka, n, rdozapr, stoimost, i, rez, vbake, sl_rdozapr, sl_stoimost, pz;
  3. assign(input,'input.txt'); reset(input);
  4. assign(output,'output.txt'); rewrite(output);
  5. readln(rasst, vbaka, rasxod, stbaka);
  6. readln(n);
  7. rez:=stbaka;
  8. readln(rdozapr, stoimost);
  9. i:=1; pz:=0;
  10. for i:=2 to n do
  11. begin
  12. vbake:=vbaka-(rdozapr-pz)/rasxod;
  13. readln(sl_rdozapr, sl_stoimost);
  14. if (vbake<vbaka/2) or ((vbake>vbaka/2) and (vbake<((sl_rdozapr-pz)-(rdozapr-pz))/rasxod))
  15. then
  16. begin
  17. rez:=rez+(vbaka-vbake)*(stoimost/100)+naedu;
  18. vbake:=vbaka;
  19. pz:=rdozapr;
  20. end;
  21. rdozapr:=sl_rdozapr; stoimost:=sl_stoimost;
  22. end;
  23. if vbake<((rasst-pz)-(sl_rdozapr-pz))/rasxod then rez:=rez+(vbaka-vbake)*(sl_stoimost/100)+naedu;
  24. writeln(rez:0:2)
  25. end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы