Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вывод матриц



Пример 4a. Вывод матрицы можно выполнить, используя управление курсором. Для этого в примере 1b достаточно заменить cin на cout.

Пример 4b. Кроме этого можно предложить следующий вариант вывода:

for (int i=0; i<n; i++)

{ printf("\n"); /* Перешли на новую строку экрана */

for (int j=0; j<m; j++) printf ("%5d", A[i][j]); }

При таком выводе числа столбцов будут выровнены благодаря наличию формата %5d, т. е. независимо от количества цифр в числах матрицы они будут выводиться друг под другом. В этом фрагменте важно место оператора printf("\n"). Если символ “\n” записать во внутреннем цикле printf ("\n%5d", A[i][j]); то в каждой строке экрана будет выводиться по одному числу. Необходимо также обратить внимание на расстановку фигурных скобок. Во внешнем цикле for в его теле два оператора: переход на новую строку и внутренний цикл for. Поэтому соответствующая пара скобок обязательна. Во внутреннем цикле один оператор вывода printf, поэтому фигурные скобки для него отсутствуют.

Иногда для наглядности целесообразно элементы матрицы в зависимости от условия выводить разным цветом.

Пример 5. Положительные числа вывести цветом C1 на фоне C2, а отрицательные и нулевые — наоборот, цветом С2 на фоне С1, где С1 и С2 — целые числа, определяющие цвет.

void MyColors (int C1, int C2)

{ textcolor(C1); textbackground(C2); }

int main()

{ const n=4,m=6; float A[n][m]; randomize();

for (int i=0; i<n; i++)

for (int j=0; j<m; j++)

A[i][j]=(random(50)-40)/100. + random(5);

for (int i=0; i<n; i++)

{ cprintf(“\n\r”);

for (int j=0; j<m; j++)

{ // Установка цветов

if (A[i][j]>0) MyColors(2,15); else MyColors(15,2);

cprintf ("%7.2f", A[i][j]); }

} getch(); return 0; }

Заметим, что при “цветном” выводе с помощью cprintf для перехода в начало следующей строки недостаточно одного символа ‘\n’, а надо использовать и управляющий символ ‘\r’.Стандартные функции textcolor и textbackground устанавливают цвет выводимых символов и цвет фона в текстовом режиме. Для “цветного” вывода вместо printf или cout необходимо использовать функцию cprintf.

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

Пример 6. Пусть заданы константы n, m и k, матрицы A[n][m] и D[n][k] и одномерный массив (вектор) b[n]. Слева выведем матрицу A цветом С1, далее, правее — одномерный массив b в столбец по одному элементу цветом С2 и, наконец, ещё правее — матрицу D цветом C3 в обратном порядке, т. е. сначала (n–1) –ю строку, затем (n–2)– ю и так далее, 0 –ю строку.

void MyC(int C) { textcolor(C); }

int main() { textbackground(1); clrscr();

const n=4, m=6, k=5; float b[n]; int D[n][k], A[n][m]; randomize();

for (int i=0; i<n; i++) { b[i]=random(m+k)/10.;

/* Можно по–другому: b[i]=(float)i / 10; */

for (int j=0; j<m; j++) A[i][j]= random(50)-100;

// Все элементы отрицательные

for (int j=0; j<k; j++) D[i][j]= random(500)+200;

// Все элементы положительные

}

MyC(10); cprintf(" Matrix A ");

MyC(11); cprintf(" Vector b");

MyC(15); cprintf(" Matrix D\n");

for (int i=0; i<n; i++) { cout<<endl;

/* Вывод i –й строки матрицы A */

MyC(10); for (int j=0; j<m; j++) cprintf ("%4d", A[i][j]);

MyC(11); /* Вывод одного i –го элемента вектора b */

cprintf (" %6.1f ", b[i]);

/* Вывод строк матрицы D в обратном порядке */

MyC(15); for (int j=0; j<k; j++)

cprintf ("%5d", D[n-1-i][j]); }

getch(); return 0;

}

Упражнение. Написать второй вариант этой же программы, в которой используется функция gotoxy. Сначала выводим всю матрицу A, затем возвращаемся на первую строку и выводим в столбец вектор b и, наконец, в обратном порядке выводим матрицу D.





Дата публикования: 2015-02-18; Прочитано: 319 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...