Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 27.05.2010, 13:38   #1
sawel23
Новичок
Джуниор
 
Регистрация: 27.05.2010
Сообщений: 5
Восклицание Написал прогу в паскаль в ответ после запуска выдает ошибку.Что не так?

Сама задача.
Пират в подземелье. В поисках драгоценных камней пират проваливается в подземелье. План подземелья – матрица N*M комнат с драгоценными камнями. Камни из одной комнаты имеют одинаковую стоимость. Пирату в каждой комнате разрешается взять всего лишь один камень с собой и следовать в любую другую соседнюю с ней комнату. Каждую из комнат пират может посещать всего лишь один раз. Требуется составить алгоритм-программу определения маршрута посещения пиратом К комнат лабиринта таким образом, чтобы он набрал камней на максимально возможную сумму. Входные и выходные данные: В первой строке входного файла содержатся числа N,M,K. В следующих N строках располагается матрица N*M лабиринта. Каждый элемент матрицы представляется стоимостью камня соответствующей комнаты. Маршрут начинается с левой верхней угловой комнаты лабиринта. Выходные данные: содержат единственное число, равное общей стоимости взятых с собой камней.
Пример файла исходных данных:
3 4 7
1 1 1 1
1 1 2 1
1 1 2 3

И вот что я написал.
Пират в подземелье.
Код:
uses crt; 
Const k=100; 
      dx:array[1..4] of Integer=(1,0,-1,0); 
      dy:array[1..4] of Integer=(0,1,0,-1); 
Type mas=array[0..k,0..k]of Integer; 
     mas2=array[0..k,0..k]of boolean; 
 var n,m,sum1,sum,col:integer; 
     A:mas; 
     B:mas2; 
  Procedure Init(z:string); 
   Var f:text; 
       i,j:integer; 
   Begin 
  Assign(f,z); 
  Reset(f); 
  FillChar(A,SizeOf(A),0); 
  FillChar(B,SizeOf(B),true); 
  ReadLn(f,n,m,col); 
   for i:=1 to n do 
     begin 
    for j:=1 to m do 
     Read(f,A[i,j]); 
     ReadLn(f); 
     end; 
  Close(f); 
   End; 
 Procedure Solve(x,y,p:integer); 
  var i,j:integer; 
 begin 
If p=0 then begin 
     If sum>sum1 then 
     sum1:=sum; 
           end 
  Else begin 
     For i:=1 to 4 do 
      If (A[x+dx,y+dy[i}}>0)and B[x+dx,y+dy[i}} then 
        begin 
       sum:=sum+A[x+dx,y+dy[i 
       B[x+dx,y+dy[i}}:=false; 
       Solve(x+dx,y+dy,p-1); 
       sum:=sum-A[x+dx,y+dy[i}}; 
       B[x+dx,y+dy[i}}:=true; 
        end; 
       end; 
 end; 
begin 
 clrscr; 
  Init('C:\matrica.txt'); 
  sum1:=0; sum:=A[1,1]; 
  Solve(1,1,col); 
  WriteLn('Result= ',sum1); 
 readkey; 
end.
И вот в чем моя проблема,при нажатии Сtrl+F9 Вмество выходных данны черное окно и тухнет.

Последний раз редактировалось sawel23; 27.05.2010 в 14:20. Причина: опечатка
sawel23 вне форума Ответить с цитированием
Старый 27.05.2010, 14:06   #2
sawel23
Новичок
Джуниор
 
Регистрация: 27.05.2010
Сообщений: 5
По умолчанию

Я вот думаю что он не может считать матрицу с диска С но не пойму как сделать так чтобы прочитал ее.Возможно есть другой способ ее туда запихнуть?Выглядит она так

3 4 7
1 1 1 1
1 1 2 1
1 1 2 3
но это всего лишь догадки помогите кто шарит запустить прогу.
sawel23 вне форума Ответить с цитированием
Старый 27.05.2010, 14:12   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Как бы Alt+F9 это проверка программы на ошибки, а не запуск. Запуск это
Ctrl+F9
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.05.2010, 14:19   #4
sawel23
Новичок
Джуниор
 
Регистрация: 27.05.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
Как бы Alt+F9 это проверка программы на ошибки, а не запуск. Запуск это
Ctrl+F9
Я понимаю,просто опечатался прога не запускается тупо черное окно и вылетает из проги..
sawel23 вне форума Ответить с цитированием
Старый 27.05.2010, 14:31   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

попробуй вместо readkey readln
_-Re@l-_ вне форума Ответить с цитированием
Старый 27.05.2010, 14:37   #6
sawel23
Новичок
Джуниор
 
Регистрация: 27.05.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от _-Re@l-_ Посмотреть сообщение
попробуй вместо readkey readln
не,не катит вобще ошибку выдает..
sawel23 вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме 20000 рублей в месяц

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в алгоритме?Выдает ошибку после компиляции. Aerial Общие вопросы C/C++ 2 12.05.2010 15:52
Выдает ошибку но работает.Что не так? Студло Помощь студентам 1 01.03.2010 09:12
что не так?!не могу найти ошибку! nika_tanya Общие вопросы C/C++ 4 26.11.2009 11:34
Программа сортировки из учебника, запускаю её а пишет ошибку! Подскажите пожалуйста что не так! Алексей_xXx Помощь студентам 1 28.05.2009 19:11


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS