Стек вокруг переменной sortArray был поврежден - PullRequest
1 голос
/ 26 мая 2020

Ошибка проверки во время выполнения # 2 - Стек вокруг переменной sortArray был поврежден.

Я получаю это в последней строке, программа предназначена для создания списка случайных чисел, а затем их сортировки (НЗП). Я подумал, что это может быть размер массива меньше, чем количество строк в test.txt, поэтому я увеличил его со 100 до 101 безрезультатно.

//#include <cstdlib>
#include <iostream>
#include <fstream>  
#include <ctime>
#include <string>

using namespace std;

int main()
{
    //srand(time(NULL));
    std::ofstream outfile("C:\\Users\\smasher248\\Desktop\\test.txt");
    int randomNumber;
    for (int x = 0; x < 100; x++)
    {
        randomNumber = rand() % 9000 + 1000;
        outfile << randomNumber <<"\n";

    }

    outfile.close();
    std::ifstream infile("C:\\Users\\smasher248\\Desktop\\test.txt");
    std::string lineHolder;
    int lineCounter = 0;
    int sortArray[101];
    while (std::getline(infile, lineHolder))
    {
        sortArray[lineCounter] = stoi(lineHolder);
        cout << sortArray[lineCounter] << "\n";
        lineCounter++;
    }
    infile.close();
    int swapContainer;
    for (int i = 0; i < 101; i++)
    {
        if (sortArray[i] > sortArray[i+1])
        {
            swapContainer = sortArray[i];
            sortArray[i] = sortArray[i + 1];
            sortArray[i + 1] = swapContainer;
        }
        std::ofstream sortedFile("C:\\Users\\smasher248\\Desktop\\test_sorted.txt");

        sortedFile << sortArray[i] << "\n";
    }
}

1 Ответ

1 голос
/ 26 мая 2020

Вам просто нужно внести несколько изменений в свой код.

  • Включите <algorithm> в начало вашего кода
  • В ofstream(...) добавьте ..., std::ios::app) для добавления в файл.
  • Чтобы отсортировать массив, удалите весь блок условного выражения над синтаксисом ofstream и добавьте std::sort(sortArray, sortArray + 100) за пределами l oop.
  • Измените значение 101 на 100 в этом For l oop.

И все готово.

...