20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
1

Обращение к элементам массива структур

10.03.2013, 02:20. Показов 9042. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вводим n-ое количество имен и количество оценок каждому из имен.(студент - оценки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
using namespace std;
 
int main()
{
int i,j,k,n=2;
int sr;
struct student
{
char fio[25];
int otc[25];
} mas[10];
for (i=0;i<n;i++)
{
cout << "Fio"<<endl;
cin>>mas[i+1].fio;
cout << "10 otcenok"<<endl;
for (j=0;j<n;j++)
{
cin>>mas[j].otc[j];
}
}
for (k=0;k<n;k++)
{
cout<<"Sredn"<<" "<<mas[k+1].fio<<" "<<endl;
}
}
Найти среднее значение по каждому студенту и среднее значение по каждому предмету (каждая оценка - отдельный предмет, количество оценок и студентов = n)

Ввести - ввел, а как обращаться к элементам массива оценок в структуре и оперировать с ними - не ясно...
Получилось лишь обращение к массиву имен...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2013, 02:20
Ответы с готовыми решениями:

Обращение к элементам массива в C++
#include &lt;SFML\Graphics.hpp&gt; const int number_units = 1; Sprite Person; Sprite unitsSprite = {...

Осуществить обращение к элементам массива по указателю
Здравствуйте. Каким образом можно изменить код, чтобы обращение к переменным и элементам массива...

Обращение к элементам двухмерного динамического массива
Строки в двумерном динамическом массиве расположены не вплотную друг к другу. Тогда почему чтобы...

Косвенное обращение к элементам динамического массива
Доброго времени суток. Необходима помощь с программой. Текст задачи: Заданы два массива А(5) и...

7
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 03:29 2
Цитата Сообщение от Satansoft Посмотреть сообщение
как обращаться к элементам массива оценок в структуре
К элементам структуры в массиве.

Структура должна описывать одного студента. Размерность массива = числу студентов. Один студент --> один элемент массива.
0
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 04:40  [ТС] 3
Все верно, массив структур на 10 элементов, каждая структура соответствует студенту и n количества оценок, я не пойму как обращаться к элементам массива оценок в структуре (mas.otc)...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 17:01 4
Цитата Сообщение от Satansoft Посмотреть сообщение
как обращаться к элементам массива оценок в структуре
К элементам массива - по индексу, к элементам структуры - по имени.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <iostream>
 
using namespace std;
 
#define MAX_SURNAME_LEN             (25)
#define MAX_STUDENT_COUNT           (10)
 
struct STUDENT
{
   char     pszSurname[MAX_SURNAME_LEN + 1];
   int      iEstimate;
};
 
int main()
{
   STUDENT     pStudents[MAX_STUDENT_COUNT];
 
   for (int ii = 0; ii < MAX_STUDENT_COUNT; ++ii)
   {
      cout << "Enter surname and estimate for this student:" << endl;
 
      cin >> pStudents[ii].pszSurname;
      cin >> pStudents[ii].iEstimate;
   }
 
   double   fAverage = 0.0;
 
   for (int jj = 0; jj < MAX_STUDENT_COUNT; ++jj)
   {
      fAverage += (double)pStudents[jj].iEstimate;
   }
 
   if (MAX_STUDENT_COUNT > 0)
   {
      fAverage /= (double)MAX_STUDENT_COUNT;
 
      cout << "Average student estimate is: " << fAverage << endl;
   }
 
   return 0;
}
1
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 17:23  [ТС] 5
Количество студентов = количеству оценок КАЖДОМУ, то есть 10 студентов и каждому по 10 оценок и нужно найти среднее на каждом i-ом шаге, вот где загвоздка...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 18:21 6
И все вводятся с клавиатуры? Да, вы - маньяк :-) Сделайте чтение из файла.

Измените
C++
1
int      iEstimate;
на
C++
1
int      piEstimate[MAX_ESTIMATE_COUNT];
и считайте на каждом шаге ввода среднее по студенту (добавится еще цикл ввода оценок).

Добавлено через 26 минут
P.S.

Если хранение всех оценок не требуется, сохраняйте только среднюю для каждого студента:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
pStudents[ii].fAverage = 0.0;
 
for (int jj = 0; jj < MAX_ESTIMATE_COUNT; ++jj)
{
   pStudents[ii].fAverage += <введенная_оценка>;
}
 
if (MAX_ESTMATE_COUNT > 0)
{
   pStudents[ii].fAverage /= (double)MAX_ESTIMATE_COUNT;
 
   cout << "Average student estimate is: " << pStudents[ii].fAverage << endl;
}
1
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 19:35  [ТС] 7
Не ясно, почему считает неправильно.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
using namespace std;
 
int main()
{
int i,j,k,n=2;
double sr=0.0, srp=0.0;
struct student
{
char fio[25];
int otc[225];
} mas[10];
for (i=0;i<n;i++)
{
cout << "Name:"<<endl;
cin>>mas[i].fio;
cout <<n<<" evaluations:"<<endl;
for (j=0;j<n;j++)
{
cin>>mas[j].otc[j];
}
}
for (k=0;k<n;++k)
{
    srp=mas[k].otc[k];
    sr+=mas[k].otc[k];
cout<<"Average:"<<" "<<mas[k].fio<<" "<<srp/n<<" "<<sr/n<<endl;
}
}
Добавлено через 4 минуты
Алгоритм явный, кагбэ, но видимо обращаюсь не верно, может в k-й цикл ещё один вложить надо?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 20:07 8
Храним только среднее от введенных оценок.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int main()
{
   STUDENT     pStudents[MAX_STUDENT_COUNT];
 
   for (int ii = 0; ii < MAX_STUDENT_COUNT; ++ii)
   {
      cout << "Enter surname and estimate series for this student:" << endl;
 
      cin >> pStudents[ii].pszSurname;
 
      pStudents[ii].fAverageEstimate = 0.0;
 
      for (int jj = 0; jj < MAX_ESTIMATE_COUNT; ++jj)
      {
         int      iEstimate = 0;
 
         cin >> iEstimate;
 
         pStudents[ii].fAverageEstimate += (double)iEstimate;
      }
 
      pStudents[ii].fAverageEstimate /= (double)MAX_ESTIMATE_COUNT;
 
      cout << "Average student estimate is: " << pStudents[ii].fAverageEstimate << endl;
   }
 
   return 0;
}
1
10.03.2013, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2013, 20:07
Помогаю со студенческими работами здесь

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

Доступ к элементам динамического массива из структур
Всем доброго времени суток! Проблема вот какая. Есть вот такой вот код. #include &quot;stdafx.h&quot;...

Обращение к элементам массива по индексам или по указателю?
Здравствуйте! Прочитал у С. Праты в книге &quot;Язык программирования С++. Лекции и упражнение&quot; (5-е...

Обращение к элементам динамического массива через указатели
Само задание написано внизу в коментарии! Заранее спасибо! #include &lt;conio.h&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru