Форум программистов, компьютерный форум CyberForum.ru

Вывести текст в виде таблицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Работа sscanf http://www.cyberforum.ru/cpp-beginners/thread402313.html
Мне нужно распарсить файл с такими строками: Element1\tElement2\tElement3\tElement4\tElement5\n Element1\tElement2\tElement3\tElement4\tElement5\n Element1\tElement2\tElement3\tElement4\tElement5\n планировал сделать так: 1. считать строку из файла в буфер (fgets) 2. распарсить строку по другим буферам (sscanf)
C++ Занача. Структуры Горная вершина представлена названием, высотой в метрах, уровнем сложности восхождения на вершину. Среди некоторого кол-ва вершин отобрать вершины с высотой, не меньшей К м. Выбранные вершины отсортировать по возрастанию уровня сложности восхождения. Если нужных нет - вывести сообщение.(Реализовать через структуры). http://www.cyberforum.ru/cpp-beginners/thread402306.html
русский язык C++
Помогите пишу задачу,как сделать чтоб всё выводило на русском языке? какая функция? или фрагмент кода? cout<<"Dobavlenie informacii ob Clente"<<endl; если пишу cout<<"Добавление информации об клиенте "<<endl; выдаёт иероглифы(((
Избитая тема "Односвязный список" C++
Доброго времени суток. Конечно, я понимаю, что данная тема уже не однократно обсуждалась на этом форуме. Но сложилась такая ситуация, которая не как не укладывается у меня в голове. Наверное, из-за не достатка знаний. Вот код. #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <string.h> struct ZNAK{
C++ Определить, находится ли введенное с клавиатуры число в одномерном массиве http://www.cyberforum.ru/cpp-beginners/thread402286.html
Доброго дня, собственно учусь на специальности мало связанной с программированием да и в школе не было даже паскаля, нужна помощь в решении 4х задач на Си: 1. Написать программу, которая проверяет, находится ли введенное с клавиатуры число в одномерном массиве. 2. Написать программу, которая упорядочивает по возрастанию ту часть последовательности, которая находится между минимальным и...
C++ Контест "Массивы" Дан массив натуральных чисел из элементов. Необходимо заменить первый элемент, кратный , нулём. Формат входных данных В первой строке входного файла записано число . Во второй строке через пробел записаны натуральных чисел, не превосходящих , - элементы массива. Формат выходных данных Выведите в выходной файл элементы массива после требуемой замены. Примеры: Вход 10 1 2 3 4 5 6 7 8 9... подробнее

Показать сообщение отдельно
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.12.2011, 21:05     Вывести текст в виде таблицы
Возможно то, что вам нужно. Пример запускается и работает. Но сама ф-ия требует доделки. Всякие там проверки надо добавлять и т.п. Попробуйте скопировать код и запустить.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <algorithm>
#include <iostream>
#include <vector>
#include <string>
#include <list>
 
struct Column
{
  typedef std::vector<std::string> Values;
 
  std::string title;
  Values values;
};
typedef std::list<Column> ColumnsList;
 
bool StringLessByLength(const std::string& lhs, const std::string& rhs)
{
  return lhs.length() < rhs.length();
}
 
bool StringLessByValuesCount(const Column& lhs, const Column& rhs)
{
  return lhs.values.size() < rhs.values.size();
}
 
std::size_t GetColumnWidth(const Column& column)
{
  Column::Values::const_iterator maxLengthStr = std::max_element(column.values.begin(), column.values.end(), &StringLessByLength);
  return std::max(maxLengthStr->length(), column.title.length());
}
 
void PrintTable(const ColumnsList& columns, std::ostream& out)
{
  std::vector<std::size_t> columnWidths;
  std::transform(columns.begin(), columns.end(), std::back_inserter(columnWidths), &GetColumnWidth);
 
  { // Печатаем ячейки татлов
    std::string tableLine;
    ColumnsList::const_iterator columnIter = columns.begin();
    for (unsigned i = 0; i < columns.size(); ++i, ++columnIter)
    {
      const size_t columnWidth = columnWidths[i];
      const Column& column = *columnIter;
      std::string cell(columnWidth + 2, ' ');
      cell[0] = char(179);
      if (i == columns.size() - 1)
      {
        cell[cell.length() - 1] = char(179);
      }
      cell.replace(1, column.title.length(), column.title);
      tableLine += cell;
    }
    out << tableLine << std::endl;
  }
 
  { // Печатаем ячейки значений
    const size_t maxLines = std::max_element(columns.begin(), columns.end(),
      &StringLessByValuesCount)->values.size();
    for (size_t line = 0; line < maxLines; ++line)
    {
      std::string tableLine;
      ColumnsList::const_iterator columnIter = columns.begin();
      for (unsigned i = 0; i < columns.size(); ++i, ++columnIter)
      {
        const size_t columnWidth = columnWidths[i];
        const Column& column = *columnIter;
        std::string cell(columnWidth + 2, ' ');
        cell[0] = char(179);
        if (i == columns.size() - 1)
        {
          cell[cell.length() - 1] = char(179);
        }
        if (column.values.size() > line)
        {
          const std::string& value = column.values[line];
          cell.replace(1, value.length(), value);
        }
        tableLine += cell;
      }
      out << tableLine << std::endl;
    }
  }
}
 
int main()
{
  Column firstColumn;
  firstColumn.title = "First";
  firstColumn.values.push_back("value 1");
  firstColumn.values.push_back("value 1");
  firstColumn.values.push_back("value 1");
 
  Column secondColumn;
  secondColumn.title = "Second";
  secondColumn.values.push_back("value 2333");
  secondColumn.values.push_back("value 2333");
  secondColumn.values.push_back("value 2333");
 
  Column thirdColumn;
  thirdColumn.title = "Third";
  thirdColumn.values.push_back("value 3");
  thirdColumn.values.push_back("value 3");
  thirdColumn.values.push_back("xxx");
  thirdColumn.values.push_back("yyy");
  thirdColumn.values.push_back("adfsfadsfa");
  thirdColumn.values.push_back("rrrrr");
 
  Column oneMoreColumn;
  oneMoreColumn.title = "Third";
  oneMoreColumn.values.push_back("d");
  oneMoreColumn.values.push_back("1");
  oneMoreColumn.values.push_back("2");
 
  ColumnsList columns;
  columns.push_back(firstColumn);
  columns.push_back(secondColumn);
  columns.push_back(thirdColumn);
  columns.push_back(oneMoreColumn);
 
  PrintTable(columns, std::cout);
 
  return 0;
}
 
Текущее время: 12:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru