Ingen beskrivning

gmironov 0cf2d5f1d5 Обновить 'README.MD' 22 timmar sedan
.gitignore e932c196b8 venom 1 vecka sedan
README.MD 0cf2d5f1d5 Обновить 'README.MD' 22 timmar sedan

README.MD

Лабораторная работа по теме "массивы и циклы"

Задание №1 "Змейка"

 {
 Console.WriteLine("Введите число:");
 int N = int.Parse(Console.ReadLine());
 Console.WriteLine("Результат:");
 int[,] matrix = new int[N, N];

 int num = 1;
 for (int i = 0; i < N; i++)
 {
 if (i % 2 == 0)
 {
 for (int j = 0; j < N; j++)
 {
 matrix[i, j] = num++;
 }
 }
 else
 {
 for (int j = N - 1; j >= 0; j--)
 {
 matrix[i, j] = num++;
 }
 }
 }
 for (int i = 0; i < N; i++)
 {
 for (int j = 0; j < N; j++)
 {
 Console.Write(matrix[i, j] + " ");
 }
 Console.WriteLine();
 }

Результат:

 Введите число:
 4
 Результат:
 1 2 3 4
 8 7 6 5
 9 10 11 12
 16 15 14 13

Задание №2 "Художник"

{
    string[] mh = Console.ReadLine().Split(' ');
    int w = int.Parse(mh[0]);
    int h = int.Parse(mh[1]);
    int n = int.Parse(Console.ReadLine());

    bool[,] canvas = new bool[w, h];

    for (int i = 0; i < n; i++)
    {
        string[] rect = Console.ReadLine().Split(' ');
        int x1 = int.Parse(rect[0]);
        int y1 = int.Parse(rect[1]);
        int x2 = int.Parse(rect[2]);
        int y2 = int.Parse(rect[3]);

        for (int x = x1; x < x2; x++)
        {
            for (int y = y1; y < y2; y++)
            {
                canvas[x, y] = true;
            }
        }
    }

    int unpaintedArea = 0;
    for (int x = 0; x < w; x++)
    {
        for (int y = 0; y < h; y++)
        {
            if (!canvas[x, y])
            {
                unpaintedArea++;
            }
        }
    }
    Console.WriteLine("Незакрашенная часть холста:");
    Console.WriteLine(unpaintedArea);
}

Результат:

2 1
1
1 0 2 1
Незакрашенная часть холста:
1

Задание №3 "Миша и негатив"

 {
 string[] dimensions = Console.ReadLine().Split();
 int n = int.Parse(dimensions[0]);
 int m = int.Parse(dimensions[1]);

 string[] originalImage = new string[n];
 string[] generatedNegative = new string[n];

 for (int i = 0; i < n; i++)
 {
 originalImage[i] = Console.ReadLine();
 }

 Console.ReadLine();

 for (int i = 0; i < n; i++)
 {
 generatedNegative[i] = Console.ReadLine();
 }

 int errorCount = 0;
 for (int i = 0; i < n; i++)
 {
 for (int j = 0; j < m; j++)
 {
 char expectedPixel = originalImage[i][j] == 'B' ? 'W' : 'B';
 if (generatedNegative[i][j] != expectedPixel)
 {
 errorCount++;
 }
 }
 }
 Console.WriteLine("Количество ошибок");
 Console.WriteLine(errorCount);
 }

Результат:

 2 2
 WB
 BW

 WW
 BB
 Количество ошибок
 2

Задание №4 "База террорристов"

{
        Console.WriteLine("Найдите базу террористов в пустыне.");
        string[] baseSize = Console.ReadLine().Split();
        int nb = int.Parse(baseSize[0]);
        int mb = int.Parse(baseSize[1]);

        char[,] basePlan = new char[nb, mb];
        for (int i = 0; i < nb; i++)
        {
            string line = Console.ReadLine();
            for (int j = 0; j < mb; j++)
            {
                basePlan[i, j] = line[j];
            }
        }

        string[] desertSize = Console.ReadLine().Split();
        int nd = int.Parse(desertSize[0]);
        int md = int.Parse(desertSize[1]);

        char[,] desertMap = new char[nd, md];
        for (int i = 0; i < nd; i++)
        {
            string line = Console.ReadLine();
            for (int j = 0; j < md; j++)
            {
                desertMap[i, j] = line[j];
            }
        }

        int count = 0;
        for (int i = 0; i <= nd - nb; i++)
        {
            for (int j = 0; j <= md - mb; j++)
            {
                bool match = true;
                for (int k = 0; k < nb; k++)
                {
                    for (int l = 0; l < mb; l++)
                    {
                        if (basePlan[k, l] == '#' && desertMap[i + k, j + l] == '.')
                        {
                            match = false;
                            break;
                        }
                    }
                    if (!match) break;
                }
                if (match) count++;
            }
        }
        Console.WriteLine("Количество возможных положений базы террористов:");
        Console.WriteLine(count);
    }

Результат:

Найдите базу террористов в пустыне.
3 3
#..
#.#
#..
5 36
#......#........................#...
#.#....#.#...#.........#............
#......#.#...##....#...##......###..
.......#.....#...#.#...##........#.#
...................#.....#.......#..
Количество возможных положений базы террористов:
4

Задание №5 "Морской бой - 2"

{
     string[] input = Console.ReadLine().Split(' ');
     int n = int.Parse(input[0]);
     int m = int.Parse(input[1]);

     char[,] field = new char[n, m];
     for (int i = 0; i < n; i++)
     {
         string row = Console.ReadLine();
         for (int j = 0; j < m; j++)
         {
             field[i, j] = row[j];
         }
     }

     int count = 0;
     for (int i = 0; i < n; i++)
     {
         for (int j = 0; j < m; j++)
         {
             if (field[i, j] == '.')
             {
                 bool canPlace = true;
                 if (i > 0 && field[i - 1, j] == '*') canPlace = false;
                 if (i < n - 1 && field[i + 1, j] == '*') canPlace = false;
                 if (j > 0 && field[i, j - 1] == '*') canPlace = false;
                 if (j < m - 1 && field[i, j + 1] == '*') canPlace = false;

                 if (canPlace) count++;
             }
         }
     }

     Console.WriteLine(count);
 }

Результат:

4 3
***
...
...
***
0

Задание №6 "Проверка на сипатичность"

{
     int t = int.Parse(Console.ReadLine());
     for (int i = 0; i < t; ++i)
     {
         Solve();
     }
 }

 static void Solve()
 {
     string[] nm = Console.ReadLine().Split();
     int n = int.Parse(nm[0]);
     int m = int.Parse(nm[1]);

     int[,] grid = new int[n, m];
     for (int i = 0; i < n; ++i)
     {
         string[] row = Console.ReadLine().Split();
         for (int j = 0; j < m; ++j)
         {
             grid[i, j] = int.Parse(row[j]);
         }
     }

     bool pretty = true;
     for (int i = 0; i < n - 1; ++i)
     {
         for (int j = 0; j < m - 1; ++j)
         {
             if ((grid[i, j] == grid[i + 1, j] && grid[i, j] == grid[i, j + 1] && grid[i, j] == grid[i + 1, j + 1]))
             {
                 pretty = false;
                 break;
             }
         }
         if (!pretty) break;
     }

     Console.WriteLine(pretty ? "YES" : "NO");
 }

Результат:

3
1 1
0
YES
4 4
1 0 1 0
1 1 1 0
0 1 0 1
0 0 0 0
YES
3 3
0 0 1
0 0 1
1 1 1
NO