Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/50: Рейтинг темы: голосов - 50, средняя оценка - 4.86
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742

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

10.03.2013, 02:20. Показов 9616. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2013, 02:20
Ответы с готовыми решениями:

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

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

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

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

Структура должна описывать одного студента. Размерность массива = числу студентов. Один студент --> один элемент массива.
0
 Аватар для Satansoft
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 04:40  [ТС]
Все верно, массив структур на 10 элементов, каждая структура соответствует студенту и n количества оценок, я не пойму как обращаться к элементам массива оценок в структуре (mas.otc)...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 17:01
Цитата Сообщение от 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
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 17:23  [ТС]
Количество студентов = количеству оценок КАЖДОМУ, то есть 10 студентов и каждому по 10 оценок и нужно найти среднее на каждом i-ом шаге, вот где загвоздка...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
10.03.2013, 18:21
И все вводятся с клавиатуры? Да, вы - маньяк :-) Сделайте чтение из файла.

Измените
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
20 / 16 / 7
Регистрация: 27.02.2012
Сообщений: 742
10.03.2013, 19:35  [ТС]
Не ясно, почему считает неправильно.

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
Храним только среднее от введенных оценок.

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.03.2013, 20:07
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru