У меня есть инструмент, позволяющий учащимся компилировать и тестировать собственный код C ++ в режиме онлайн (в защищенной среде).
Я хотел бы проверить, во время компиляции, что общий объем данных в программе не превышает определенный размер, и вызвать ошибку компиляции, если это так.
(непосредственная цель: ограничение c ++ std :: size array)
Я не нашел информации в Интернете.
Моя цепочка компиляции:
g++ -Wall -Wextra -Waddress -std=c++11 -lm -fstack-protector -lm -o exename srcname
Спасибо за помощь.
РЕДАКТИРОВАТЬ 1
Я даю им скелет, и они должны завершить, где (здесь) указано:
«Завершите программу (здесь) определением« produitTableau », которое получает двумерный массив целых чисел и целое число, применяет функцию« calcul »к каждому из своих значений и возвращает измененный массив». (по-французски ...)
#include <iostream>
#include <array>
using namespace std;
const int NB = 3;
int calcul (int a, int b);
array<array<int, NB>,NB> produitTableau(array<array<int, NB>,NB> t, int a);
int main()
{
/* déclaration et initialisation */
array<array<int, NB>,NB> tab ;
int x;
cin >> x;
for (int i=0;i<NB;i++) {for(int j=0; j<NB; j++) {cin >> tab[i][j];}}
/* traitement et résultat */
tab = produitTableau(tab, x);
/* résultat */
for (int i=0; i < NB; i++) {
for (int j=0; j < NB; j++) {
cout << tab[i][j] << " ";
}
}
return 0;
}
int calcul(int a, int b)
{
return a*b;
}
**(here)**
Я ожидаю, что они напишут что-то вроде (я проверяю результат с помощью набора тестовых данных, который хранится в текстовом файле и используется в качестве входных данных):
array<array<int, NB>,NB> produitTableau(array<array<int, NB>,NB> t, int a)
{
for (int i=0; i < NB; i++) {
for (int j=0; j < NB; j++) {
t[i][j] = calcul(t[i][j] , a);
}
}
return t;
}
* массив передается по значению *
Итак, я бы проверил, что общий объем используемых данных превышает определенное значение, например: 10.000 байт.
Может быть, это может быть исполняемый файл ... Я этого не знаю.