Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/41: Рейтинг темы: голосов - 41, средняя оценка - 4.68
К.О.
 Аватар для KaiTheCat
534 / 499 / 344
Регистрация: 26.03.2011
Сообщений: 1,141

Матрица. морской бой

09.04.2011, 14:23. Показов 8049. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу подсчета одно-, двух-, трех- и четырехпалубных кораблей, расположенных на поле игры "Морской бой".
Корабли не могут быть изогнутыми и друг с другом не соприкасаются. Поле для игры задается в виде матрицы NxN, каждый элемент которой равен либо 0, если клетка свободна, либо 1, если занята.
Формат входных данных
Первая строка входного файла содержит число N - количество строк и столбцов матрицы.
Следующие N строк содержат по N значений элементов матрицы, разделенных пробелами.
Формат выходных данных
Одна строка, содержащая 4 числа - количество одно-, двух-, трех- и четырехпалубных кораблей.
Пример входного и выходного файла:
input
5
1 1 1 0 1
0 0 0 0 1
1 0 1 0 1
0 0 1 0 1
1 0 0 0 0
output
2 1 1 1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.04.2011, 14:23
Ответы с готовыми решениями:

«Морской бой» - на Pascal
Имеется такой код. он отчасти рабочий, для начала напишу задание: «Морской бой» Первая строка входного файла INPUT.TXT содержит два...

Битва между офисами в морской бой
Само условие Битва между офисами Время: 1000ms, Память: 128MB, Сложность: 30%; Попытка: 11, Начислено баллов: 0 Среди офисных...

Морской бой: написать проверку для расстановки последнего корабля
program morskoi_boy ; var m, n: integer; a: array of char; f1, f2: text ; procedure vvod(n, m: integer ); var ...

10
последний из ворон
 Аватар для the_crow
111 / 111 / 63
Регистрация: 02.02.2011
Сообщений: 334
09.04.2011, 15:23
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
var n:integer;t:array[1..4] of byte;
    s:array[1..100,1..100] of byte;
    f:textfile;
 
procedure Schet(var i,j,k:integer);
var z1,z2:byte;
begin if s[i,j]=1 then
      begin s[i,j]:=0;
            if n>i then z1:=1 else z1:=0;
            if n>j then z2:=1 else z2:=0;
            case z1*s[i+1,j]*10+z2*s[i+1,j] of
               0:inc(t[k]);
               1:Schet(i,j+1,k+1);
             10:Schet(i+1,j,k+1);
            end;
     end;
end;
 
begin
assign(f,'input.txt');
reset(f);
readln(f,n);
for i:=1 to 4 do
t[i]:=0;
for i:=1 to n do
begin for j:=1 to n do
      read(f,s[i,j]);
      readln(f);
end;
close(f);
for i:=1 to n do
for j:=1 to n do
Schet(i,j,1);
assign(f,'output.txt');
rewrite(f);
for i:=1 to 4 do
write(f,t[k],' ');
close(f);
end.
Добавлено через 1 минуту
и я не знаю, правильно оно или нет=)
1
 Аватар для Small Lamer
143 / 143 / 141
Регистрация: 05.04.2011
Сообщений: 270
09.04.2011, 16:54
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
var a:array[1..100,1..100] of longint;
    d:array[0..4] of longint;
    n,i,j:longint;
procedure BFS(x,y,k:longint);
var c,c1:longint;
    f:boolean;
begin
a[x,y]:=-1;
f:=true;
for c:=-1 to 1 do
for c1:=-1 to 1 do
if c<>c1 then
  if (x+c<=n)and(x+c>=1)and(y+c1>=1)and(y+c1<=n)and(a[x+c,y+c1]=1)
    then begin BFS(x+c,y+c1,k+1);f:=false;end;
if f then inc(d[k]);
end;
 
begin
  assign(input,'input.txt');reset(input);
  assign(output,'output.txt');rewrite(output);
  readln(n);
  for i:=1 to n do
  for j:=1 to n do read(a[i,j]);
  for i:=1 to n do
  for j:=1 to n do
  if a[i,j]=1 then BFS(i,j,1);
  for i:=1 to 4 do write(d[i],' ');
end.
1
последний из ворон
 Аватар для the_crow
111 / 111 / 63
Регистрация: 02.02.2011
Сообщений: 334
09.04.2011, 18:04
А этот код точно работает? о_О
0
 Аватар для Small Lamer
