ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Помогите с переводом из Pascal в C++!
  #1  
Старый 27.05.2007, 16:50
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию Помогите с переводом из Pascal в C++!

Задача:

Прямоугольный садовый участок шириной N и длиной M метров разбит на квадраты со стороной 1 метр. На этом участке вскопаны грядки. Грядкой называется совокупность квадратов, удовлетворяющая таким условиям:
• из любого квадрата этой грядки можно попасть в любой другой квадрат этой же грядки, последовательно переходя по грядке из квадрата в квадрат через их общую сторону;
• никакие две грядки не пересекаются и не касаются друг друга ни по вертикальной, ни по горизонтальной сторонам квадратов (касание грядок углами квадратов допускается).
Подсчитайте количество грядок на садовом участке.
Ограничения: 1 <= N, M <= 200, время 1 с.
Ввод из файла beds.in. В первой строке находятся числа N и M через пробел, далее идут N строк по M символов. Символ # обозначает территорию грядки, точка соответствует незанятой территории. Других символов в исходном файле нет.
Вывод в файл beds.out. Вывести одно число - количество грядок на садовом участке.
Примеры
Ввод 1
5 10
##......#.
.#..#...#.
.###....#.
..##....#.
........#.
Вывод 1
3

Код проги на Pascal:

Код:
{
Written by Fyodor Menshikov 26.01.2004
14:46-14:55
}
{$R+,Q+}
var
   c:array[0..201,0..201]of char;
type
   arr=array[1..40000]of byte;
var
   first,last:word;
   ii,jj:^arr;

   procedure put(i,j:integer);
   begin
      if c[i,j]='#' then begin
         inc(last);
         ii^[last]:=i;
         jj^[last]:=j;
         c[i,j]:='.';
      end;
   end;

   procedure get(var i,j:integer);
   begin
      i:=ii^[first];
      j:=jj^[first];
      inc(first);
   end;

   procedure paint(i,j:integer);
   begin
      first:=1;
      last:=0;
      put(i,j);
      while first<=last do begin
         get(i,j);
         put(i+1,j);
         put(i-1,j);
         put(i,j+1);
         put(i,j-1);
      end;
   end;

var
   n,m,i,j,count:integer;
begin
   new(ii);
   new(jj);
   assign(input,'beds.in');
   reset(input);
   assign(output,'beds.out');
   rewrite(output);
   readln(n,m);
   for i:=0 to n+1 do
      for j:=0 to m+1 do
         c[i,j]:='.';
   for i:=1 to n do begin
      for j:=1 to m do
         read(c[i,j]);
      readln;
   end;
   count:=0;
   for i:=1 to n do
      for j:=1 to m do
         if c[i,j]='#' then begin
            paint(i,j);
            inc(count);
         end;
   writeln(count);
end.
Если можно, то опишите что делает прога, а то я pascal не знаю, а если пойму что там делать, то можно и блок схему нарисовать и прогу перевести. Ну а если не в лом, то от непосредственной помощи с переводом не откажусь .
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПомогитЕ !!! подалуста найти кряк гейлордфакерЪ Болталка 2 30.08.2007 14:48
ПоМоГиТе! ПЛЗ!!! farik.aka E-Mail 1 17.09.2006 13:00
www.chat.love4u.ru - помогите получить прова админа! airwil Чаты 4 30.04.2006 15:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