Как использовать указатели в структуре - PullRequest
0 голосов
/ 31 марта 2020

У меня есть структура sportist

struct sportist{           
    string name;
    string surname;
    int goals;
    string tim;

}

Вот функция, которая должна читать значения.

 void read(sportist x[],int n)     
{
    int i;
    for(i=0;i<n;i++)
    {

        cout<<"************************************************"<<endl;
        cout<<"Name:";
        cin>>x[i].name;
        cout<<endl<<"Surname:"; 
        cin>>x[i].surname;
        cout<<endl<<"Goals :";
        cin>>x[i].goals;
        cout<<endl<<"Name of the team:";
        cin>>x[i].tim;

    }

Мой вопрос: как я могу использовать указатели, потому что мне это нужно? Моя попытка:

 void read(sportist* x,int n)
{
    int i;
    for(i=0;i<n;i++)
    {

        cout<<"************************************************"<<endl;
        cout<<"Name:";
        cin>>x->name;
        cout<<endl<<"Surname:"; 
        cin>>x->surname;
        cout<<endl<<"Goals :";
        cin>>x->goals;
        cout<<endl<<"Name of the team:";
        cin>>x->tim;

    }
} 

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

1 Ответ

0 голосов
/ 31 марта 2020

вы должны обратить внимание на одну точку, когда вы используете массив x[i] с увеличением i, вы пересекаете массив, но с указателем вы должны перемещать указатель так, чтобы он указывал на следующие элементы массива. Вы должны использовать x++;.

посмотрите:

void read(sportist* x, int n)
{
    int i;
    for (i = 0; i < n; i++)
    {

        cout << "************************************************" << endl;
        cout << "Name:";
        cin >> x->name;
        cout << endl << "Surname:";
        cin >> x->surname;
        cout << endl << "Goals :";
        cin >> x->goals;
        cout << endl << "Name of the team:";
        cin >> x->tim;
        x++;
    }
}

если вы пропустите x++; каждый раз, когда будете записывать введенные данные в первый элемент массива.

Также обратите внимание на функцию вы объявляете этот массив sportist, если вы объявляете sportist* x вместо sportist x[num], вы должны выделить для него память.

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