Очевидная и общепринятая вещь: размер (автоматического) массива должен задаваться константой. Это же можно прочитать у Страуструпа (2011 г):
ЕМНИП, на старой доброй 6-ой студии так и было.
(upd: на "2008 экспресс" тоже не собирается с однозначным указанием на проблему.)
Внезапно, нижеследующий код успешно транслируется и выполняется (GCC):
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int x;
cin>>x;
char t[x];
for(int j=0;j<x-1;j++){
t[j]=33+rand()%20;
}
t[x-1]=0;
cout<<t<<endl;
return 0;
}
Выделенная строка соответствует коду, помеченному в книге как ошибочный.
как жить дальше?