Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 5

Запутался в переменных

15.04.2011, 01:15. Показов 1147. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброй ночи, я составил программу, она работает, но я запутался в переменных, подскажите пожалуйста что не так.

Задание:
Имеется группа из 30 студентов, которые обучаются по 10 предметам.
Написать программу на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран:
исходные данные в виде таблицы, где перечислены ФИО студентов, оценки по всем предметам;
средний балл для каждого студента;
средний балл по каждому предмету всей группы;
средний балл по всем предметам всей группы;
ФИО студента с наибольшим средним баллом.

При расчёте среднего балла если ставить переменную Double, то результат получается дробное число (нужно целое), если ставить Integer, то результат получается 0. Или же нужно сделать Double и в формате ячеек поставить ограничение до 0 знаков после запятой?

И ещё я не могу сделать чтобы в результате выодилась Фамилия студента, а не его порядковый номер.

Сам код:
PureBasic
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
Sub sred_ball_Click()
 
'Îáúÿâëÿåì ïåðåìåííûå èñïîëüçóåìûå â ïðîãðàììå
Dim i As Integer, j As Integer 'ñ÷¸ò÷èêè öèêëîâ
Dim ocenka(30, 10) As Integer 'êîëè÷åñòâî îöåíîê äëÿ âñåõ ñòóäåíòîâ ïî êàæäîìó ïðåäìåòó
Dim sr_stud(30) As Double 'ñðåäíèé áàëë ñòóäåíòà ïî âñåì ïðåäìåòàì
Dim sr_group(11) As Double 'ñðåäíèé áàëë ãðóïïû ïî ïðåäìåòó
Dim group As Double 'ñðåäíèé áàëë âñåé ãðóïïû ïî âñåì ïðåäìåòàì
Dim oc As Integer 'îöåíêà ñòóäåíòà ñ íàèâûñøèì ñðåäíèì áàëëîì
Dim stud_name(30) As Variant 'Ôàìèëèÿ ñòóäåíòà ñ íàèâûñøèì ñðåäíèì áàëëîì
Dim stud As Integer 'ïîðÿäêîâûé íîìåð ñòóäåíòà ñ íàèâûñøèì ñðåäíèì áàëëîì
 
'â íà÷àëå ïðîãðàììû âñå ïåðåìåííûå ðàâíû íóëÿì
'ñîçäà¸ì öèêë, êîòîðûé ñ÷èòàåò ñðåäíèé áàëë ñòóäåíòà ïî âñåì ïðåäìåòàì
For i = 1 To 30
sr_stud(i) = 0
Next
 
'ñîçäà¸ì öèêë, êîòîðûé ñ÷èòàåò ñðåäíèé áàëë ãðóïïû ïî êàæäîìó ïðåäìåòó
For j = 1 To 10
sr_group(j) = 0
Next
 
group = 0
oc = 0
 
 
'ñ÷èòûâàåì íà÷àëüíûå äàííûå
Sheets("Íà÷_ä").Select
 
'â êàæäóþ ÿ÷åéêó ìàññèâà stud_name(i) çàïèñûâàåòñÿ ôàìèëèÿ ñòóäåíòà
'äëÿ ýòîãî èñïîëüçóåì öèêë
For i = 1 To 30
stud_name(i) = Cells(2 + i, 1)
Next
 
'â êàæäóþ ÿ÷åéêó ìàññèâà ocenka(i, j) çàïèñûâàåòñÿ îöåíêà ïî ïðåäìåòó äëÿ êàæäîãî ñòóäåíòà
'òàê êàê ìàññèâ äâóìåðíûé öèêë ïðîõîäèò ïî äâóì ñ÷åò÷èêàì
For i = 1 To 30
For j = 1 To 10
ocenka(i, j) = Cells(2 + i, 1 + j)
Next j
Next i
 
'íà ëèñòå "Ðåçóëüòàò" ñîçäàþòñÿ ÿ÷åéêè ñ îïðåäåë¸ííûìè íàçâàíèÿìè
 
