Я работаю над программой в C++, которая будет считывать целые числа из файла, а затем передавать их функции, которая проверяет сумму подмножества.
Файл форматируется следующим образом:
number of cases n
sum for case 1
list of integers separated by a space
sum for case
list of integers separated by a space
sum for case n
list of integers separated by a space
Теперь моя проблема заключается в том, как читать список целых чисел в массив, который будет передан моей функции.
Это мое главное до сих пор:
fstream infile("subset.txt");
if(infile.is_open()){
int numCases, num;
infile >> numCases;
while(infile >> num){
for(int i = 0; i < numCases; i++)
{
int sum;
int set[30];
num >> sum;
for(int i = 0; i < 30; i++)
{
if(num == '\n')
{
sum[i] = -1
}
else
{
num << sum[i]
}
}
int n = sizeof(set)/sizeof(set[0]);
if(subsetSum(set, n, sum) == true)
printf("True");
else
printf("False");
}
}
}
else
printf("File did not open correctly.");
return 0;
Любая помощь, которую вы, ребята, можете мне дать, будет очень благодарна.
Да, это для задания, поэтому, если вы предпочитаете просто давать мне подсказки, которые также будут оценены. Назначение для алгоритма, и у меня это работает, мне просто нужна рука с I/O.
Я бы прочитал строку, содержащую список чисел, используя std::getline
, а затем использовал istringstream
для разбора чисел из этой строки.
Я бы также использовал std::vector
вместо массива для хранения чисел. Для фактического разбора я бы, вероятно, использовал пару std::istream_iterator
s, поэтому код выглядел бы примерно так:
while (infile >> sum) {
std::getline(infile, line);
std::istringstream buffer(line);
std::vector<int> numbers{std::istream_iterator<int>(buffer),
std::istream_iterator<int>()};
std::cout << std::boolalpha << subsetSum(numbers, sum);
}