Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.69
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
#1

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

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

Вводим 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2013, 02:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение к элементам массива структур (C++):

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

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

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

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

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

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

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

Структура должна описывать одного студента. Размерность массива = числу студентов. Один студент --> один элемент массива.
0
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
10.03.2013, 04:40  [ТС] #3
Все верно, массив структур на 10 элементов, каждая структура соответствует студенту и n количества оценок, я не пойму как обращаться к элементам массива оценок в структуре (mas.otc)...
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 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
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
10.03.2013, 17:23  [ТС] #5
Количество студентов = количеству оценок КАЖДОМУ, то есть 10 студентов и каждому по 10 оценок и нужно найти среднее на каждом i-ом шаге, вот где загвоздка...
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 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
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 724
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
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2013, 20:07
Привет! Вот еще темы с ответами:

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

Обращение к элементам массива через биты некоторого числа - C++
Пусть есть массив Mass из 10 элементов и число А = 510 = 0...0 01012. Мне надо обратиться к 0 и 2 элементам (или к 7 и 9 - это как...

Обращение к элементам линейного списка через элементы массива указателей - C++
Вот полная версия программы. Компилятор не выдаёт ошибок, но при выполнении, судя по всему, на строчке 278, при попытке обратится к...

Обращение к элементу динамического массива структур - C++
Само задание: http://cs412722.vk.me/v412722398/4e77/fUkq93u2HDE.jpg пока написал только это: #include &lt;iostream&gt; using namespace std;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.