Sheets("Ðåçóëüòàò").Cells(1, 1) = "Ô.È.Î. ñòóäåíòà"
Sheets("Ðåçóëüòàò").Cells(1, 2) = "Èçó÷àåìûé ïðåäìåò"
Sheets("Ðåçóëüòàò").Cells(1, 12) = "Ñðåäíèé áàëë còóäåíòà ïî ïðåäìåòó"
Sheets("Ðåçóëüòàò").Cells(2, 2) = "Ðóññ. ßç."
Sheets("Ðåçóëüòàò").Cells(2, 3) = "Ìàòåìàòèêà"
Sheets("Ðåçóëüòàò").Cells(2, 4) = "Èñòîðèÿ"
Sheets("Ðåçóëüòàò").Cells(2, 5) = "Èíôîðìàòèêà"
Sheets("Ðåçóëüòàò").Cells(2, 6) = "Ýêîíîìèêà"
Sheets("Ðåçóëüòàò").Cells(2, 7) = "Ôèçèêà"
Sheets("Ðåçóëüòàò").Cells(2, 8) = "Èí. ßç."
Sheets("Ðåçóëüòàò").Cells(2, 9) = "Õèìèÿ"
Sheets("Ðåçóëüòàò").Cells(2, 10) = "Ãðàæä. Ïðàâî"
Sheets("Ðåçóëüòàò").Cells(2, 11) = "Ñîöèîëîãèÿ"
 
'â ñîîòâåòñòâóþùèå ÿ÷åéêè çàïèñûâàþòñÿ ôàìèëèè âñåõ ñòóäåíòîâ
For i = 1 To 30
Sheets("Ðåçóëüòàò").Cells(2 + i, 1) = stud_name(i)
 
'â ñîîòâåòñòâóþùèå ÿ÷åéêè çàïèñûâàþòñÿ îöåíêè äëÿ âñåõ ñòóäåíòîâ ïî âñåì ïðåäìåòàì
For j = 1 To 10
Sheets("Ðåçóëüòàò").Cells(2 + i, 1 + j) = ocenka(i, j)
 
'Ðàñ÷èòûâàåòñÿ ñðåäíèé áàëë äëÿ êàæäîãî ñòóäåíòà ïî âñåì ïðåäìåòàì
sr_stud(i) = sr_stud(i) + ocenka(i, j) / 10
Next j
'ðåçóëüòàò çàïèñûâàåòñÿ â ñîîòâåòñòâóþùèå ÿ÷åéêè
Sheets("Ðåçóëüòàò").Cells(2 + i, 12) = sr_stud(i)
Next i
 
'Ðàñ÷èòûâàåòñÿ ñðåäíèé áàëë âñåé ãðóïïû ïî êàæäîìó ïðåäìåòó
For i = 1 To 30
For j = 1 To 10
sr_group(j) = sr_group(j) + ocenka(i, j) / 30
sr_group(11) = sr_group(11) + ocenka(i, j) / 30
Next j
Next i
 
'Ðóçóëüòàò çàïèñûâàåòñÿ â ñîîòâåòñòâóþùèå ÿ÷åéêè
For j = 1 To 10
Sheets("Ðåçóëüòàò").Cells(33, 1 + j) = sr_group(j)
Next j
 
'Ðàñ÷èòûâàåòñÿ ñðåäíèé áàëë âñåé ãðóïïû ïî âñåì ïðåäìåòàì
For i = 1 To 1
For j = 1 To 10
ocenka(i, j) = Sheets("Ðåçóëüòàò").Cells(33, 1 + j)
group = group + ocenka(i, j) / 10
Next j
 
'Ðåçóëüòàò çàïèñûâàåòñÿ â ñîîòâåòñòâóþùóþ ÿ÷åéêó
Sheets("Ðåçóëüòàò").Cells(34, 2) = group
Next i
 
'â äàííîì öèêëå ïðîèñõîäèò âûáîð ñòóäåíòà ñ íàèâûñøèì ñðåäíèì áàëëîì
'ñòóäåíòîì ñ íàèâûñøèì ñðåäíèì áàëëîì ñòàíîâèòñÿ ñòóäåíò i (ïîëó÷èâøèé íàèâûñøèé ñðåäíèé áàëë)
For i = 1 To 30
Sheets("Ðåçóëüòàò").Cells(2 + i, 12) = sr_stud(i)
If sr_stud(i) > oc Then
oc = sr_stud(i)
stud = i
End If
Next
 
'â ñîîòâåòñòâóþùèå ÿ÷åéêè âûâîäèòñÿ ôàìèëèÿ ñòóäåíòà ñ íàèâûñøèì ñðåäíèì áàëëîì
'à òàêæå ïîëó÷åííàÿ èì îöåíêà
Sheets("Ðåçóëüòàò").Select
Sheets("Ðåçóëüòàò").Cells(33, 1) = "Ñðåäíèé áàëë ãðóïïû ïî ïðåäìåòó"
Sheets("Ðåçóëüòàò").Cells(34, 1) = "Cðåäíèé áàëë ãðóïïû ïî âñåì ïðåäìåòàì"
Sheets("Ðåçóëüòàò").Cells(35, 1) = "Ñòóäåíò ñ íàèáîëüøèì ñðåäíèì áàëëîì"
Sheets("Ðåçóëüòàò").Cells(35, 2) = stud
Sheets("Ðåçóëüòàò").Cells(35, 4) = "Îöåíêà"
Sheets("Ðåçóëüòàò").Cells(35, 5) = oc
 
End Sub
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.04.2011, 01:15
Ответы с готовыми решениями:

запутался в объявлении переменных
пытаюсь отладить одну 1-wire библиотеку, для чего хочу из основной функции отправлять код ошибки. переменная кода объявлена в самом...

Запутался в функциях и изменении переменных
Приветствую. Я тут пытался сделать штуку, которая получала бы данные аудиозаписей ВК (по их id), куски текста и составляла бы цельный...

Запутался в типах переменных..найдите ошибку
Вчера начал изучать Delphi ,решил написать прогу для счета дискриминанты..запутался в типах переменных..помогите пожалуйста.. Скиньте...

5
 Аватар для HARDCORE_FAN
1 / 1 / 0
Регистрация: 03.04.2011
Сообщений: 14
15.04.2011, 03:58
Какое то уж больно знакомое задание, делал нечто похожее девушке (курсовая по информатике в каком то вузе), по идее должно было остаться полное описание с блок-схемой и проверкой на 1 и 0. Если требуется могу скинуть.

З.Ы. Как тут можно запутаться в переменных когда они все прекрасно описаны?!
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 5
15.04.2011, 09:59  [ТС]
Цитата Сообщение от copper Посмотреть сообщение

При расчёте среднего балла если ставить переменную Double, то результат получается дробное число (нужно целое), если ставить Integer, то результат получается 0.
Вот это я имею ввиду
0
 Аватар для HARDCORE_FAN
1 / 1 / 0
Регистрация: 03.04.2011
Сообщений: 14
15.04.2011, 14:50
Цитата Сообщение от copper Посмотреть сообщение
При расчёте среднего балла если ставить переменную Double, то результат получается дробное число (нужно целое), если ставить Integer, то результат получается 0. Или же нужно сделать Double и в формате ячеек поставить ограничение до 0 знаков после запятой?
Попробуй оставить Double а результат округлить, например Sheets("Результат").Cells(2 + i, 12) = Round(sr_stud(i))

Цитата Сообщение от copper Посмотреть сообщение
И ещё я не могу сделать чтобы в результате выодилась Фамилия студента, а не его порядковый номер.
Visual Basic
1
2
3
4
5
6
7
8
FOR i = 1 TO 30
Sheets("Результат").Cells(2 + i, 12) = sr_stud(i)
IF sr_stud(i) > oc THEN
oc = sr_stud(i)
stud = i
Sheets("Результат").Cells(n,n)=stud_name(i)
END IF
NEXT
вместо n вставь нужные значения.
1
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
15.04.2011, 17:11
copper,
образец файла необходим в вашем случае, т.к. тяжело в памяти представлять заполнение книги Excel.
0
0 / 0 / 0
Регистрация: 13.04.2011
Сообщений: 5
16.04.2011, 12:20  [ТС]
HARDCORE_FAN, Спасибо за помощь, я теперь понял в чём моя ошибка. У меня не отображалась фамилия студента потому что я писал строку Sheets("Результат").Cells(n,n)=stud_name (i) уже после строки END IF. А теперь всё работает. А вот ROUND не сработало, но это уже не беда. Спасибо ещё раз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2011, 12:20
Помогаю со студенческими работами здесь

Исправить в программном коде рандомное задание переменных, на ввод переменных пользователем
Помогите пожалуйста замеить в программе задание чисел рандомно, на задание вручную. Тобиш чтобы был запрос "введите координаты...

Передача значений переменных или ссылок, неконтролируемое изменение переменных
// заголовок класса ObservableCollection<LineDom> Method1; Method1 = new ObservableCollection<LineDom>(); ...

Поменять местами значения целых переменных х и у не используя дополнительных переменных
Знаю, что это очень простая задача, но никак не могу сделать, пожалуйста помогите!!! Поменять местами значения целых переменных х и у не...

Даны 5 переменных a,b,c,d,e - необходимо каждой из этих переменных присвоить число из текстового документа
Есть у меня текстовый документ, в котором записаны 5 чисел. Каждое число в новой строчке. Предположим: 893 42 8 745 43 Даны 5...

Рассмотреть программу, написать имена глобальных переменных, локальных переменных, формальных параметров
Program P1; var s:string; procedure P(var s:string) ; var i, j : integer; aux: char; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
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
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru