Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
2 / 2 / 3
Регистрация: 29.06.2011
Сообщений: 33
1

Объясните пожалуйста ошибку!!!

29.06.2011, 11:22. Показов 4287. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Я написала программу, вроде бы всё правильно, но оно мне выдает вот такую ошибку: Error215: Runtime error. Объясните её пожалуйста, и подскажите пожалуйста как её исправить.
Текст программы вот:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
uses DOS;
const
 max=10;
var tower1,tower2,tower3, tower4,tower5,tower6, d:array[1..max] of integer;
    i, j, m: integer; c1, c2, c3: string;c4,c5,c6:array[1..10] of string;
    t, g:text;
{0} Hour2,Minute2,Sec2,MS2,Hour1,Minute1,Sec1,MS1,h11,min11,sec11,ms11:word;
{1} Hour, Minute, Sec111, MS111, h, min, sec, ms: array[1..10] of word;
 
procedure RECUR(n,v1,v2,v3:integer;s1,s2,s3:array of integer;c11,c12,c13:string);
 
  procedure print(s11,s12,s13:array of integer;c21,c22,c23:string);
{$S-}   begin
       writeln(t,'put disk');
{$R-}        for i:=1 to m do write(t,s11[i],' ');
       writeln(t,c21);
        for i:=1 to m do write(t,s12[i],' ');
       writeln(t,c22);
        for i:=1 to m do write(t,s13[i],' ');
       writeln(t,c23);
   end;
 
 begin
if n=1 then
  begin
   v1:=v1+1;
   s1[v1]:=n;
   print(s1,s2,s3,c11,c12,c13);
  end
else
  begin
   v1:=v1+1;
{$R-}   s1[v1]:=n;
   print(s1,s2,s3,c11,c12,c13);
   Recur(n-1,v3,v2,v1,s3,s2,s1,c13,c12,c11);
   Recur(n-1,v1,v2,v3,s1,s2,s3,c11,c12,c13);
  end;
end;
 
begin
       GetTime (Hour1, Minute1, Sec1, MS1);
    
    for i:=1 to 10 do begin
     {i:=0;} GetTime (Hour[2*i-1], Minute[2*i-1], Sec111[2*i-1], MS111[2*i-1]); end;
     
    assign(t,'d:\pas\bal\lab221.txt');
    assign(g,'d:\pas\bal\zapis221.txt');
    rewrite(t);
    append(g); 
   {writeln('vvedite:');  readln(m);} m:=1;
  for i:=1 to m do
   begin
     tower1[i]:=0;
     tower2[i]:=0;
     tower3[i]:=0;
   end; 
  c1:='tower1';
  c2:='tower2';
  c3:='tower3';
 RECUR(m,0,0,0,tower2,tower1,tower3,c2,c1,c3);
    gettime (Hour2, Minute2, Sec2, MS2);
      h11:=Hour2-Hour1;
      min11:=Minute2-Minute1;
      sec11:=Sec2- Sec1;
      ms11:=MS2-MS1;
      writeln(t,m,'      * ',h11,' :',min11,' :',sec11,' :',ms11);
   for i:=1 to 10 do begin 
        d[i]:=i;
    for j:=1 to d[i] do
   begin
     tower4[j]:=0;
     tower5[j]:=0;
     tower6[j]:=0;
   
     c4[i]:='tower4';
     c5[i]:='tower5';
     c6[i]:='tower6';
   RECUR(d[i],0,0,0,tower5[j],tower4[j],tower6[j],c5[i],c4[i],c6[i]);
    gettime (Hour[2*i], Minute[2*i], Sec111[2*i], MS111[2*i]);
      h[i]:=Hour[2*i]-Hour[2*i-1];
      min[i]:=Minute[2*i]-Minute[2*i-1];
      sec[i]:=Sec111[2*i]- Sec111[2*i-1];
      ms[i]:=MS111[2*i]-MS111[2*i-1];
      if (ms[i]<60) then begin
         writeln(g,'*          *                *');
         writeln(g,'*   ',d[i],'      * ',h[i],' :',min[i],' :',sec[i],' :',ms[i],'    *');
         writeln(g,'*          *                  *');
         writeln(g,'*****************************');
      end;
      if (ms[i]>60) or (ms[i]=60) then begin
         ms[i]:=0; sec[i]:=sec[i]+1;
         writeln(g,'*          *                *');
         writeln(g,'*   ',d[i],'      * ',h[i],' :',min[i],' :',sec[i],' :',ms[i],'    *');
         writeln(g,'*          *                *');
         writeln(g,'*****************************');
      end;
           end; end;
