C++: cout выводит преобразованые в строку числа больше 256

У меня проблема cout не хочет выводить числа больше чем 256 символов на экран. Моя программа создаёт массив из случайных чисел в заданном диапазоне. После этого выводит его на экран. Кроме этого вычисляет самый большой и самый маленький его элемент. Программа распознает число т.к выводит как максимальные числа больше 256, но на экране их не видно. Буду рад любой помощи.

 #include <iostream>
 #include <ctime>
 using namespace std;

 int main(int argc, char *argv[])
 {
    int size = 20;  
    int array[size];
    srand(time(NULL));
    string random_arr = "";
    int min_value = 0;
    int max_value = 1000;
    int random_num;
//заполняем массив случайными числами
for(int i = 0; i < size; i++)
{
    random_num = min_value + rand() % (max_value-min_value+1);
    array[i]=random_num;
    random_arr[i] += random_num;
}
// выводим массив на экран  
for(int i = 0; i < size; i++)
{
//ТУТ ПРОБЛЕМА!!!
    cout<<"["<<to_string(random_arr[i])<<"]"; 
// ТУТ ПРОБЛЕМА!!!
}
int max_element;
string array_str;
//находим наименьший элемент массива
int min_element = INT_MAX;
for(int i = 0; i<size; i++)
{
    if(array[i] < min_element)
    {
    min_element = array[i];
    }
}
cout<<"\nМинимальный элемент: "<<min_element;
for(int i = 0; i<size; i++)
{
    if(array[i] > max_element)
    {
    max_element = array[i];
    }
}
cout<<"\nМаксимальный элемент: "<<max_element;

}


Ответы (1 шт):

Автор решения: Alexey Vesker

Боюсь в комментарий все не влезет, поэтому оформлю как ответ. У Вас есть несколько ошибок.

  1. Вот этот код должен приводить к ошибки компиляции:

    int size = 20;
    int array[size];

т.к. при объявлении массива в квадратных скобках должна быть константа, т.е. нужно заменить на const int size = 20.

  1. Как уже писали в комментариях, random_arr - это строка, random_num переменная типа int (т.е. целое число) и ее перед присвоением random_arr необходимо привести к строке, например, как написано в комментариях, используя функцию to_string. Так же, такая запись random_arr[i] означает, что вы обращаетесь к конкретному элементу этой строки, что в данном случае не нужно, а добавление новой подстроки в random_arr можно сделать следующим образом: random_arr += ("[" + to_string(random_num)+"]");. И соответственно цикл, который у Вас вызывает проблему заменяется всего одной строкой cout << random_arr. Или можно избавиться от строки random_arr сразу выводить элементы массива. Тогда ваш проблемный цикл будет выглядеть так:

    for(int i = 0; i < size; i++) { cout<<"["<<array[i]<<"]"; }

  2. И, вроде, последнее - переменная int max_element у Вас не инициализирована, а значит строка if(array[i] > max_element) также приведет к ошибке компиляции.

→ Ссылка