Процедуры. Шахматная задача

dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

dimka писал(а):Все равно нет такой кнопки у меня...(
А другие рисунки отображаются?
Нет религии выше истины
dimka
Сообщения: 21
Зарегистрирован: 10 мар 2009, 18:42
Откуда: Москва
Контактная информация:

dr.Jekill писал(а):А другие рисунки отображаются?
Да, отображабтся.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Обсуждение зеленой кнопки я удалил.
dimka получил разъяснения в публичных сообщениях в его профиле. Дальнейшая дискуссия по поводу зеленой кнопки будет при необходимовсти там.
dimka
Сообщения: 21
Зарегистрирован: 10 мар 2009, 18:42
Откуда: Москва
Контактная информация:

dr.Jekill писал(а):

Код: Выделить всё

uses crt;
var stroka,stolbec:integer;
procedure horse(n,m:byte);
var doska:array[1..8,1..8] of char;
i,j:byte;
f:text;name:string;
begin
for i:=1 to 8 do
for j:=1 to 8 do
 begin
  if ((abs(i-n)=2) and (abs(j-m)=1))
  or ((abs(j-m)=2) and (abs(i-n)=1))
  then doska[i,j]:='*'
  else doska[i,j]:='0';
 end;
doska[n,m]:='K';
writeln('Zadaite imia i put dlia rezultiruiuschego faila: ');
readln(name);
writeln;
if length(name)=0 then name:='c:/f_result.txt';
assign(f,name);
rewrite(f);
for i:=1 to 8 do
 begin
  j:=0;
  repeat
   j:=j+1;
   write(f,doska[i,j],' ');
   write(doska[i,j],' ');
  until j=8;
  writeln(f);
  writeln;
 end;
writeln;
writeln('Resultaty zapisanny v fail ',name);
readln;
end;
begin
repeat
clrscr;
writeln('Nomer stroki-> ');
readln(Stroka);
writeln('Nomer stolbca-> ');
readln(Stolbec);
until (stroka>0) and (stroka<=8) and (stolbec>0) and (stolbec<=8);
horse(stroka,stolbec);
end.
Только что заметил, что в результирующем файле не выводится 8 строка.
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Да и правда. Интересно, почему на экране выводит?
Нет религии выше истины
dimka
Сообщения: 21
Зарегистрирован: 10 мар 2009, 18:42
Откуда: Москва
Контактная информация:

dr.Jekill писал(а):Да и правда. Интересно, почему на экране выводит?
Вот и мне интересно... Вроде все нормально?!?...
dimka
Сообщения: 21
Зарегистрирован: 10 мар 2009, 18:42
Откуда: Москва
Контактная информация:

Нашел ошибку. Надо было написать close(f);

Код: Выделить всё

program pr1;
var stroka, stolbec:byte;
procedure horse(n,m:byte);
var doska:array[1..8,1..8] of char; i,j:byte; f:text; name:string;
begin
 for i:=1 to 8 do
 for j:=1 to 8 do
  begin
   if (((abs(i-n)=2) and (abs(j-m)=1)) or ((abs(j-m)=2) and (abs(i-n)=1))) then
    doska[i,j]:='*' else doska[i,j]:='0';
  end;
 doska[n,m]:='K';
 writeln('zadaite imya i put dlya rezultiruyushego faila: ');
 readln(name);
 writeln;
 if length(name)=0 then name:='c:/f_result.txt';
 assign(f,name);
 rewrite(f);
 for i:=1 to 8 do
 begin
  for j:=1 to 8 do
  begin
   write(f,doska[i,j],'  ');
   write(doska[i,j],'  ');
  end;
  writeln(f);
  writeln;
 end;
 close(f);
 writeln;
 writeln('Rezultat v faile  ', name);
 readln;
 end;
 begin
  repeat
  writeln('nomer stroki ');
  readln(stroka);
  writeln('nomer stolbca ');
  readln(stolbec);
  until (stroka>0) and (stroka<=8) and (stolbec>0) and (stolbec<=8);
  horse(stroka,stolbec);
 end.
Ответить