close(g);   close(t); 
end.
А сама задача бвла про Ханойские башни. Нужно было вывести в файл время обработки от 1 до 10 дисков.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2011, 11:22
Ответы с готовыми решениями:

объясните пожалуйста!
Удалить из заданного текста все пробелы, подсчитать длину получившегося текста и число удаленных...

объясните пожалуйста
вот задача: 1. Дан массив А. Вывести массив Массив B, в котором B= min{A,A,...A} Листинг...

Объясните, пожалуйста
Это плитки с цифрами и типо они спавняться, объясните как это работает или опишите саму процедуры...

Объясните ошибку пожалуйста
Писал передвижение в 2d игре. Вот мой код: using UnityEngine; using System.Collections; ...

5
4 / 4 / 0
Регистрация: 25.06.2011
Сообщений: 23
29.06.2011, 11:42 2
А какой паскаль используешь ? Free Pascal Или Turbo Pascal если какой либо из этих попробуй pascal ABC
возможно у тебя из за этого

Используется рекурсивное определение факториала.

Этот пример работает как в Turbo Pascal, так и в Free Pascal, но с несколько разным результатом. В обеих реализациях возникает арифметическое переполнение при вычислении факториалов 13-16, но Free Pascal сообщает об ошибке:

13! = Runtime error 215 at $004013C7
$004013C7
$00401449
$004063E0

в то время как Turbo Pascal не обнаруживает ошибку и просто выводит неправильные значения:

13! = 1932053504
14! = 1278945280
15! = 2004310016
16! = 2004189184
1
2 / 2 / 3
Регистрация: 29.06.2011
Сообщений: 33
29.06.2011, 15:23  [ТС] 3
Я использую Turbo Pascal 7.0 . И в нём эта ошибка выдаётся.
0
4 / 4 / 0
Регистрация: 25.06.2011
Сообщений: 23
29.06.2011, 15:26 4
Попробуйте ABC мне при написании курсовой при такой ошибке помогло
скачать можно здесь Скачать Паскаль
1
13104 / 5885 / 1706
Регистрация: 19.09.2009
Сообщений: 8,808
29.06.2011, 16:05 5
Цитата Сообщение от nordprk Посмотреть сообщение
в то время как Turbo Pascal не обнаруживает ошибку и просто выводит неправильные значения:
Чтобы TP или BP выдавал ошибку в случае переполнения, надо в Options - Compiler... - группа "Runtime errors" - поставить галочку в опции "Overflow checking".
---
Для того, чтобы можно было вычислять большие факториалы, следует использовать тип Extended. Чтобы задействовать в программе тип Extended, следует установить: Options - Compiler... - группа "Numeric processing" - поставить галочку в опции "8087/80287". - Т. е., задействовать математический сопроцессор.
1
2 / 2 / 3
Регистрация: 29.06.2011
Сообщений: 33
29.06.2011, 20:19  [ТС] 6
Благодарю за помощь, теперь всё работает.
0
29.06.2011, 20:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2011, 20:19
Помогаю со студенческими работами здесь

Объясните пожалуйста ошибку
Переделываю проект с Delphi на Lazarus, и вот столкнулся с ошибкой: компилятор выдаёт ошибку на...

Объясните пожалуйста ошибку компиляции
Давайте темам осмысленные имена Помогите пожалуйста, не пойму почему ругается на эту строку?...

Объясните пожалуйста ошибку в запросе
необходимо написать запрос на поиск суммы (length) фильмов где (rating = MAX( rating)/3) при...

объясните пожалуйста ошибку в коде mfs
делала лабу по методичке, перепроверила 100 раз, находит ошибку void...

Объясните, пожалуйста, где я допустил ошибку
Начал изучать Python. Прохожу обучение по книжке Пола Бэрри и в одном из примеров не могу понять,...

Объясните, пожалуйста, мою ошибку с вызовом метода
С помощью метода реализовать сравнение двух целых чисел, возвращаемый результат в виде одного из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru