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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 19:34     Вывести текст в виде таблицы #1
подскажите пожалуйста как сделать таблицу!
это моя шапка таблицы

C++
1
2
3
4
5
6
7
8
9
void baza::output_izdelie()
{
    cout<<" -----------------------------------------------------------------------------"<<endl;
    cout<<" |Nazvanie Izdeliya|Kod izdeliya|Proba izdeliya|Razmer izdeliya|Cena izdeliya|"<<endl;
    cout<<" -----------------------------------------------------------------------------"<<endl;
    for(int i=0;i<count_izdelie;i++)
        my_izdelie[i]->output();
    system("pause");
}
это функция вывода

C++
1
2
3
void izdelie :: output()
{
cout<< " | "<<nazvanie_izdeliya<<"             |"<<kod_isdeliya<<"         |"<<proba_izdeliya<<"          | "<<razmer<<"       | "<<cena<<"        |"<<endl;
в выводе я пыталась посчитать количество пробелов в шапке и в выводе поставить столько же, но это бесполезно, введёшь больше символов и она опять сдвинется!

помогите пожалуйста что тут можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2011, 19:34     Вывести текст в виде таблицы
Посмотрите здесь:

C++ Как мне найти в тексте А текст в виде таблицы с четырьмя столбцами и др.?
[C++] вывести на экран в виде таблицы C++
Вычислить и вывести на экран в виде таблицы C++
C++ Вывести данные в виде таблицы
Ввести элементы двумерного массива с клавы С++.Нужно вывести его на экран в виде таблицы, в конце каждой строки надо вывести самый большой элемент C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.12.2011, 19:41     Вывести текст в виде таблицы #2
Попробуйте поиграть с std::setw(int), должно сработать.
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 19:43  [ТС]     Вывести текст в виде таблицы #3
кто то знает как сделать? может через масив подсчитывать пробелы? ток я не знаю как это реализовать(((

Добавлено через 42 секунды
конкретнее куда вставлять?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.12.2011, 19:51     Вывести текст в виде таблицы #4
Тут все расписано.
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 19:59  [ТС]     Вывести текст в виде таблицы #5
всё бы хорошо я прочитала но не пойму куда вставлять это в своей задаче там пример не оч понятный я не пойму как мне по своим данным это записать(((
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
08.12.2011, 20:06     Вывести текст в виде таблицы #6
делай примерно таким образом:
C++
1
2
3
4
std::cout.width(14);
std::cout << "Товар" << "Срок годности" << "Стоимость" << '\n';
for (int i=0; i<n; i++)
std::cout << struct[i].field1 << struct[i].field2<< struct[i].field3 << '\n';
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 20:42  [ТС]     Вывести текст в виде таблицы #7
C++
1
2
3
4
5
6
7
int i;
int n;
std::cout.width(14);
std::cout << "Название изд" << "код" << "проба" << "размер" << "цена" << '\n';
for (int i=0; i<n; i++)
std::cout << struct[i].nazvanie_izdeliya << struct[i].kod_isdeliya<< struct[i].proba_izdeliya
<< struct[i].razmer<< struct[i].cena<< '\n';
|error: expected primary-expression before 'struct'|

|error: expected ';' before 'struct'|

что за ошибки? не пойму((((

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

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;
}
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 21:12  [ТС]     Вывести текст в виде таблицы #9
а что предыдущим примером? что я спрашивала что за ошибки?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.12.2011, 21:16     Вывести текст в виде таблицы #10
struct - ключевое слово. использовать где и как попало его нельзя.
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
08.12.2011, 21:27  [ТС]     Вывести текст в виде таблицы #11
как исправить ошибки? его задать как то надо? или может я какую то библиотеку не задала?

Добавлено через 8 минут
как исправить ошибки? задать как то стракт? или я не подключила нужную библиотеку?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.12.2011, 21:32     Вывести текст в виде таблицы #12
вместо struct подставляете имя своей переменной типа izdelie, т.е. my_izdelie
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2011, 00:38     Вывести текст в виде таблицы
Еще ссылки по теме:

C++ Вывести массив на экран в виде таблицы, в конце каждой строки надо вывести минимальный элемент
Вывести информацию в виде таблицы C++
Вывести в виде таблицы значения функции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Britney
0 / 0 / 0
Регистрация: 23.06.2010
Сообщений: 74
09.12.2011, 00:38  [ТС]     Вывести текст в виде таблицы #13
если пишу izdelie то выдаёт это:
|error: expected primary-expression before '[' token|

поменяла на изделие всё равно ошибка(((

если my_izdelie то эту ошибку(((((

|error: 'my_izdelie' was not declared in this scope|

Добавлено через 30 минут
кто то может чёто норм сказать? нужно домучать таблицу!)))

Добавлено через 2 часа 21 минуту
помогите вывод сделать в таблицу сделать хоть кто то, или скажите что за ошибки!!!
пожалуйста
Yandex
Объявления
09.12.2011, 00:38     Вывести текст в виде таблицы
Ответ Создать тему
Опции темы

Текущее время: 02:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru