/**
* @file ThirdProject.cpp
* @autor Коваленко І. В. 515б
* @date 07.04.2023
* @brief Лабораторна робота №3, варіант 11
*
* Застосування вказівників. Завдання 5
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include "Module.h"
int main(void) {
//подключение языковых пакетов
setlocale(LC_ALL, "ru");
srand(time(NULL));
//создание переменных
int arr[MAX_SIZE][MAX_SIZE] = {0};
int size;
int g = 0;
//запрос на ввод
printf("Введите размера массива от 0 до 10: ");
//ввод
do {
g++;
if (g > 1)
printf("Ошибка. Введите данные от 0 до 10: \n");
scanf("%i", &size);
} while (size <= 0 || size > 10);
//заполнение массива
fill_array(&arr[0][0], size);
printf("\n");
//функция из задания
rand_upper_triangle(&arr[0][0], size);
//вывод массива
show_array(&arr[0][0], size);
//завершение программы
return 0;
}
#define PRIVATE static
#define PUBLIC
#define MAX_SIZE 10
/**
* Заполнение массива
*
* @param arr указатель на массив который нужно заполнить
* @param size указывает на размер массива
* @return 0, програма void, всегда возвращает ноль
*/
void fill_array(int* arr, int size);
/**
* Вывод массива на экран
*
* @param arr указатель на массив который нужно вывести на экран
* @param size указывает на размер массива
* @return 0, програма void, всегда возвращает ноль
*/
void show_array(int* arr, int size);
/**
* Заполняет верхний треугольник матрицы размером n x n случайними числами
*
* @param arr указатель на массив который нужно заполнить
* @param size указывает на размер массива
* @return 0, програма void, всегда возвращает ноль
*/
void rand_upper_triangle(int* arr, int size);
#include <stdio.h>
#include <stdlib.h>
#include "Module.h"
//заповнення массива нулями
PUBLIC void fill_array(int* arr, int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
*(arr + j + i * 10) = 0;
}
}
}
//вывод массива на экран
PUBLIC void show_array(int* arr, int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf(" %i", *(arr + j + i * 10));
}
printf("\n");
}
}
//чудо-юдо функция, условие сложное для понимания, но рабочее...
//заполняет ячейки массива так, чтобы при выводе матрицы n * n, числа выстраивали перевернутую пирамидку
PUBLIC void rand_upper_triangle(int* arr, int size) {
for (int i = 0; i < size; i++) { /* заполнение строк */
for (int j = 0; j < size * 0.5; j++) { /* заполнение ряда */
if((j > i && i <= j - 1 ) || (j < i && i >= size - j)) { /* заполнение ячеек поза пирамидкой нулями :/ */
*(arr + (i + j * 10)) = 0;
}
else /* заполнение пирамиды */
*(arr + (i + j * 10)) = (rand() % 9) + 1;
}
}
}