base[ind].birth.month
baseProgr base[max];
, если max не константа приводит к объявлению массива переменной длины (VLA). Строго говоря С++ не поддерживает VLA, т.к. это фишка Си. Но некоторые компиляторы (gcc) при включенных расширениях (по умолчанию включено) позволяют их использовать. Но этот код становится не переносимым, т.к. при других опциях компилятора или на другом компиляторе код может не собраться. Однако я не могу получить доступ к любой из инициированных скриптом переменных в текущем процессе. Как я понимаю, это происходит потому, что скрипт выполняется отдельным процессом, а возможности экспортировать переменную на уровень выше нет.
#include <windows.h>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <ctime>
using namespace std;
const int UserCount = 3;
struct Worker { // начало объявления структурного типа Worker
string surname; //объявление поля «фамилия работника»
string position; //объявление поля «название занимаемой должности»
unsigned short int year; //объявление поля «год поступления на работу»
static bool insensitive_compare(const Worker& a, const Worker& b)
{
string ta(a.surname), tb(b.surname);
transform(ta.begin(), ta.end(), ta.begin(), [](unsigned char c) { return std::toupper(c); });
transform(tb.begin(), tb.end(), tb.begin(), [](unsigned char c) { return std::toupper(c); });
return ta < tb;
}
}; //конец объявление структуры Worker
template<class T> void getline_i(istream& is, T& o)
{
string s;
while (true)
{
getline(is, s);
stringstream(s) >> o;
if (s.length() < 1 || !isdigit(s[0]))
{
cout << "Ошибка. Значение должно быть числом: ";
continue;
}
else
{
break;
}
}
}
int main()
{
system("chcp 1251");
int n = 3; // объявление константы n — числа элементов типа «Worker»
bool people = false;
time_t rawtime;
struct tm _tm;
time(&rawtime);
gmtime_s(&_tm, &rawtime);
unsigned short int now_year = _tm.tm_year + 1900, seniority; // объявление переменных now_year — текущий год и seniority — стаж
vector<Worker> K;
Worker temp;
for (int i = 0; i < UserCount; i++)
{
cout << "Фамилия и инициалы: ";
getline(cin, temp.surname);
cout << "Название занимаемой должности: ";
getline(cin, temp.position);
cout << "Год поступления на работу: ";
getline_i(cin, temp.year);
cout << "\n";
K.push_back(temp);
}
cout << "Введите стаж работы(лет): ";
getline_i(cin, seniority);
cout << endl;
for (auto current : K)
{
if ((now_year - current.year) > seniority)
{
cout << current.surname << endl;
people = true;
}
}
if (people == false)
cout << "Нет таких работников!" << endl;
cout << endl;
cout << "Список работников в алфавитном порядке" << endl;
sort(K.begin(), K.end(), Worker::insensitive_compare);
for (auto current : K)
cout << current.surname << endl;
system("pause");
return 0;
}
Segmentation Fault не доходя до main?
struct win **window;
printf("here");
initwin(*window, 100, 100, default_display);
public static void name(string name){
this.Text = name;
}