Системное программирование >

Системное программирование

2022-2023 учебный год

Практические занятия

Практика 7
Решение задач на двумерные массивы

1. Двумерный массив задан в виде константы:
#define ROWS 2
#define COLS 3

// C++
//const unsigned char ROWS = 2;
//const unsigned char COLS = 3;
int m[ROWS][COLS] = {{11, 12, 13},
                     {21, 22, 33}
                    };
Выведите массив в виде матрицы ROWS x COLS.

2. Создайте двумерный массив размером 10 на 10 элементов и заполните 
его случайными числами в диапазоне от -100 до 100. 
Найдите среднее арифметическое элементов побочной диагонали.

3. Создайте двумерный массив размером 10 на 10 элементов и заполните 
его случайными числами в диапазоне от -100 до 100. 
Замените значения элементов массива, расположенных выше главной 
диагонали нулями.
Выведите матрицу до и после изменений.

4. Создайте двумерный массив размером 10 на 10 элементов и заполните 
его случайными числами в диапазоне от -100 до 100. 
Найдите сумму элементов главной диагонали.

5. Создайте двумерный массив размером 10 на 10 элементов и заполните 
его случайными числами в диапазоне от -100 до 100. 
Замените значения элементов массива, расположенных ниже главной 
диагонали нулями.
Выведите матрицу до и после изменений.

6. Дополнительное задание. Программа должна построить столбчатую диаграмму, 
по примеру диаграмм в электронных таблицах. 
В массиве хранится цвет столбца и его высота, в первой и второй колонках соответсвенно. 

Библиотека TXLib.
https://github.com/ded32/TXLib
https://github.com/ded32/TXLib/releases
https://github.com/ded32/TXLib/releases/download/0173a/TXLib-v0173a-rar.exe
http://storage.ded32.net.ru/Lib/TX/TXUpdate/Doc/HTML.ru/

Пример 6

#define NUM_RECT 7
#include <stdio.h>
#include "TXLib.h"
 
int main() {
	printf("Test v3.4: OK.\n");
	int left0  = 100;
	int left   = left0;
	int top    = 100;
	int width  = 50;
	int height = 100;
	int right  = left + width;
	int bottom = top + height;
	int padding = 10;
	txCreateWindow (800, 600);
        txSetFillColor(TX_WHITE);
        txClear();
        txSetFillColor(TX_LIGHTGREEN);

	for (int i=0; i<NUM_RECT; i++) {
	  left = left0 + i * (width + padding);
	  right  = left + width;
	  printf("left: %d\n", left);
          txRectangle(left, top, right, bottom);
	}
	return 0;
}

7. Дополнительное задание. Матрица случайным образом заполняется 0 и 1. 
Программа выводит матрицу на экран. 
С помощью библиотеки TXLib программа строит соответствующие две матрицы, которая 
состоит из квадратов, так что если в массиве - 0, то квадрат - черный, если - 1, 
то - белый. Вторая матрица - инверсна первой. 

8. Дополнительное задание. В массиве хранятся шестнадцатеричные коды. 
Программа записывает в матрицу соответствующие двоичные коды, 0 и 1 в каждый 
элемент двумерного массива. Массив и матрица выводятся на экран. 
С помощью библиотеки TXLib программа строит соответствующие две матрицы, которая 
состоит из квадратов, так что если в массиве - 0, то квадрат - черный, если - 1, 
то - белый. Вторая матрица - инверсна первой. 

9. Дополнительное задание. Программа должна построить круговую диаграмму, 
по примеру диаграмм в электронных таблицах. 
В массиве хранится цвет сектора и его размер его центрального угла, в первой 
и второй колонках соответсвенно. 

Справка:
Программирование на Си в Linux

1. Запуск Oracle VM VirtualBox.
2. Старт ubuntu2020_113.
3. Запуск Terminal.
4. В папке /home/test создать текстовый файл
в текстовом редакторе mcedit:
mcedit test.c
5. Набрать test.c, сохранить F2, выход из редактора F10.
#include <stdio.h>
int main() {
  printf("Test1 OK");
  return 0;
}

5. В теримнале перейти в папку /home/test:
cd ~/test
6. Проверить по списку файлов в папке наличие файла test.c.
В терминале вывести список файлов:
ls -l
7. В терминале cкомпилировать файл test.c
gcc test.c
8. Проверить по списку файлов, что после компиляции 
в папке test появился новый файл a.out.
В терминале вывести список файлов:
ls -l
9. Запустить на исполнение файл a.out.
В терминале набрать команду:
./a.out

Работа в консоли
1. Переключение в консоль: Ctrl + F3 или Alt + F3.
2. Возвращение в xWindow: Alt + F7

Компиляция в 2 этапа
gcc -c test.c
gcc test.o -o myprog1
./myprog1

Установка коллекции компиляторов GNU Compiler Collection, GCC.
sudo apt update
sudo apt upgrade
sudo apt install build-essential

Установка файлового менеджера Midnight Commander, mc, редактора mcedit
sudo apt update
sudo apt upgrade
sudo apt install mc

  1. PDF stolyarov.info — Программирование: введение в профессию. Том 2: низкоуровневое программирование.
  2. stolyarov.info — Программирование: введение в профессию. Том 2: низкоуровневое программирование.
  3. stolyarov.info — Основы программирования.
  4. stolyarov.info — Основы программирования.