Этот код продолжает выводить ошибку сегментации, и я не уверен почему. Какие-либо предложения? - PullRequest
0 голосов
/ 04 марта 2020
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

int main() 
{

  int n;

  cin >> n; //currently 7

  while(n > 0)
  {

   for(int i = 0; i < n; i++)
   {

    if(i != 0)
    {
     //cout << i << "/" << n << endl;
     float test = 1.0 * i / n;
     vector<int> total(test);
     sort(total.begin(), total.end());
     cout << total[i] << endl;


    }
   }
   n--;
  }
}

Редактировать: Вставил весь мой код. Я просто немного запутался, почему это ошибка сегментации. Я проверил inte rnet и не думаю, что это "Доступ к свободному адресу", "Неправильное использование scanf" или неинициализированный указатель.

1 Ответ

2 голосов
/ 04 марта 2020

Это ошибка сегментации, потому что вы обращаетесь к нераспределенной памяти.

total [i]

никогда не выделяется, потому что в строке: -

vector<int> total(test);

значение теста всегда равно 0, i всегда меньше n внутри l oop, поэтому значение i / n должно быть равно нулю - языки C / C ++ округляют целочисленное деление до нуля (и многих других языков тоже); поэтому никакие элементы не добавляются в вектор при его создании (вы использовали конструктор заливки).

...