Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Вывод ровных столбцов матрицы





Рассмотрим одну тонкость, связанную с выводом матриц, да и всех прочих таблиц. Изменим немного инициализацию матрицы:

 

const int m = 4, n = 5;

int matrix[m][n] = {

{1, 20, 50, 40, 3},

{5, 68, 7, 4, 60},

{1, 2, 57, 4, 3},

{9, 8, 7, 6, 0},

};

 

Затем выведем её на экран при помощи созданного выше кода и увидим, что столбцы матрицы окажутся неровными:

 

 

Эта проблема возникает из-за того, что некоторые элементы матрицы занимают одну позицию, а другие – две. Консольные шрифты являются моноширинными (ширина каждого символа одна и та же), поэтому для того, чтобы столбцы выводились ровно, нужно сделать так, чтобы ширина поля как-то дополнялась пробелами, если символ всего один.

Для этого существуют так называемые модификаторы вывода. Некоторые модификаторы называются флагами форматирования. В настоящий момент нас интересует модификатор, позволяющий задать ширину поля, которое отводится под выводимое значение. Он задаёт минимальную ширину поля, в которое выводится значение.

 

for (int i=0; i<m; i++) {

for (int j=0; j<n; j++) {

cout.width(2);

cout << matrix[i][j] << " ";

}

cout << endl;

}

 

 

По умолчанию пустые клетки заполняются пробелами, однако с помощью функции fill() можно задать любой другой:

 

for (int i=0; i<m; i++) {

for (int j=0; j<n; j++) {

cout.fill('*');

cout.width(2);

cout << matrix[i][j] << " ";

}

cout << endl;

}

 

 

Наконец, выравнивание ячеек можно задать по левому краю:

 

for (int i=0; i<m; i++) {

for (int j=0; j<n; j++) {

cout.setf(ios::left);

cout.fill('*');

cout.width(2);

cout << matrix[i][j] << " ";

}

cout << endl;

}

 

 

Date: 2015-09-02; view: 277; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию