Как зациклить массив переменных класса? - PullRequest
0 голосов
/ 30 марта 2019

К вашему сведению, я объявляю вызов класса UC, внутри UC я объявляю вызов переменной course и ее массив [4], это связано с проблемой, с которой я сталкиваюсь сейчас.Перейдите к строке, которую я комментирую как проблему, на данный момент я знаю только то, что строка for(UC &i :: one.course) неправильна, особенно в UC, эта строка кода должна выполнить цикл course[4], но это не так, она просто отображает ошибку как i has not been declared.И мой ожидаемый результат там.

#include <iostream>
#include <string>

using namespace std;

class UC{
public:

    string name;
    int history;
    string founder;
    string course[4];
};

void print(string, int, string);

int main()
{


    UC one;
    one.name = "ABC";
    one.history = 5;
    one.founder = "Mr.Chong";
    one.course[0] = "IT";
    one.course[1] = "Interior Design";
    one.course[2] = "Mass Comm";
    one.course[3] = "Business";


    print(one.name, one.history, one.founder);
    cout<<"Our Course: ";

//problem here//
    string delim = "";

    for(UC &i :: one.course){
      cout<< delim <<i;
      delim = ", ";
    };   
//problem here//

    return 0;
}

void print(string r, int x, string y){
    cout<<"Our College Name: "<<r<<endl;
    cout<<"Our History: "<<x<<endl;
    cout<<"Our Founder: "<<y<<endl;
};

Я ожидаю, что результат будет примерно таким:

Название нашего колледжа: ABC

Наша история: 5

Наш основатель: Mr.Chong

Наш курс: IT, дизайн интерьера, массовые коммуникации, бизнес

// эта линия не работает

1 Ответ

1 голос
/ 30 марта 2019

Ваш проблемный раздел может быть таким, как показано ниже, для распечатки массива с использованием цикла for:

#include <iostream>
#include <string>

using namespace std;

class UC{
public:
    string name;
    int history;
    string founder;
    string course[4];
};

void print(string, int, string);

int main()
{
    UC one;
    one.name = "ABC";
    one.history = 5;
    one.founder = "Mr.Chong";
    one.course[0] = "IT";
    one.course[1] = "Interior Design";
    one.course[2] = "Mass Comm";
    one.course[3] = "Business";

    print(one.name, one.history, one.founder);

    cout<<"Our Course: ";

    //problem here

    int numberofelements = sizeof(one.course)/sizeof(one.course[0]);

    for (int i = 0; i < numberofelements; i++){
        if(i == numberofelements-1){
            cout << one.course[i];
        }
        else{
            cout << one.course[i] << ", ";
        }
    }

    // problem here

    return 0;
}

void print(string r, int x, string y){
    cout<<"Our College Name: "<<r<<endl;
    cout<<"Our History: "<<x<<endl;
    cout<<"Our Founder: "<<y<<endl;
};

Или, если вы хотите более чистый способ, вы можете изменить свой метод void print, чтобы получить параметр массива, которыйпередается в цикл for в теле метода и выводит элементы массива.

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