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

Дейтел - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Парадокс http://www.cyberforum.ru/cpp-beginners/thread852521.html
Назрел вопрос. Релизовывал сортировку слиянием, далее при тестировании, точнее при замерах времени работы, наткнулся на удивительную вещь: вот код мейна номер один: void main() { const int N = 200000; int A; int F;
C++ Ошибка Run-Time Check Failure #3 - The variable 'chcount' is being used without being initialized. Run-Time Check Failure #3 - The variable 'chcount' is being used without being initialized. Что за ошибка? http://www.cyberforum.ru/cpp-beginners/thread852516.html
Статическая линковка C++
Добрый вечер. Прочитал что бы екзешка запускалась на любом компьютере нужно сделать статическую линковку. То есть прикрепить к екзешнику необходимые библиотеки. Но не смог нагуглить как именно это сделать (microsoft visual studio 2010). Помогите пожалуйста.
Слова ONE TWO и тд заменить цифрами 1 2 итд C++
От 0 до 9. И вообщем то у меня почти все написано, если бы не одно большое НО - по заданию эту программу необходимо реализовать при помощи вложенных структур (структура в структуре), но мне не понятно, куда в принципе тут можно прицепить вложенные структуры? Для чего они тут вообще нужны? Это как если бы в "хелло ворде" попросили использовать классы. Вот скажите куда вообще тут можно пристроить...
C++ Структуры http://www.cyberforum.ru/cpp-beginners/thread852482.html
Добрый вечер! Задался вот таким вопросом: у меня есть структура struct data{ string title; int col; double srb; }; и функция
C++ Как (можно ли) инициализировать переменную в структуре? Как пример struct cifri { char one="ONE"; }; Почему так нельзя и как можно? подробнее

Показать сообщение отдельно
undertacker
 Аватар для undertacker
9 / 9 / 0
Регистрация: 28.04.2013
Сообщений: 55
08.05.2013, 14:07  [ТС]     Дейтел
спасибо, но мне не понятно как
lemegeton, использует шаблоны, не подключая их. В Дейтеле сказано, что шаблоны необходимо создавать в отдельном файле, и при их необходимости просто вызывать в ф-ии, а тут он не создал отдельного файла и получается, что работает вот и не пойму как это...
вот как я понял данный код
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
124
125
126
127
128
129
#include <ctime>
#include <cstdlib>
#include <iostream>
#include <iomanip>
 
void printSalesCard(int salesCard[][3], int numberOfRows) { // задаем 2 параметра, 1 массив 2 количество строк
  std::cout <<
    "+----------+----------+----------+" << std::endl <<
    "| Salesman |  Article |    Total |" << std::endl <<
    "+----------+----------+----------+" << std::endl;
  for (int i = 0; i < numberOfRows; ++i) {
    std::cout << "| " <<
      std::setw(8) << salesCard[i][0] + 1 << " | " << // продавец
      std::setw(8) << salesCard[i][1] + 1 << " | " << // товар + 1 для того, что бы начиналось с 1
      std::setw(8) << salesCard[i][2] << " |" << std::endl; // рандомом любое число 
  }
  std::cout << "+----------+----------+----------+" << std::endl;
}
 
void printSalesTableHorizontalLine(int width) { // тут мы делаем рамочку, не понял откуда width и чему равно оно 
  for (int i = -1; i < width; ++i) { 
    std::cout << "+-------";
  }
  std::cout << "+" << std::endl;
}
 
void printSalesTableHeader(int width) {
  printSalesTableHorizontalLine(width + 1);
  std::cout << "|      ";
  for (int i = 0; i < width; ++i) {
    std::cout << " | " << std::setw(5) << (i + 1);  // продавцы ( их номера )
  }
  std::cout << " | Total |" << std::endl; 
  printSalesTableHorizontalLine(width + 1); // мы зделали подчеркивание ( ниже тотала )
}
 
template <int HEIGHT, int WIDTH>
int rowSum(int (&salesTable)[HEIGHT][WIDTH], int row) { // делаем ссылку на salesTable salesTable [Article][Prodavec], чему равно row ???
  int result = 0;
  for (int i = 0; i < WIDTH; ++i) {  
    result += salesTable[row][i]; // как я понял считается сумма строк 
  }
  return result;
}
 
template <int HEIGHT, int WIDTH>
int colSum(int (&salesTable)[HEIGHT][WIDTH], int col) {
  int result = 0;
  for (int i = 0; i < HEIGHT; ++i) {
    result += salesTable[i][col];// как я понял считается сумма столбцов  
  }
  return result; //как єто все работает не пойму...
}
 
template <int HEIGHT, int WIDTH>
int tableSum(int (&salesTable)[HEIGHT][WIDTH]) {
  int result = 0;
  for (int i = 0; i < HEIGHT; ++i) {
    for (int j = 0; j < WIDTH; ++j) {
      result += salesTable[i][j]; // общая сумма 
    }
  }
  return result;
}
 
template <int HEIGHT, int WIDTH> // не понял как работает
void printTotalByColumn(int (&salesTable)[HEIGHT][WIDTH]) {
  printSalesTableHorizontalLine(WIDTH + 1);
  std::cout << "| Total";
  for (int i = 0; i < WIDTH; ++i) {
    std::cout << " | " << std::setw(5) << colSum(salesTable, i);
  }
  std::cout << " | " << std::setw(5) << tableSum(salesTable) << " |" <<
    std::endl;
  printSalesTableHorizontalLine(WIDTH + 1);
}
 
template <int HEIGHT, int WIDTH> // не понял как работает
void printSalesTable(int (&salesTable)[HEIGHT][WIDTH]) {
  printSalesTableHeader(WIDTH);
 
  for (int i = 0; i < HEIGHT; ++i) {
    std::cout << "| " << std::setw(5) << (i + 1);
    for (int j = 0; j < WIDTH; ++j) {
      std::cout << " | " << std::setw(5) << salesTable[i][j];
    }
    std::cout << " | " << std::setw(5) <<
      rowSum(salesTable, i) << " | " << std::endl;
  }
 
  printTotalByColumn(salesTable);
}
 
int main(int argc, char *argv[]) {
  srand(time(0));
 
  const int numberOfSalesmen = 4; //продавцов 
  const int numberOfArticles = 5;//продуктов 
 
  // карта продаж
  int salesCard[numberOfSalesmen * numberOfArticles][3]; 
 
  // установка продаж случайным образом
  for (int i = 0; i < numberOfSalesmen; ++i) { // для вывода строк 
    for (int j = 0; j < numberOfArticles; ++j) { // для вывода столбцов 
      int currentRowIndex = i * numberOfArticles + j; 
      salesCard[currentRowIndex][0] = i;
      salesCard[currentRowIndex][1] = j;
      salesCard[currentRowIndex][2] = rand() % 100;
    }
  }
  
  // вывод на экран
  printSalesCard(salesCard, numberOfSalesmen * numberOfArticles);
  
  // таблица продаж
  int salesTable[numberOfArticles][numberOfSalesmen];
 
  // заполнение таблицы продаж
  for (int i = 0; i < numberOfSalesmen * numberOfArticles; ++i) {
    // наивно не проверяем, находятся ли индексы в допустимом
    // диапазоне
    salesTable[salesCard[i][1]][salesCard[i][0]] = salesCard[i][2];
  }
  
 printSalesTable(salesTable);
 system("Pause void");
  return 0;
}
 
Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru