это школьное задание. Я пытаюсь это сделать с 9 утра, но в процессе я потерялся. Теперь я забыл; объявляя что-то. Без разницы. Как видите, моя проблема заключается в следующем. Я подошел к этому моменту. Как вы можете видеть из разницы output1, моя программа перебирает саму себя, я попытаюсь описать это на английском sh: Так, например, он перебирает H в I, если положение выглядит следующим образом: IHH он повторяет оба H в Я, это дополнительный ход. Для лучшего понимания проверьте ожидаемый результат 1 и результат 1 Я беру
МОДЕЛИРОВАНИЕ ЗАРАЖЕННОГО ЗАБОЛЕВАНИЯ
Ваша задача - смоделировать процесс заражения инфекционным заболеванием. Окружение будет представлено в виде сетки 10x10. Каждая ячейка сетки будет содержать один из символов «H», «I» и «-», где «H» обозначает здорового человека, «I» - инфицированного человека. '-' означает, что эта ячейка никем не занята; другими словами, он пуст.
На каждом этапе моделирования (для каждого поколения) инфицированный человек заразит всех своих близких здоровых людей. Они могут заразиться только в направлении вверх, вниз, вправо и влево. Диагональное заражение невозможно.
Количество шагов моделирования будет предоставлено в качестве входных данных, и вы запустите моделирование соответственно. Вы распечатаете состояние сетки после завершения последнего шага моделирования.
При вычислении следующего поколения вы будете учитывать только состояние ПРЕДЫДУЩЕГО поколения.
ФОРМАТ ВВОДА:
После каждой строки сетки будет отображаться символ новой строки '\ n'. После чтения таблицы вы должны прочитать количество симуляций на входе.
ВХОД И ВЫВОД ОБРАЗЦА:
INPUT 1:
--IHH---I-
-H--------
----------
----H-----
----IH----
----H-----
----H-----
-H--------
---------I
-HI--H---I
1
ОЖИДАЕМЫЙ ВЫХОД 1:
--IIH---I-
-H--------
----------
----I-----
----II----
----I-----
----H-----
-H--------
---------I
-II--H---I
ВЫХОД Я ПОЛУЧИ 1
--III---I-
-H--------
----------
----I-----
----II----
----I-----
----I-----
-H--------
---------I
-II--H---I
ВХОД 2:
--IHH---I-
-H--------
----------
----H-----
----IH----
----H-----
----H-----
-H--------
---------I
-HI--H---I
3
ОЖИДАЕМЫЙ ВЫХОД 2:
--III---I-
-H--------
----------
----I-----
----II----
----I-----
----I-----
-H--------
---------I
-II--H---I
ВЫХОД 2 Я ПОЛУЧИ
--III---I-
-H--------
----------
----I-----
----II----
----I-----
----I-----
-H--------
---------I
-II--H---I
И это код, который я написал для него:
#include <stdio.h>
int main()
{
char x;
char grid[10][10] = {0};
int i,j,n,c;
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10 ; j++)
{
scanf(" %c", &x);
grid[i][j] = x;
}
}
c = 1;
scanf("%d",&n);
do
{
for(i = 0; i < 10 ; i++)
{
for(j = 0 ; j < 10 ; j++ )
{
if (grid[i][j] == 'I' && grid[i][j+1] == 'H')
{
grid[i][j+1] = 'I';
}
if (grid[i][j] == 'I' && grid[i][j-1] == 'H' && j>0)
{
grid[i][j-1] = 'I';
}
if (grid[i][j] == 'I' && grid[i+1][j] == 'H')
{
grid[i+1][j] = 'I';
}
if (grid[i][j] == 'I' && grid[i-1][j] == 'H' && i>0)
{
grid[i-1][j] = 'I';
}
}
}
c++;
}
while(c<n);
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10 ; j++)
{
printf("%c",grid[i][j]);
}
printf("\n");
}
printf("\n");
return 0;
}