Организовать квадрат из единиц в двумерной матрице - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задали юнит-тест к dll'ке написать. Суть функции заключается в том, что она должна в матрице образовать квадрат из единиц по заданным координатам горизонтали, вертикали левого верзнего угла квадрата и длины стороны квадрата. Но моя аналогичная функция даже саму матрицу не изменяет(все значения после окончания функции остаются равны крайнему порогу значения int)...и в чем дело не пойму=(. Вот собственно код!
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int matr[30][30];
    int sizeofsquare;
    int indexofcornerH;                                 
    int indexofcornerW;                                 
    int Hor;
    int Wer;

    scanf ("%d", &sizeofsquare);
    scanf ("%d", &indexofcornerH);
    scanf ("%d", &indexofcornerW);
    Hor=indexofcornerH+sizeofsquare;
    Wer=indexofcornerW+sizeofsquare;
    
        for (int i=indexofcornerH;i<Hor;i++)
        {
            for (int j=indexofcornerW;j<Wer;j++)
            {
                if (i==indexofcornerH || j==indexofcornerW || i==Hor || j==Wer)
                {
                    matr[i][j]=1;
                }
                else 
                {
                    matr[i][j]=0;
                }
 
            }
        }

    for (int i=0;i<30;i++)
    {
        for (int j=0;j<30;j++)
        {
            printf ("%d", matr[i][j]);
        }
        printf ("\n");
    }
    return 0;
}

Решение задачи: «Организовать квадрат из единиц в двумерной матрице»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main(int argc, char* argv[]) {
  srand(time(NULL));
  const int H = 10;
  const int W = 10;
  int matr[H][W];
  int i, j;
 
  for (i = 0; i < H; ++i) {
    for (j = 0; j < W; ++j)
      printf("%4d", matr[i][j] = 100 + rand() % 100);
    printf("\n");
  }
 
  int y = rand() % H / 2;
  int x = rand() % W / 2;
  int side = rand() % (((H < W) ? H : W ) / 2) + 2;
  printf("At (y = %d / x = %d), side: %d\n", y, x, side);
 
  for (i = y; i < y + side; ++i)
    for (j = x; j < x + side; ++j)
      matr[i][j] = 0;
  matr[y][x] = matr[y + side - 1][x] =
  matr[y][x + side - 1] = matr[y + side - 1][x + side - 1] = 1;
 
  for (i = 0; i < H; ++i) {
    for (j = 0; j < W; ++j)
      printf("%4d", matr[i][j]);
    printf("\n");
  }
  return 0;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с стандартными функциями, генерацией случайных чисел и временем.
  2. Определяем константы H и W для размера матрицы.
  3. Создаем двумерный массив matr размером H x W и инициализируем его нулями.
  4. Заполняем матрицу случайными единицами, кроме выделенного квадрата.
  5. Выделяем квадрат в матрице, используя случайные координаты y и x, а также случайную сторону side.
  6. Устанавливаем значения выделенного квадрата равными единице.
  7. Выводим матрицу на экран.
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы