Чтение списка целых чисел в массиве C ++

0

Я работаю над программой в 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.

  • 0
    num == '\ n' не будет работать, потому что вы читаете int, а не символ. Может быть, использовать getline.
Теги:
arrays
algorithm
io

1 ответ

0
Лучший ответ

Я бы прочитал строку, содержащую список чисел, используя 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);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню