Печать многомерного массива C ++ - PullRequest
0 голосов
/ 15 марта 2019

Как распечатать этот многомерный вектор? Я просто не могу понять, что поставить в качестве условия во внутренний цикл в разделе печати в коде ниже. Я не могу понять, как перебрать массив для печати оценок. Любая помощь будет оценена.

#include <iostream>

using namespace std;

int main()
{
    int course, grades;

    int** crsgrd;
    // get inputs and asign grades
    cout << "Enter number of courses: ";
    cin >> course;
    crsgrd = new int * [course];
    for (int c = 0; c < course; c++) {
        cout << "Enter number of grades: ";
        cin >> grades;
        crsgrd[c] = new int[grades];
        for(int g = 0; g < grades; g++)  {
            cout << "Enter your grade: ";
            cin >> crsgrd[c][g];
        }
    }
    // print grade report
    for(int c = 0; c < course; c++) {
        for(int g = 0; g <= ?????????; g++)
            cout << crsgrd[c][g] << " ";
        cout << endl;
    }

    // free the array
    for(int i = 0; i < course; i++)
        delete [] crsgrd[i];
    delete [] crsgrd;

    return 0;
}

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Вы создали двумерный массив, а не стандартный вектор.Массивы не хранят свою длину, поэтому вам нужно либо придумать способ сохранить длину, либо переключиться на другой тип контейнера хранения.

Вот пример, в котором количество оценок хранится в качестве первого элемента.массива для данного курса:

#include <iostream>

using namespace std;

int main()
{
  int course, grades;

  int** crsgrd;
  // get inputs and asign grades
  cout << "Enter number of courses: ";
  cin >> course;
  crsgrd = new int * [course];
  for (int c = 0; c < course; c++) {
    cout << "Enter number of grades: ";
    cin >> grades;
    crsgrd[c] = new int[grades + 1];  // extra cell for # of grades
    crsgrd[c][0] = grades;
    // start storing grades at cell [c][1] as the first cell has the length
    for(int g = 1; g < grades+1; g++)  {
      cout << "Enter your grade: ";
      cin >> crsgrd[c][g];
    }
  }
  // print grade report
  for(int c = 0; c < course; c++) {
    cout<< "Course #" << c+1 << " grades:" << endl;

    // use first element as limit for for loop.
    // Be sure to print one more element as we have an extra cell 
    // at the end.
    for(int g = 1; g < crsgrd[c][0] + 1; g++) 
       cout << crsgrd[c][g] << " ";
       cout << endl;
  }

  // free the array
  for(int i = 0; i < course; i++)
    delete [] crsgrd[i];
  delete [] crsgrd;

  return 0;
}
0 голосов
/ 15 марта 2019

g

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...