143 / 143 / 141
Регистрация: 05.04.2011
Сообщений: 270
09.04.2011, 18:12
Уменя да...
0
К.О.
 Аватар для KaiTheCat
534 / 499 / 344
Регистрация: 26.03.2011
Сообщений: 1,141
11.04.2011, 16:51  [ТС]
Цитата Сообщение от Small Lamer Посмотреть сообщение
Pascal
1
2
3
4
5
6
7
readln(n); 
for i:=1 to n do 
for j:=1 to n do  read(a[i,j]); 
for i:=1 to n do 
for j:=1 to n do 
if a[i,j]=1 then BFS(i,j,1); 
for i:=1 to 4 do write(d[i],' ');

Pascal
1
2
3
4
5
6
7
readln(input, n); 
for i:=1 to n do 
for j:=1 to n do  read(input, a[i,j]); 
for i:=1 to n do 
for j:=1 to n do 
if a[i,j]=1 then BFS(i,j,1); 
for i:=1 to 4 do write(d[i],' ');
и она у мну считает все как однопалубные корабли
0
последний из ворон
 Аватар для the_crow
111 / 111 / 63
Регистрация: 02.02.2011
Сообщений: 334
11.04.2011, 16:57
а знаешь, почему не работает?! потому что я невнимательный=)
переписал, работает, проверил=)
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
var n:integer;t:array[1..4] of byte;
    s:array[1..100,1..100] of byte;
    f:textfile;
 
procedure Schet(i,j,k:integer);
var z1,z2:byte;
begin if s[i,j]=1 then
      begin s[i,j]:=0;
            if n>i then z1:=1 else z1:=0;
            if n>j then z2:=1 else z2:=0;
            case z1*s[i+1,j]*10+z2*s[i,j+1] of
               0:inc(t[k]);
               1:Schet(i,j+1,k+1);
             10:Schet(i+1,j,k+1);
            end;
     end;
end;
var i,j:integer;
begin
assign(f,'input.txt');
reset(f);
readln(f,n);
for i:=1 to 4 do
t[i]:=0;
for i:=1 to n do
begin for j:=1 to n do
      read(f,s[i,j]);
      readln(f);
end;
close(f);
for i:=1 to n do
for j:=1 to n do
Schet(i,j,1);
assign(f,'output.txt');
rewrite(f);
for i:=1 to 4 do
write(f,t[i],' ');
close(f);
end.
1
 Аватар для Small Lamer
143 / 143 / 141
Регистрация: 05.04.2011
Сообщений: 270
11.04.2011, 20:43
А умиеня все работает!!! Все тесты которые я придумал моя прога прошла...
Скажыте пожалста какои именно пример моя программа не проходит?
0
К.О.
 Аватар для KaiTheCat
534 / 499 / 344
Регистрация: 26.03.2011
Сообщений: 1,141
11.04.2011, 20:55  [ТС]
да я уж не помню
Помню только ответы: если в матрице было, к примеру, 9 единиц (не важно, какие там были корабли), то ответ был "9 0 0 0". хз мб у меня код был не так переписан
0
 Аватар для Small Lamer
143 / 143 / 141
Регистрация: 05.04.2011
Сообщений: 270
11.04.2011, 21:02
Цитата Сообщение от KaiTheCat Посмотреть сообщение
9 единиц (не важно, какие там были корабли)
Еслибы в матрице было девять одно ярусных короблеи...
0
К.О.
 Аватар для KaiTheCat
534 / 499 / 344
Регистрация: 26.03.2011
Сообщений: 1,141
11.04.2011, 21:26  [ТС]
Да нет, они разные были
Ims, видимо, мну криво переписал 8(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.04.2011, 21:26
Помогаю со студенческими работами здесь

Морской бой
Поле для игры в морской бой имеет размер N x N клеток. Клетки, занятые кораблями, содержат символ «X» (ASCII 88), а пустые клетки — символ...

Морской бой.
Хочу написать игру &quot;морской бой&quot;, Но прежде чем начинать хотелось бы глянуть на рабочие исходники других подобных прог. Все, что я нашел...

Модифицированный морской бой
Dim b(,) As Integer = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 0, 1, 1, 1, 0, 1, 0}, {0, 1, 1, 0, 0, 0, 0, 0, 0, 0}, {0, 1, 1, 0,...

Создать игру морской бой
нужно создать игру морской бой проверяю те,что есть,они не работают

Процедура стрельбы. Морской бой
Напишите пожалуйста процедуру стрельбы по случайному принципу без повторного выстрела в одно и то же место, но при по попадании во...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru