А есть ли способ задать динамический массив иным способом чем у меня?
Какой массив? И чем именно способ должен отличаться?)
Массив студентов не динамический
А каким образом можно сделать его динамическим?
Так же как и этот
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! Вы как всегда сделали за меня самую сложную работу!