Организовать квадрат из единиц в двумерной матрице - 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;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с стандартными функциями, генерацией случайных чисел и временем.
- Определяем константы H и W для размера матрицы.
- Создаем двумерный массив matr размером H x W и инициализируем его нулями.
- Заполняем матрицу случайными единицами, кроме выделенного квадрата.
- Выделяем квадрат в матрице, используя случайные координаты y и x, а также случайную сторону side.
- Устанавливаем значения выделенного квадрата равными единице.
- Выводим матрицу на экран.
- Возвращаем 0, чтобы указать, что программа успешно завершилась.