"Нельзя преобразовать real к integer" - PascalABC.NET

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

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

Листинг программы
  1. e:=0;
  2. for j:=1 to x do begin
  3. if S[1,j]=2 then begin
  4. if S[4,j]>0 and S[4,j]<=3 then e:=e+0.55;
  5. if S[4,j]>3 and S[4,j]<=6 then e:=e+0.79;
  6. if S[4,j]>6 and S[4,j]<=10 then e:=e+0.9;
  7. if S[4,j]>10 and S[4,j]<=18 then e:=e+1.08;
  8. if S[4,j]>18 and S[4,j]<=30 then e:=e+1.31;
  9. if S[4,j]>30 and S[4,j]<=50 then e:=e+1.56;
  10. if S[4,j]>50 and S[4,j]<=80 then e:=e+1.86;
  11. if S[4,j]>80 and S[4,j]<=120 then e:=e+2.19;
  12. if S[4,j]>120 and S[4,j]<=180 then e:=e+2.52;
  13. if S[4,j]>180 and S[4,j]<=250 then e:=e+2.9;
  14. if S[4,j]>250 and S[4,j]<=315 then e:=e+3.23;
  15. if S[4,j]>315 and S[4,j]<=400 then e:=e+3.54;
  16. if S[4,j]>400 and S[4,j]<=500 then e:=e+3.89;
  17. end;
  18.  
  19. выдает ошибку в 4ой строке(значит во всех что ниже тоже будет):"Нельзя преобразовать тип real к integer". все переменные, кроме j являются real.
  20.  
  21. вот полный код программы если надо:
  22. program qq;
  23. //uses
  24. //crt;
  25. const N=4;
  26. const M=100;
  27. const M1=100;
  28. var
  29. F, del:array of real;
  30. Q, S: array[1..N,1..M] of real;
  31. i, j, k, x, l, kol: integer;
  32. y, c, b, w, e, tip, Ad: real;
  33. Tvd, Tnd, Td:real;
  34. begin
  35. writeln ('Сколько звеньев участвует в цепи? ');
  36. readln (x);
  37. writeln ('Введите через пробел: тип звена(1 - замыкающее звено; 2 - составляющее звено), координаты начала и конца звена, размер:');
  38. for j := 1 to x do
  39. for i := 1 to N do
  40. read (S[i,j]);
  41. writeln ('Таблица значений:');
  42. writeln ('Номер звена ':3,'| Тип',' ','| начало звена |':7,' конец звена |':7,' ':2,'Размер звена');
  43. for j := 1 to x do begin
  44. write ('A',j);
  45. for i := 1 to N do
  46. write (S[i,j]:15);
  47. writeln;
  48. end;
  49. for j:=1 to x do begin
  50. for i:=1 to N-1 do
  51. Q:=S;
  52. end;
  53. for j:=1 to x do
  54. if Q[1,j]=1 then begin // ищем замыкающее звено(1 в первом столбце)
  55. b:=j;
  56. writeln ('Замыкающее звено: А',b);
  57. writeln;
  58. end;
  59. l:=(3*x)+1;
  60. setlength(F, l); //задаем длину нового одномерного массива
  61. k:=0;
  62. for j:=1 to x do begin
  63. for i:=1 to N-1 do begin
  64. k:=k+1;
  65. F[k]:=Q[i,j]; //создаем одномерный массив из элементов таблицы
  66. end;
  67. end;
  68. write('Aв–І=');
  69. k:=1;
  70. while F[k]=2 do k:=k+3; //если значение массива равно 2 то пропускаем 2 элемента и смотрим значение третьего до тех пор пока не найдем 1
  71. c:=F[k+2]; //после того как нашли "1" запоминаем число стоящее через 1 элемент (в таблице это конечная координата замыкающего звена)
  72. F[k+2]:=0; //обнуляем его
  73. w:=F[k+1]; // запоминаем число стоящее слева от него (начальная координата замыкающего звена)
  74. repeat
  75. k:=1;
  76. while (F[k]<>c) or (k mod 3=1) do k+=1; //проверяем массив: если элемент не равен конечной координате звена то смотрим следующий элемент
  77. if k mod 3=0 then begin //если номер элемента кратен трем то
  78. write('+A',k div 3); //записываем положительное значение к/3(номер следующего звена)
  79. c:=F[k-1]; //запоминаем начальную координату найденного звена
  80. F[k-1]:=0; //обнуляем ее
  81. end
  82. else begin //если номер элемента не кратен трем то
  83. write('-A',((k div 3) +1)); //записываем отрицательное значение звена
  84. c:=F[k+1]; //запоминаем конечную координату звена
  85. F[k+1]:=0; //обнуляем его
  86. end;
  87. until c=w; //повторяем до тех пор, пока не придем в начальную координату замыкающего звена
  88. writeln;
  89. write ('Какая задача решается?(1 - прямая; 2 - обратная)');
  90. writeln;
  91. readln (tip);
  92. if tip=1 then begin
  93. write('Введите данные для замыкающего звена:верхнее отклонение, нижнее отклонение(дробные числа записываются через точку"."):');
  94. writeln;
  95. write('в–Ів=');
  96. read(Tvd);
  97. write('в–Ін=');
  98. read(Tnd);
  99. Td:=Tvd-Tnd;
  100. writeln('Допуск замыкающего звена равен: Tв–І=в–Ів-в–Ін=',Td);
  101. kol:=x-1;
  102. setlength(del, kol);
  103. end;
  104. e:=0;
  105. for j:=1 to x do begin
  106. if S[1,j]=2 then begin
  107. if S[4,j]>0 and S[4,j]<=3 then e:=e+0.55;
  108. if S[4,j]>3 and S[4,j]<=6 then e:=e+0.79;
  109. if S[4,j]>6 and S[4,j]<=10 then e:=e+0.9;
  110. if S[4,j]>10 and S[4,j]<=18 then e:=e+1.08;
  111. if S[4,j]>18 and S[4,j]<=30 then e:=e+1.31;
  112. if S[4,j]>30 and S[4,j]<=50 then e:=e+1.56;
  113. if S[4,j]>50 and S[4,j]<=80 then e:=e+1.86;
  114. if S[4,j]>80 and S[4,j]<=120 then e:=e+2.19;
  115. if S[4,j]>120 and S[4,j]<=180 then e:=e+2.52;
  116. if S[4,j]>180 and S[4,j]<=250 then e:=e+2.9;
  117. if S[4,j]>250 and S[4,j]<=315 then e:=e+3.23;
  118. if S[4,j]>315 and S[4,j]<=400 then e:=e+3.54;
  119. if S[4,j]>400 and S[4,j]<=500 then e:=e+3.89;
  120. end;
  121. end;
  122. writeln(e);
  123. //readkey;
  124. end.
данные на ввод для проверки(если надо): кол-во звеньев: 4 данные: 2 3 4 38 1 5 6 1 2 4 5 42 2 3 6 80 какая задача решается: 1 отклонения можно любые ввести, они пока не влияют на ход программы

Решение задачи: «"Нельзя преобразовать real к integer"»

textual
Листинг программы
  1. begin
  2. * * * * if S[4,j]>0 and S[4,j]<=3 then e:=e+0.55;
  3. * * * * if S[4,j]>3 and S[4,j]<=6 then e:=e+0.79;
  4. * * * * if S[4,j]>6 and S[4,j]<=10 then e:=e+0.9;
  5. * * * * if S[4,j]>10 and S[4,j]<=18 then e:=e+1.08;
  6. * * * * if S[4,j]>18 and S[4,j]<=30 then e:=e+1.31;
  7. * * * * if S[4,j]>30 and S[4,j]<=50 then e:=e+1.56;
  8. * * * * if S[4,j]>50 and S[4,j]<=80 then e:=e+1.86;
  9. * * * * if S[4,j]>80 and S[4,j]<=120 then e:=e+2.19;
  10. * * * * if S[4,j]>120 and S[4,j]<=180 then e:=e+2.52;
  11. * * * * if S[4,j]>180 and S[4,j]<=250 then e:=e+2.9;
  12. * * * * if S[4,j]>250 and S[4,j]<=315 then e:=e+3.23;
  13. * * * * if S[4,j]>315 and S[4,j]<=400 then e:=e+3.54;
  14. * * * * if S[4,j]>400 and S[4,j]<=500 then e:=e+3.89;
  15. * * * * end;

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


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

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

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы