aTamanas Ответов: 1

Я получаю все те же ответы и на многие из них.


Я получаю все те же ответы и на многие из них.
У меня есть этот файл данных.
5
5 3 2 3 1 2
3 6 2 4
4 2 2 1 2
3 3 3 3
2 3 4

Первая строка - это количество людей
Вторая строка, первое число-это то, сколько раз человек выполнял упражнение(другие числа в той же строке)
Остальные строки такие же как и вторая строка

Я должен записать, сколько упражнений сделал каждый человек.

Моя программа:

Что я уже пробовал:

Я пытался все переосмыслить и не вижу в этом проблемы. Может быть, я просто плохой.

Что я уже пробовал:

#include <cmath>
#include <fstream>
#include <iostream>
#include <iomanip>

using namespace std;

const char CDfv[]="duom.txt";
const char CRfv[]="rez.txt";

void writing(int n, int A[], int n2);

int A[100];

int main()
{
    int n, n2;
    writing(n,A,n2);
}

void writing(int n, int A[], int n2)
{
    ifstream fd(CDfv);
    ofstream fr(CRfv);
    fd>>n;
    int sum=0, a;

    for(int i=0;i<n;i++)
 {
="" fd="">>n2;
        for(int i2=0;i2<n2;i2++)
 {
="" fd="">>a;
            sum+=a;
        }
        fr<<sum<<endl;
 sum="0;
" }
="" fd.close();
="" fr.close();
}

<b="">

1 Ответов

Рейтинг:
9

OriginalGriff

Во-первых, вам нужно вернуться к основам.
C передает все параметры функции по значению - это означает, что функция получает копию переменной, а не "ссылку" на нее.
Так что когда вы это сделаете:

int main()
    {
    int n, n2;
    writing(n,A,n2);
    }
Вы передаете неинициализированные значения в writing функция, и не может получить никаких значений обратно, если функция должна была их изменить.
Внутри функции вы игнорируете любые значения и рассматриваете их как локальные переменные!

Что вам нужно сделать, так это подумать немного более тщательно.
Начните с чтения первой строки из файла, чтобы получить количество следующих строк.
Поэтому используйте это в цикле для чтения каждой строки - вам не нужно "хранить" данные для каждой строки, поэтому нет смысла создавать свой собственный цикл. A массив.
Для каждой строки считайте целое число: это число различных упражнений, которые они выполняли.
Теперь добавьте второй цикл внутри первого, используя число, которое вы только что прочитали как количество циклов. Внутри цикла добавьте каждое число, которое Вы читаете из строки.
После цикла выведите итоговую сумму.
Переходите к следующей строке во внешнем цикле:

lines = read count from file
loop 1: lineNo = 1 to lines inclusive incrementing by 1
   exercises = read count from file
   total = 0
   loop 2: exerciseCount = 1 to Exercises inclusive incrementing by 1
      iterations = read count from file
      total += itterations
   end loop 2
   print total
end loop 1
Но... это твое домашнее задание, так что я не дам тебе никакого кода!


CPallini

Мой 5.

aTamanas

Спасибо, это очень помогло :)

OriginalGriff

Всегда пожалуйста!