Ошибка передачи массива в структуру

А есть ли способ задать динамический массив иным способом чем у меня?

Какой массив? И чем именно способ должен отличаться?)

Массив студентов не динамический

А каким образом можно сделать его динамическим?

Так же как и этот

cout<<"Vvedite chislo studentov"<<endl; cin>>s;
stud *mas;
mas = new stud[s];

Так нужно?

Ну так если работает, то так )


Вот такую ошибку выдаёт

Так а в коде сейчас что?

#include <iostream>
using namespace std;

struct stud
{
    string FIO;
    string adress;
    int marks[5];
};

int main()
{   int n,k,s;
cout<<"Vvedite chislo studentov"<<endl; cin>>s;
    stud *mas;
    mas = new stud[n];
    k=0;
    cout << "Vvedite kollichestvo studentov "; cin >> n;

    double *sr;
    sr = new double[n];

    for (int i = 0; i < n; i++)
    {
        cout << endl << "Vvedite FIO: "; cin >> mas[i].FIO;
        cout << endl << "Vvedite adress: "; cin >> mas[i].adress;
        cout << endl <<"Vedite chislo predmetov: "; cin>> k;
        for (int j = 0; j < k; j++)
        {
            cout << endl << "Vvedite " << j + 1 << " osenok: "; cin >> mas[i].marks[j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        double sum = 0;
        for (int j = 0; j < k; j++)
        {
            sum += mas[i].marks[j];
        }
        sr[i] = sum / k;
    }

    cout << endl << "Sdali iz Saranska ne nize 4.5: " << endl;
    int p = 0;
    for (int i = 0; i < n; i++)
    {
        if (mas[i].adress == "Saransk" && sr[i] >= 4.5)
        {
            p++;
            cout << mas[i].FIO << endl;
        }
    }
    cout << "Takih " << p << " studentov "<<endl;
    delete[] sr;
    system("pause");
    return 0;
}

Так тут не введено значение n.
И зачем 2 раза вводить?)


При вставке кода надо нажимать кнопку Код, или самому написать по 3 символа ` (тот, что там, где буква ё в русской раскладке) на строках до и после.

Тогда я думаю так можно

cout<<“Vvedite chislo studentov”<<endl; cin>>n;
stud *mas;
mas = new stud[n];
k=0;
double *sr;
sr = new double[n];

Если я поменяю это
int marks[5];
на это
int *marks
Я вот так вот обращаюсь
mas[i].marks[j];
Однако, у меня так же остался массив из 1 элемента

Так а проблема какая? Создавайте и для marks массивы так же.

Вот я изменил

#include <iostream>
using namespace std;

struct stud
{
    string FIO;
    string adress;
    **int *marks;**
};

int main()
{   int n,k,s;
cout<<"Vvedite chislo studentov"<<endl; cin>>n;
    stud *mas;
    mas = new stud[n];
    k=0;
    double *sr;
    sr = new double[n];

    for (int i = 0; i < n; i++)
    {
        cout << endl << "Vvedite FIO: "; cin >> mas[i].FIO;
        cout << endl << "Vvedite adress: "; cin >> mas[i].adress;
        cout << endl <<"Vedite chislo predmetov: "; cin>> k;
        **marks=new int[k];**
        for (int j = 0; j < k; j++)
        {
            cout << endl << "Vvedite " << j + 1 << " osenoku: "; cin >> mas[i].marks[j];
        }
    }
    for (int i = 0; i < n; i++)
    {
        double sum = 0;
        for (int j = 0; j < k; j++)
        {
            sum += mas[i].marks[j];
        }
        sr[i] = sum / k;
    }

    cout << endl << "Sdali iz Saranska ne nize 4.5: " << endl;
    int p = 0;
    for (int i = 0; i < n; i++)
    {
        if (mas[i].adress == "Saransk" && sr[i] >= 4.5)
        {
            p++;
            cout << mas[i].FIO << endl;
        }
    }
    cout << "Takih " << p << " studentov "<<endl;
    delete[] sr;
    system("pause");
    return 0;
}

Но выводит сообщение
error: ‘marks’ was not declared in this scope; did you mean ‘mas’?

В чем проблема нормально код оформлять при вставке?))

так он же внутри элементов mas

mas[i].marks[j];
Это не обращение к элементу массива mas т.е к marks ?

Так его создать надо до этого.

mas[i].marks = ...

int *mas[i].marks[j]= new int[k];
Так его нужно создать?

Зачем это? Вы ж не пишете string *mas[i].FIO

Спасибо Вам, Alex! Вы как всегда сделали за меня самую сложную работу!