Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Пример 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!