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

Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит ФИО, адрес, оценки. Определить количество абитуриентов, проживающих в г. Саранске и сдавших экзамены со средним баллом не ниже 4.5, вывести их фамилии в алфавитном порядке.

#include <iostream>
using namespace std;

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

int main()
{
stud mas[20];
int n,k;
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;
}

У меня вводиться только 1 студент, потом ошибка, каким образом можно сделать, чтобы можно было вводить число студентов и оценок за предметы по желанию пользователя?

какая?


При вставке кода на форумы надо нажимать кнопку Код

Происходит выход из программы

Как я понял, я создал массив только из одного элемента, а мне нужно чтобы он вводился пользователем с клавиатуры. Если, предположим, я создам динамический массив т.е. напишу
int *marks

cout << endl <<"Vedite chislo predmetov: "; cin>> k;
*marks= new int[k];

то выводит такую ошибку
error: ‘marks’ was not declared in this scope; did you mean ‘mas’?

Так к marks надо обращаться так же как и ко всем остальным элементам массива студентов

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

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

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

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

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

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